中间件body-parser:
通常,此中间件将解析传入 HTTP 请求的主体并填充 req.body 属性,该属性随后可在您的路由和中间件中使用。
body-parser 为不同类型的请求体提供不同的解析器。如果你写如下:
var express = require('express');
var bodyParser = require('body-parser');
var app = express();
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: false}));
第一个 app.use() 将包含 JSON 正文解析器,第二个将包含 URL 编码的表单正文解析器。您需要的解析器取决于您的服务器必须处理的请求类型。 extended: false 和 extended: true 的区别已经在 this answer 中解释过。
中间件express-session:
此中间件提供了一种在 express 应用中处理会话和会话数据的简单方法。 resave 和 saveUninitialized 这两个配置属性会影响 express-session 存储用户会话数据的方式。
示例:假设一个新用户正在访问您的网站。 express-session 检测到此用户还没有会话,因此它将创建一个仅包含会话 ID 且没有数据的新会话。如果您设置saveUninitialized: true,此会话将存储在您的会话存储中,而不包含任何实际会话数据。 saveUninitialized: false 将在会话实际包含一些值时立即存储它。 (简单地说)
示例:现在假设具有现有会话的用户正在访问您的网站。请求了一些资源,但用户的会话数据没有改变。 resave: true 无论如何都会存储未更改的数据,而 resave: false 不会。
总结:设置app.use(expressSession({resave: false, saveUninitialized: false})); 将减少访问会话存储的次数,这对硬件资源和性能有好处。因此,在大多数情况下,您需要将它们设置为 false。