Express.js 是一个流行的 Node.js Web 框架,它已经推出了 4.x 版本。在这篇文章中,我们将讲述新版带来的变化,并提供升级你的项目的指南。
废弃了一些 API
在新版的 Express.js 中,废弃了一些 API。这些 API 比较老旧或者存在安全问题,不推荐使用。下面是一些被废弃的 API:
app.configure
app.router
express.bodyParser
express.json
express.urlencoded
express.multipart
我们需要使用新的 API 来替代这些废弃的 API,例如:
const express = require("express"); const bodyParser = require("body-parser"); const app = express(); app.use(bodyParser.json()); app.use(bodyParser.urlencoded({ extended: true }));
在使用新 API 的时候需要注意,app.use
等函数现在返回一个 Router 实例,而不是以前的 app 实例。
中间件函数签名更新
在 Express.js 4.x 版本中,中间件函数签名现在使用 (req, res, next)
,而不是以前的 (req, res)
。这是因为在旧版中,我们需要使用 next()
函数显式地调用下一个中间件。在新版中,如果我们需要调用下一个中间件,只需在函数末尾添加一个 next
参数就行了。
app.use((req, res, next) => { console.log("This is a middleware"); next(); });
Router 现在是完整的中间件
在旧版 Express.js 中,我们需要使用 app.use
和 app.get
等函数来设置路由。在新版中,我们可以使用一个完整的 Router 中间件函数。这也意味着我们可以将路由模块化到不同的文件中。
下面是一个示例代码:
// javascriptcn.com 代码示例 // routes/index.js const express = require("express"); const router = express.Router(); router.get("/", (req, res) => { res.send("Hello World"); }); module.exports = router;
// javascriptcn.com 代码示例 // app.js const express = require("express"); const routes = require("./routes/index"); const app = express(); app.use("/", routes); app.listen(3000, () => { console.log("Server is running on http://localhost:3000"); });
更好的错误处理机制
在旧版 Express.js 中,错误处理需要添加到每一个中间件函数中。在新版中,我们可以将错误处理添加到应用程序级别,只需添加一个中间件函数即可。
app.use((err, req, res, next) => { console.error(err.stack); res.status(500).send("Server Error"); });
总结
在本文中,我们学习了 Express.js 4.x 版本变化的重点。我们学会了如何升级我们的项目,以及使用新的 API 和中间件函数签名。我们还了解了如何使用 Router 中间件来模块化路由,并了解了更好的错误处理机制。
参考资料
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/654b8a217d4982a6eb55191d