ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

express使用简介

2020-12-15 18:00:34  阅读:173  来源: 互联网

标签: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请求
  1. 查看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;



 

  1. 路由处理,引用路由,注册路由

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.请求方法,可以同时包含多个处理方法

 

  • 开发接口
  1. 安装mysql xss 插件

npm i mysql xss –save

  1. 封装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

}


 

 

  1. 配置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,

}
  1. 数据库数据关键部分加密,新建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

}

 

  1. 登录准备工作 安装 、引用、注册session

cnpm I express-session


app.use(session({ 

  secret: 'wind', //设置秘钥

  cookie: {   //cookie没目录

    // path: '/', //默认配置 根目录 设置前端可以访问目录

    // httpOnly: true, //默认配置 前端js无法访问

    maxAge: 24 * 60 * 60 * 1000 //过期时间

  }

}))
  1. 安装redis

npm i redis connect-redis –save

linux win10的启动等等,都是学问啊

  1. 中间件

 

四、日志

 

 

 

 

 

  • 线上环境
  1. 安装pm2

npm i pm2 -g

添加 "prd": "cross-env NODE_ENV=prd pm2 start  nodemon ./bin/www"

  1. 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. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有