背景
本文主要是展示使用 Express 和 MySQL 来搭建项目框架的步骤,展示了如何搭建项目并进行基本操作。
Express
创建项目
Express 是基于 Node.js 平台,快速、开放、极简的 Web 开发框架。
全局安装 express-generator
express-generator 是 Express 应用程序生成器工具,我们可以使用它来快速创建应用程序框架。
npm install -g express-generator
创建项目
express expressFrame
(expressFrame 是项目名)
项目的目录结构
bin/www 是启动入口文件,在里面可以设置端口号等
下载依赖
创建好项目之后,里面有包含基本的项目文件,也有相关依赖
npm install
启动项目
npm start
启动命令还可以是:
nodo ./bin/www
安装 nodemon
可以安装 nodemon 来监控 node.js 源代码的任何变化和自动重启你的服务器
全局安装 nodemon:
npm install -g nodemon
启动项目
nodemon bin/www
这就启动成功啦
浏览器打开 http://localhost:3000 就能看到页面啦
添加打印日志文件
这里采用的是 winston 日志
具体用法可看文档:www.npmjs.com/package/win…
安装 winston
npm i winston
配置打印日志格式
在项目的根目录添加一个配置打印日志格式的文件 logger.js (此文件在 github 上)
修改 app.js 的配置
修改项目默认的变量名
将 const logger = require('morgan');
改成:
const morgan = require('morgan')
相应的也要把 app.use(logger('dev'));
改成:
app.use(morgan('dev'));
引入 logger.js 文件
const logger = require('./logger')
修改错误处理
将错误打印到日志上
测试日志是否打印成功
请求一个不存在的路由,如: http://localhost:3000/hello
打开日志文件,看到这条错误被打印出来就成功啦
MySQL
启动数据库
这里使用的方法是用 Docker 安装 MySQL
这里是安装的教程:www.runoob.com/docker/dock…
安装数据库管理工具
Sequel Pro macOS 用户安装
navicat windows 用户安装
这里选择用 Sequel Pro 启动好数据之后,就在 Sequel Pro 连接数据库,密码是启动数据库时自己设置的密码
创建数据库
使用数据库管理工具新建数据库 database 名称为: expressFrame
进入 expressFrame 库,新建用户信息表为 user ,默认有 id 字段,需要再添加以下必要字段:
Field:id
Field:name Type:VARCHAR LENGTH:255 Comment:姓名
Field:phone Type:VARCHAR LENGTH:255 Comment:手机号
使用 Knex 增删改查数据库
Knex.js是为 Postgres,MSSQL,MySQL,MariaDB,SQLite3,Oracle 和 Amazon Redshift 设计的 SQL 查询构建器,其设计灵活,便于携带并且使用起来非常有趣。Knex 的主要目标环境是 Node.js,您需要安装该 knex 库,然后安装适当的数据库库:pg 适用于 PostgreSQL 和 Amazon Redshift,mysql 适用于 MySQL 或 MariaDB,sqlite3 适用于 SQLite3 或 mysql 适用于 MSSQL。
下载相关依赖
npm install -save knex mysql
添加配置信息
在项目根目录下,新建配置信息 config.js,之后的配置信息涉及到数据库和密码,不上传到 Github 等托管平台,所以需要单独设置,使用 .gitignore 避免上传。之后敏感的配置信息,都将在此配置。host 地址为数据库的服务地址,本地为 127.0.0.1 。
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
新建 .gitignore
在项目根目录下,新建 .gitignore 避免上传 config.js 、log、 node_modules 等不需要被上传到 Github 的文件。
.DS_Store
.idea
npm-debug.log
yarn-error.log
node_modules
log
# config.js 这个文件我这里就不加进来了,我把它上传到 github
数据库配置
新建 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)
}
}
})
knex 增删改查
在 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/get_user
查看接口返回的数据
这就大功告成啦~
github地址:github.com/ysm27/expre…
走过路过点个赞呗~