1.express-generator 是 Express 应用程序生成器工具,我们可以使用它来快速创建应用程序框架。
npm install -g express-generator
windows添加环境变量:E:\node\node_global
2.创建项目
express expressFrame (expressFrame 是项目名)
bin/www 是启动入口文件,在里面可以设置端口号等
3.下载安装依赖
npm i
npm i nodemon --save
npm i winston
4.修改配置
nodemon:监控 node.js 源代码的任何变化和自动重启你的服务器
winston:打印日志文件,在根目录创建文件 logger.js
logger.js :
const { createLogger, format, transports } = require('winston');
const fs = require('fs');
const path = require('path');
const env = process.env.NODE_ENV || 'development';
const logDir = 'log';
// Create the log directory if it does not exist
if (!fs.existsSync(logDir)) {
fs.mkdirSync(logDir);
}
const filename = path.join(logDir, 'results.log');
const logger = createLogger({
// change level if in dev environment versus production
level: env === 'production' ? 'info' : 'debug',
format: format.combine(
format.label({ label: path.basename(process.mainModule.filename) }),
format.timestamp({ format: 'YYYY-MM-DD HH:mm:ss' })
),
transports: [
new transports.Console({
format: format.combine(
format.colorize(),
format.printf(
info =>
`${info.timestamp} ${info.level} [${info.label}]: ${info.message}`
)
)
}),
new transports.File({
filename,
format: format.combine(
format.printf(
info =>
`${info.timestamp} ${info.level} [${info.label}]: ${info.message}`
)
)
})
]
});
module.exports = logger;
5.修改 app.js 的配置:
将 const logger = require('morgan'); 改成:
const morgan = require('morgan')
相应的也要把 app.use(logger('dev')); 改成:
app.use(morgan('dev'));
引入 logger.js 文件
const logger = require('./logger')
屏蔽error hander,添加代码:
const _errorHander = (err, req, res, next) => {
logger.error(`${req.method} ${req.originalUrl} ${err.message}`)
const message = err.message
res.status(err.status || 500).json({
code: -1,
success: false,
message,
data: {}
})
}
app.use(_errorHander)
6.安装配置数据库相关
npm install -save knex mysql
在项目根目录下,新建配置信息 config.js
const configs = {
mysql: {
host: '127.0.0.1',
port: '3306',
user: 'root',
password: '123456', // 自己设置的密码
database: 'expressFrame' // 数据库的名字
},
// 打印错误
log: {
error (message) {
console.log('[knex error]', message)
}
}
}
module.exports = configs
新建 models/knex.js, 初始化配置 knex
// 引用配置文件 const configs = require('../config'); // 把配置文件中的信息,设置在初始化配置中 module.exports = require('knex')({ client: 'mysql', connection: { host: configs.mysql.host, port: configs.mysql.port, user: configs.mysql.user, password: configs.mysql.password, database: configs.mysql.database }, // 打印错误 log: { error (message) { console.log('[knex error]', message) } } }) 复制代码
在 models 下新建文件 base.js
const knex = require('../models/knex'); class Base{ constructor(props){ this.table = props; } // 查找 all (){ return knex(this.table).select(); } // 新增 insert (params){ return knex(this.table).insert(params); } // 更改 update (id, params){ return knex(this.table).where('id', '=', id).update(params); } // 删除 delete (id){ return knex(this.table).where('id', '=', id).del(); } } module.exports = Base; 复制代码
在 models 下新建文件 user.js
const Base = require('./base'); class User extends Base { // 定义参数默认值为 user 表 constructor(props = 'user'){ super(props); } } module.exports = new User(); 复制代码
在根目录新建控制器文件夹 controllers,在 controllers 新建 user.js,并设置 showUser 方法
// 引用用户模版数据 const User = require('../models/user.js'); const userController = { // showUser 获取用户数据并返回到页面 showUser: async function(req,res,next){ try{ let userData = await User.all() res.json({ code: 200, message: "操作成功", data: userData }) }catch(e){ res.json({ code: 0, message: "操作失败", data: e }) } }, } module.exports = userController; 复制代码
修改路由 routes/index.js,添加获取用户信息的接口
const userController = require('../controllers/user'); // 获取用户信息 router.get('/get_user', userController.showUser);
访问一下 http://localhost:3000/users/get_user