Node.js--express

本文深入探讨了Express框架的基础知识,包括中间件的使用、跨域设置、工程化工具的构建流程,以及如何创建和调用路由中间件。同时,介绍了如何使用express-generator快速搭建项目结构,和如何处理错误中间件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

express 是第三方的框架(模块)

express

1 构成

  • 中间件
    • 名词解释: 中间件就是一个封装函数,具有一定的功能
    • express的中间件有哪些呢?
      • 应用级中间件
      • 路由中间件
      • 错误处理中间件
    • 中间件如何调用?
      • app对象来调用
        • app.use(中间件)
  • 路由
    • 前端: 接口
    • 后端: 路由

2.跨域【 后端跨域 】

  • 设置请求头
  • response.setHeader(‘Access-Control-Allow-Origin’,’*’)
  • 利用第三方模块来跨域 cors

3.使用工程化工具来构建一个完整的 express 项目

  • 工程化工具/自动化工具/脚手架

    • express-generator

      • express-generator 使用

        • 1.安装使用

          • $ cnpm i express-generator -g
          • $ express -e 项目名称
        • OR

        • 2.不安装使用

          • 保证你的电脑中npm版本 > 5.2

          • $ npx express -e 项目名称

        • 名词解释: -e 表示ejs文件,它是一个html模板

express-generator

1.目录

  • bin/www 为项目创建了一个服务器

  • public 静态资源文件夹

    • img
    • style
    • js
  • app.js 项目入口文件

    引入项目需要的模块

  • var createError = require('http-errors'); //用来记录错误信息
    var express = require('express');// express的顶级库,提供了很多expres api
    var path = require('path'); // 处理磁盘路径
    var cookieParser = require('cookie-parser'); // 处理cookie
    var logger = require('morgan'); // 记录日志信息
    

    引入自定义路由中间件(routes文件夹下的)

    var indexRouter = require('./routes/index');
    var usersRouter = require('./routes/users');
    

    ejs视图

    app.set('views', path.join(__dirname, 'views'));//设置views的绝对路径
    app.set('view engine', 'ejs');//设置项目模版渲染引擎为ejs
    

    通过app对象使用中间件

    app.use(logger('dev'));
      app.use(express.json()); // 为post请求来做格式化
      app.use(express.urlencoded({ extended: false })); // 项目文件可以省略后缀名
      app.use(cookieParser());
      app.use(express.static(path.join(__dirname, 'public'))); // 确定项目静态资源目录指定为public
    

    调用自定义的路由中间件(创建接口)

    /* 调用路由中间件 - 创建接口 */
      app.use('/api', indexRouter);
      app.use('/api', usersRouter);
    

    剩余部分为错误中间件

    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') === 'development' ? err : {};
      
      // render the error page
      res.status(err.status || 500);
      res.render('error');
    });
    
  • routes 路由

    创建路由中间件的一个过程

    引入express

    const express = require('express')
    

    获取路由对象

    const router = express.Router()
    

    创建路由中间件

    // router.route( 路由路径 )
    router.route('/login') // http://localhost:3000/api/login   post请求
      .post(( req,res,next ) => {
        // res.render('../views/index.ejs') 
        res.render('index',{
          data: JSON.stringify({
            status: 200,
            msg: '请求成功'
          })
        })
      })
    
  • views

    • 路由对应的模板,这个模板将来会发送给前端,发给前端前会被解析为html文件(渲染后的接口)
  • packge.json

    • 表示项目启动脚本记录 、 项目所需要的依赖包【 插件 】

2.Node.js可以当做一个后端的角色

  • 能不能给前端做接口
  • 去熟悉项目运行思维
    • package.json -> node ./bin/www -> app.js -> routes/index.js & users.js

3.后端测试接口

  • postman

  • insomnia

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值