如何用express框架搭建node服务(路由、中间件、接口、日志、控制器)

node:node是js在后端的一个运行时环境
express: 是基于node的框架,能够快速构建web应用

一、安装

  1. 安装node,去官网下载,安装node长期稳定版本
  2. 新建项目工程文件夹
cnpm init -y   创建package.json文件
cnpm i -S express 安装express模块
cnpm i -S express body-parser  安装bodyParser,bodyParser中间件用来解析http请求体

二、引入

import logger from "../app/utils/logger";
import fs from 'fs' //node 提供的
import express from 'express'
import bodyParser from 'body-parser'
import util from 'util'
import path from 'path'

 var app = express();
 //配置bodyParser
app.use(bodyParser.json()); //用来解析前端发的json数据
app.use(bodyParser.urlencoded({extend:true})) //用来解析前端发的表单数据

三、跨域

app.use(function(req,res,next){
        //http请求的来源
        res.setHeader('Access-Control-Allow-Orgin','*');
        //http请求的方法 
        res.setHeader('Access-Control-Allow-Methods', '*');
        //http请求的头 
        res.setHeader('Access-Control-Allow-Headers','*');
        next();
    })

四、定义接口

app.get("/",function(req,res){
        res.send('hello world')
    })
app.get("/json",function(){
	var obj = {name:"star"}
	res.send(obj)
})

五、路由

import express from 'express'
const router = express.Router();
import userCtrl from '../controllers/user.ctrl'

export default function(app){

    router.route('/user/login').get(userCtrl.login);
    //使用上面的路由 api是一个前缀 给所有路由添加前缀
    app.use('/',router);
}

六、控制器

业务逻辑
const userCtrl = {
    login:function(req,resp){
        resp.json({code:200,msg:'登录成功'})
    }
}

七、日志

//动态加载路由 要找到routes 目录下所有文件 动态加载
    var currentDir = process.cwd();
    logger.info("currentDir:"+currentDir)
    var routeDir = currentDir + '/app/routes';
    // 同步读取目录下文件
    fs.readdirSync(routeDir).forEach(file=>{
        // 合并路径
        var filePath = path.join(routeDir,file);
        logger.info("filePath:" + filePath)
        // 加载并执行
        require(filePath)(app);
    })
    // 日志输出级别: info warn error
const logger = createLogger({
    level: 'info',
    format:format.combine(
        myFormat
    ),
    transports:[ //输出日志的地方
        new transports.Console(),
        new transports.File({filename:'./logs/applog.log'})
    ]
})
上一篇:2021-11-05


下一篇:用vue实现todos,todos里面包含了增删改查功能,不会的看过来,保准你会!!!