-
基于 Node.js 平台开发的 "web 开发框架" ,就是一个 node.js 模块
-
express的作用:它提供一系列强大的特性,帮助你创建各种 Web 和移动设备应用。
-
express 同时也是 Node.js 的一个模块
-
-
中间件(函数)功能
-
对 req 和 res 对象的扩展
-
可以集成其他模板引擎
三.
-
主要使用到的方法
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! 你好世界!'); });
五、
-
-
常规中间件(应用级中间件)的回调函数,一般有3个参数
-
req, res, next
-
其中next()是一个函数,通过这个函数把执行流程交给下一个中间件
-
-
可以挂在中间件的部分方法
-
app.use()
-
app.get()、app.post()、app.put()、app.delete()、...等各种请求方法
-
注意:在挂载中间件时 next() 方法的重要性,不调用该方法无法执行到下一个中间件
-
-
中间件的应用场景
-
利用中间件实现记录日志功能
-
六、
// 数据操作模块 // 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); }); }); };