• express 框架


    一.什么是 express ?

    • 基于 Node.js 平台开发的 "web 开发框架" ,就是一个 node.js 模块

    • express的作用:它提供一系列强大的特性,帮助你创建各种 Web 和移动设备应用。

    • express 同时也是 Node.js 的一个模块

    二.express 特点

    1. 实现了路由功能

    2. 中间件(函数)功能

    3. 对 req 和 res 对象的扩展

    4. 可以集成其他模板引擎

     三.express 基本使用

      步骤总结:

        1、加载 express 模块

        2、创建 express 实例(一般叫 app )

        3、设计路由

        4、启动监听服务

      

      **********使用 express 框架模拟 Apache 服务器处理静态资源

    • 主要使用到的方法express.static('public')

      • express.static('public')的返回值就是一个函数,这个函数的作用就是根据请求,读取静态资源文件并响应给用户

      • 注意:static() 方法参数路径要写 绝对路径,不要写相对路径。相对路径还是相对执行node命令的路径

    • 主要使用到的方法 app.use()

      • use()方法的参数1表示"虚拟路径",参数2表示要开放的静态资源目录

    • 如何向客户端发送单个静态文件

      • res.sendFile() 方法

       

      *********res.send() 和 res.end() 区别:

      区别1:
        - res.send() 参数可以是 a Buffer object、a String、 an object、 an Array.

        - res.end() 参数类型只能是 Buffer 对象或者是字符串

      区别2:
       - res.send() 会自动发送更多的响应报文头,其中就就包括 Content-Type: text/html; charset=utf-8,所以没有乱码

    四.注册路由的使用方法区别

      1.app.use()

    1. 在进行路由匹配的时候不限定方法,什么请求方法都可以
    2. 请求路径中的第一部分只要与 /index 相等即可,并不要求请求路径(pathname)完全匹配

      2.通过 app.all() 注册路由

        1、不限定请求方法;

        2、请求路径的pathname必须完全匹配

    app.all('/index', function (req, res) {
    res.send('hello world! 你好世界!');
    });

     

    五、express 中的中间件

    • 中间件(Middleware) 是一个函数,它可以访问请求对象(request object (req)), 响应对象(response object (res)), 和 web 应用中处于请求-响应循环流程中的中间件,一般被命名为 next 的变量。

    • 常规中间件(应用级中间件)的回调函数,一般有3个参数

      • req, res, next

      • 其中next()是一个函数,通过这个函数把执行流程交给下一个中间件

    • 可以挂在中间件的部分方法

      • app.use()

      • app.get()、app.post()、app.put()、app.delete()、...等各种请求方法

      • 注意:在挂载中间件时 next() 方法的重要性,不调用该方法无法执行到下一个中间件

    • 中间件的应用场景

      • 利用中间件实现记录日志功能

    六、封装使用mongo

    // 数据操作模块
    
    // 1. 加载 mongodb 模块
    var mongodb = require('mongodb');
    // 加载 config 模块
    var config = require('./config.js');
    
    
    // 2. 封装一个执行连接数据库操作的方法
    function connectDB(callback) {
      // 执行连接数据库操作
      mongodb.MongoClient.connect(config.connStr, function (err, db) {
        if (err) {
          throw err;
        }
        // 调用回调函数将 db 返回
        callback(db);
      });
    }
    
    
    
    // 3. 封装一个查询所有数据的方法
    module.exports.findAll = function (collectionName, callback) {
      // 1. 连接数据库
      connectDB(function (db) {
        // 2. 执行查询数据的方法
        db.collection(collectionName).find().toArray(function (err, docs) {
          // 3. 关闭数据库
          db.close();
    
          // 4. 把结果返回
          callback(err, docs);
        });
      });
    };
    
    
    // 4. 封装一个插入数据的方法
    module.exports.insertOne = function (collectionName, data, callback) {
      // 1. 连接数据库
      connectDB(function (db) {
        // 2. 插入数据
        db.collection(collectionName).insertOne(data, function (err, result) {
          // 关闭数据库
          db.close();
          callback(err, result);
        });
      });
    };
    
    
    // 将字符串 _id 转换为 ObjectID
    module.exports.ObjectID = function (_id) {
      // 把 字符串 _id 转换为 ObjectID
      return new mongodb.ObjectID(_id);
    };
    
    
    
    // 封装查询1条数据的方法
    module.exports.findOne = function (collectionName, filter, callback) {
      // 1. 连接数据库
      connectDB(function (db) {
        // 2. 根据条件执行查询
        db.collection(collectionName).findOne(filter, function (err, doc) {
          // 3. 关闭数据库连接
          db.close();
    
          // 4. 把结果返回
          callback(err, doc);
        });
      });
    };
    
    
    // 封装一个更新操作
    module.exports.updateOne = function (collectionName, filter, updateData, callback) {
      // 1. 连接数据库
      connectDB(function (db) {
        // 2. 执行更新操作
        db.collection(collectionName).updateOne(filter, updateData, function (err, result) {
          // 1. 关闭数据库
          db.close();
    
          // 2. 通过回调函数将数据返回
          callback(err, result);
        });
      });
    };
    
    
    // 封装一个删除方法
    module.exports.deleteOne = function (collectionName, filter, callback) {
      // 1. 连接数据库
      connectDB(function (db) {
        // 2. 执行删除操作
        db.collection(collectionName).deleteOne(filter, function (err, result) {
          // 1. 关闭数据库
          db.close();
          // 2. 通过回调函数返回
          callback(err, result);
        });
      });
    };

     

  • 相关阅读:
    C# Linq 类似Scala中的map的函数
    Spark DataFrame NOT IN实现方法
    Scala scopt 命令行解析
    WPF 绑定到静态属性,可通知
    WPF GroupBox Header居中
    WPF开源项目整理(排名不分先后)
    Windows 上配置 Go 的 gRPC 编译环境
    C++20新线程 jthread 体验代码
    查找被删除但仍然占据磁盘的文件
    以Docker方式安装Redis集群
  • 原文地址:https://www.cnblogs.com/tjp40922/p/16122464.html
Copyright © 2020-2023  润新知