教你认识 Express.js:最流行的 Node.js 框架

引言

Express.js 是 Node.js 中最流行的 Web 应用程序框架之一,它提供了一个简单而灵活的方式来构建 Web 应用程序。通过使用 Express.js,您可以更轻松地编写服务器端代码,从而让前端从艰苦的服务器端编程中解放出来。本文将介绍 Express.js 的基本概念、用法和示例代码,帮助您更好地理解和应用它。

安装和使用

要使用 Express.js,您首先需要安装它。可以使用以下命令:

--- ------- -------

确保您已经将 npm 安装在计算机上。如果您没有,请参阅官方 npm 网站上的指南。

安装 Express.js 后,您需要在应用程序中导入它。您可以使用以下命令:

--- ------- - -------------------

这会将 Express.js 应用程序对象导入到您的脚本中。您可以随时创建一个新的应用程序实例,并使用它来设置应用程序的路由和其他属性。

路由

路由是一种机制,用于将 Web 请求映射到特定的处理器函数或中间件。在 Express.js 中,您可以指定一个路由路径和一种方法,以便 Express.js 在接收到匹配的请求时调用该函数。

以下是一个简单的示例,其中我们定义了一个名为“/hello”的路由路径,并指定了一个用于处理 GET 请求的处理器函数:

----------------- ------------- ---- -
    --------------- --------
---

在这里,我们告诉 Express.js 如果我们收到一个名为“/hello”的 GET 请求,我们要调用一个处理函数,该函数将向客户端发送“Hello World”作为响应。

中间件

中间件函数是将请求对象和响应对象传递给下一个中间件或路由处理程序的函数。中间件用于执行类似于验证、格式化数据等任务。Express.js 默认安装了一些内置中间件函数,您也可以编写自己的中间件。

以下是一个使用中间件的示例,该示例在请求流程的早期执行:

--------------------- ---- ----- -
    -------------------- ------------
    -------
---

在这里,我们告诉 Express.js 要使用一个函数作为中间件。每当应用程序执行请求处理流程时,这个函数都会被调用。当它被调用时,它将打印当前时间,并调用 next() 方法将控制权传递到下一个中间件或路由处理程序。

视图

视图是用于呈现 Web 页面的模板。在 Express.js 中,您可以将视图与数据结合使用,并将其用于呈现页面。可以使用诸如 EJS、Pug 或 Handlebars 等视图引擎。以下是一个使用 Pug 视图引擎呈现网页的示例:

------------- -------- -------

----------------- ------------- ---- -
    --- ----- - -
        - ----- ------ ---- -- --
        - ----- -------- ---- -- --
        - ----- ---------- ---- -- -
    --
    ------------------- - ------ ----- ---
---

在这里,我们告诉 Express.js 使用 Pug 作为视图引擎。然后,我们定义了一个名为“/users”的路由,该路由将呈现名为“users.pug”的模板,并将用户列表对象传递给该模板进行呈现。

静态文件

Express.js 还提供了一种可以轻松处理静态文件的方式。您可以使用 Express.js 内置的 static 中间件函数来将静态文件提供给客户端。

以下是一个使用 Express.js 静态文件服务的示例:

----------------------------------

在这里,我们告诉 Express.js 提供名为“public”的目录作为静态文件服务。例如,如果您的服务器根目录中存在名为“public/image.png”的文件,则可以访问它。

结论

通过使用 Express.js,您可以更轻松地编写服务器端代码。它提供了一种简单而灵活的方法来构建 Web 应用程序,无论是对于新手还是对于有经验的开发人员来说,都是一种非常有用的工具。

通过本文,您已经了解了 Express.js 基本概念、用法和示例代码。您可以从这些基础中开始学习并开始构建您自己的 Web 应用程序。祝您好运!

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/6704de5ad91dce0dc8508821