前言:个人经验用vscode和webStorm完成过node-express项目的搭建。
安装步骤
- 建议使用淘宝镜像安装cnpm:npm install -g cnpm – registry=https://registry.npm.taobao.org
- 安装模块express:cnpm install express -g
- 安装express脚手架:cnpm install express-generator -g
- 创建文件夹:express cinema
- 进入cinema文件夹:cd cinema
- 安装相应模块:cnpm install
- 安装数据库mysql:cnpm i mysql -S
- 运行express:cnpm start
- 在浏览器输入http://localhost:3000,如果显示express,安装成功!
项目目标
- 开始目录结构
- 完成后目录结构
项目搭建
- 可以改变bin模块www.js文件里的端口号,默认是3000.
- 创建conf模块下的db.js,完成数据库的配置信息.
// 数据库的配置信息
const MYSQL_CONF = {
host:"localhost",
user:"root",
password:"123456",
port:3306,
database:"cinema"
};
module.exports = { MYSQL_CONF };
- 创建db模块下的mysql.js,完成数据库的连接.
// 导入数据库
const mysql = require("mysql");
// 创建连接对象
const {MYSQL_CONF} = require("../conf/db.js");
const con = mysql.createConnection(MYSQL_CONF);
// 开始连接
con.connect();
// 提供统一 执行sql
function executeSql( sql ) {
let promise = new Promise(( resolve , reject ) => {
con.query( sql , ( err , result ) => {
if ( err ){
reject(err);
result ;
} else {
resolve( result );
}
} )
});
return promise ;
}
module.exports = { executeSql };
- 创建msg模块下的BaseMsg.js,完成用户请求,返回成功、失败信息的封装.
class BaseMsg{
constructor(data,message){
//如果只有提示信息,没有数组信息,例如:用户登录 ,添加商品
if(typeof data ==="string"){
this.message = data;
data=null;
message =null;
}
//如果有提示信息,也有数组信息,分别赋值
if(data){
this.data = data;
}
if(message){
this.message = message;
}
}
}
//成功信息
class SuccessMsg extends BaseMsg{
constructor(data,message){
super(data,message);
this.errorNo=0;
}
}
//失败信息
class ErrMsg extends BaseMsg{
constructor(data,message){
super(data,message);
this.errorNo=-1;
}
}
module.exports={SuccessMsg,ErrMsg};
- 创建models模块下的usermodel.js,完成用户登录的sql语句.
const {executeSql} = require("../db/mysql");
const login = (name,pass)=>{
let sql = `select * from user where name='${name}' and pass='${pass}'`;
return executeSql(sql);
};
module.exports={login};
- 在routes模块下的users.js,完成用户登录接口。
一般情况下:
读取:get ----- req.query.参数
修改:put ----- req.body
添加:post ----- req.body
删除:delete ----- req.query.参数
var express = require('express');
var router = express.Router();
const {login} = require("../models/usermodel");
const {SuccessMsg,ErrMsg}=require("../msg/BaseMsg")
/* POST users listing. */
router.post('/login', async function(req, res, next) {
res.setHeader("Access-Control-Allow-Origin","*")
const {name,pass} = req.body;
let result = await login(name,pass);
if(result.length>0){
res.json(new SuccessMsg(result,"登录成功"));
}else{
res.json(new ErrMsg("登录失败"));
}
});
module.exports = router;
- 每次写完一个功能接口都要在app.js里相应位子添加两行代码,如登录接口.
var usersRouter = require('./routes/users');
app.use('/users', usersRouter);
结果
- 请求
- 结果
如有错误,感谢大家的指点;
如有好的实现方法,也感谢大家向我分享。