前言

各位好,我是前端SkyRain。最近为了响应公司号召,开始对后端知识的学习,作为纯粹小白,记录下每一步的操作流程。
项目仓库:https://gitee.com/sky-rain-drht/drht-node
因为写了文档,代码里注释不是很多,可以结合理解

初始化文件夹

创建文件夹

  • 在合适的位置创建一个文件夹,作为项目代码本地仓库

node初始化

执行命令
npm init -y
执行结果

在这里插入图片描述

Git初始化

执行命令
git init
执行结果

在这里插入图片描述

安装依赖

执行命令
yarn add ip 
yarn add koa 
yarn add koa-bodyparser
yarn add koa-router
yarn add mysql2
yarn add nodemon
yarn add sequelize
依赖说明
ip

用于获取服务器地址信息

koa

node的后端框架之一

koa-bodyparser

用于解析接口请求传递的参数

koa-router

与koa框架配合的路由库

mysql2

mysql数据库

nodemon

用来启动node服务

sequelize

mysql数据的关系映射库

启动服务配置

配置文件

为了保持未来的配置内容进行扩展,所以各自定义后导出

创建配置文件夹
  • 根目录下创建config文件夹
  • 在config文件夹下创建index.js
创建启动配置

config/index.js

const ip = require('ip');
// 运行配置
const serverSetting = {
  ipAddress: ip.address(), // 服务器ip
  port: 3000, // 服务器端口
  proxy: 'api' // 代理名称
}
module.exports = {
  serverSetting
}

启动类文件

创建启动类文件

app.js

const Koa = require('koa');
const { serverSetting } = require('./config');

const app = new Koa();

app.listen(serverSetting.port, () => {
  console.log(`server is running at http://${serverSetting.ipAddress}:${serverSetting.port}/${serverSetting.proxy}`)
})
创建启动命令

在package.json中创建启动命令

"scripts": {
  "dev": "nodemon app.js",
  "test": "echo \"Error: no test specified\" && exit 1"
},

至此,可以运行命令看看服务能不能跑起来!

数据库配置

数据库信息配置

config/index.js

// 数据库配置
const dbSetting = {
  host: 'localhost', // 数据库ip
  port: 3306, // 数据库端口
  username: 'root', // 数据库用户名
  password: 'skyrain', // 数据库密码
  database: 'drht' // 数据库名称
}
module.exports = {
  ...,
  dbSetting
}

数据库连接

创建连接文件
  • 在根目录下创建models文件夹
  • 在models文件夹下创建index.js
连接信息内容

models/index.js

const { Sequelize } = require('sequelize');
const { dbSetting } = require('../config/index')

const sequelize = new Sequelize(
  dbSetting.database,
  dbSetting.username,
  dbSetting.password,
  {
    host: dbSetting.host,
    port: dbSetting.port,
    dialect: 'mysql',
    logging: false,
    timezone: '+08:00',
    pool: {
      max: 5, // 连接池最大连接数量
      min: 0,
      idle: 10000, // 如果一个线程在10秒内没有被使用过就释放掉
    },
    define: {
      timestamps: true, // 自动带上更新时间和修改时间
      freezeTableName: true   // 冻结表名,否则同步时会自动加s
    }
  }
)
sequelize.sync({
  force: false
})
// // 测试是否连接成功
// sequelize
//   .authenticate()
//   .then(() => {
//     console.log('数据库连接成功');
//   })
//   .catch(err => {
//     console.log('数据库连接失败', err);
//   })
module.exports = { db: sequelize }

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部