标签:res 简介 app express 使用 msg data require
- 框架搭建
1、安装脚手架:
npm install -g express-generator
2、创建项目:
express myapp
查看项目目录,可以知道启动文件www作用是提供http服务
express是一个全栈环境,所以有views、public
3、安装nodemon自动重启工具、cross-env设置环境变量脚本
npm i nodemon cross-env –save-dev
4、修改package.json,添加命令行,设置环境变量参数,监听www文件的变化
"dev": "cross-env NODE_ENV=dev nodemon ./bin/www"
5、启动:
npm run dev
- 查看入口文件,处理路由get、post请求
- 查看app.js作用
var createError = require('http-errors'); //错误处理
var express = require('express');
var path = require('path');
var cookieParser = require('cookie-parser'); //解析cookie 可以通过req.cookie访问cookie
var logger = require('morgan'); //记录accesslog日志功能
var indexRouter = require('./routes/index'); //引用路由
var usersRouter = require('./routes/users');
var app = express(); //客户端访问提供的实例
// view engine setup //注册视图引擎设置 注释掉
// app.set('views', path.join(__dirname, 'views'));
// app.set('view engine', 'pug');
app.use(logger('dev'));
app.use(express.json()); //处理content-type为application/json格式的 请求数据 可以通过req.body等等
app.use(express.urlencoded({ extended: false })); //获取其他请求格式的数据
app.use(cookieParser());
// app.use(express.static(path.join(__dirname, 'public'))); //暂时不使用静态文件夹
app.use('/', indexRouter); //注册路由
app.use('/users', usersRouter); // /user为父路由
// catch 404 and forward to error handler
app.use(function(req, res, next) { // 未请求到路由
next(createError(404));
});
// error handler
app.use(function(err, req, res, next) { //程序错误
// set locals, only providing error in development
res.locals.message = err.message;
res.locals.error = req.app.get('env') === 'dev' ? err : {};
// render the error page
res.status(err.status || 500);
res.render('error');
});
module.exports = app;
- 路由处理,引用路由,注册路由
3、路由编写 理解中间件
var express = require('express')
var router = express.Router()
router.get('/login', function(req,res,next){
// res.render('index', {title: 'mylogin'}); //返回页面内容
res.json({
code: 0,
msg: '登录成功',
data: {
name: 'qingcai1',
}
})
});
router.post('/register', function(req,res,next){
const { username, password } = req.body //获取前端传参
res.json({
code: 0,
msg: '注册成功',
data: {
username,
password
}
})
});
module.exports = router
app.请求方法,可以同时包含多个处理方法
- 开发接口
- 安装mysql xss 插件
npm i mysql xss –save
- 封装mysql请求方法
const env = process.env.NODED_ENV
//配置
let MYSQL_CONF
let REDIS_CONF
if( env === 'dev'){
MYSQL_CONF = {
host: '114.215.***,***',
user: 'root',
password: '***',
port: '3306',
database: '****'
}
}
module.exports = {
exec,
escape: mysql.escape
}
const mysql = require('mysql')
const { MYSQL_CONF } = require('../conf/db')
//创建连接对象
const conn = mysql.createConnection(MYSQL_CONF)
//链接
conn.connect()
//执行sql 语句
function exec(sql){
return new Promise((resolve,reject)=>{
conn.query(sql, (err, res)=>{
if(err){
reject(err)
return
}
resolve(res)
})
})
}
module.exports = {
exec,
escape: mysql.escape
}
- 配置sql请求控制件,编写sql请求
const xss = require('xss') //防止xss攻击
const { exec } = require('../db/mysql')
const login = (username,password)=>{
let sql = 'select * from user where 1 = 1'
if(!username){
return "请输入用户名"
}
if(!password){
return "请输入密码"
}
sql += "and username = '"+ username +"' and userpwd = '"+ password +"'";
return exec(sql)
}
4、返回值统一处理
class BaseModel {
constructor(data, msg){
if(typeof data === 'string'){
this.msg = data
data = null
msg = null
}
if(data){
this.data = data
}
if(msg){
this.msg = msg
}
}
}
class SuccessModel extends BaseModel{
constructor(data,msg){
super(data,msg)
this.code = 0
}
}
class ErrorModel extends BaseModel{
constructor(data,msg){
super(data,msg)
this.code = -1
}
}
class ErrorModel extends BaseModel{
constructor(data,msg){
super(data,msg)
this.errno = -1
}
}
module.exports = {
SuccessModel,
ErrorModel,
}
- 数据库数据关键部分加密,新建utils crpy文件
const crypto = require('crypto') //加密库
//秘钥
const SECERT_KEY = 'gujianxiang'
//md5 加密
function md5(content) {
let md5 = crypto.createHash('md5')
return md5.update(content).digest('hex')
}
// 加密函数
function genPassword(pwd) {
const str = `password=${pwd}&key=${SECERT_KEY}`
return md5(str)
}
module.exports = {
genPassword
}
- 登录准备工作 安装 、引用、注册session
cnpm I express-session
app.use(session({
secret: 'wind', //设置秘钥
cookie: { //cookie没目录
// path: '/', //默认配置 根目录 设置前端可以访问目录
// httpOnly: true, //默认配置 前端js无法访问
maxAge: 24 * 60 * 60 * 1000 //过期时间
}
}))
- 安装redis
npm i redis connect-redis –save
linux win10的启动等等,都是学问啊
- 中间件
四、日志
- 线上环境
- 安装pm2
npm i pm2 -g
添加 "prd": "cross-env NODE_ENV=prd pm2 start nodemon ./bin/www"
- pm2常用命令
pm2 start ….
Pm2 list进程列表
Pm2 restart ..重启
Pm2 delete … 删除
Pm2 stop … 停止
Pm2 info 进程信息
Pm2 log 进程日志
Pm2 monit cpu或内存信息
标签:res,简介,app,express,使用,msg,data,require 来源: https://blog.csdn.net/qingbaicai/article/details/111227169
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。