在前端开发中,Express.js是一个非常受欢迎的Node.js web应用程序框架。它提供了一种方便快捷的方式来处理HTTP请求和响应,同时还能轻松管理会话、路由和中间件等功能。
全局对象
当我们使用Express.js时,可以访问到一些全局对象,如 app
和 router
。这些对象可以让我们在应用程序级别进行配置和操作。
app对象
app
对象代表着我们的应用程序,通过该对象可以注册路由、中间件以及其他可用组件。
以下是一个基础应用的示例:
----- ------- - ------------------- ----- --- - ---------- ------------ ------------- ---- - --------------- --------- --- ---------------- ---------- - ------------------- ------- -- ---- ------- ---
在上面的示例中,我们创建了一个Express.js应用程序并使用 app.get
注册了一个处理 /
路径的路由。当我们访问 http://localhost:3000/
时,服务器将返回 "Hello world!" 信息。
此外,app
对象还有其他有用的方法和属性,如 app.use
可以注册中间件、app.locals
可以设置全局变量、app.set
可以设置应用程序配置等。
router对象
router
对象代表着一个单独的路由器,可以使用它来组织和管理应用程序内的路由。可以通过创建多个 router
实例来实现更好的代码可读性和可维护性。
以下是一个使用 router
的示例:
----- ------- - ------------------- ----- --- - ---------- ----- ------ - ----------------- --------------- ------------- ---- - --------------- ---- ---------- --- ------------------ -------- ---------------- ---------- - ------------------- ------- -- ---- ------- ---
在上面的示例中,我们创建了一个名为 router
的新的路由器,并使用 router.get
注册了一个处理 /
路径的路由。最后,我们使用 app.use
将该路由器挂载到 /router
路径下。当我们访问 http://localhost:3000/router/
时,服务器将返回 "Hello from router!" 信息。
中间件
中间件是Express.js框架中的一个核心概念。它们允许我们在请求和响应之间执行某些操作,如身份验证、请求处理、错误处理等等。
应用级别中间件
应用级别中间件绑定到 app
对象上,可以在整个应用程序范围内被调用。
以下是一个使用应用级别中间件的示例:
----- ------- - ------------------- ----- --- - ---------- -- -------- ----- ------------ - ------------- ---- ----- - ----------------- -- -- ------ -------------- ------- -- -- ----- ---------------------- ------------ ------------- ---- - --------------- --------- --- ---------------- ---------- - ------------------- ------- -- ---- ------- ---
在上面的示例中,我们注册了一个名为 myMiddleware
的中间件,并使用 app.use
将其绑定到应用程序级别。当我们访问 http://localhost:3000/
时,服务器将打印 "This is my custom middleware!" 到控制台。
路由级别中间件
路由级别中间件绑定到单个路由或一组路由上。
以下是一个使用路由级别中间件的示例:
----- ------- - ------------------- ----- --- - ---------- ----- ------ - ----------------- -- -------- ----- ------------ - - ----------------------------------------------------------- -------- ---------------------------------------------------------------------------------------