前言
各位好,我是前端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 }