快速入门:使用 Express.js 构建 Node.js 应用程序

在这个现代化的Web世界中,Node.js以其轻量级、高效、快速的特性成为了广受欢迎的技术之一。它可以用于后台服务器程序、命令行应用、网络Web服务器等等应用场景。但是,制作出完整的功能强大的Node.js应用确实一件很有挑战性的事情。在大型复杂的应用程序中,我们需要一个框架来帮助我们完成大多数工作,Express.js就是其中一个。

在这篇文章中,我们将会介绍如何使用Express.js搭建一个简单但是实用的Web应用程序。你将会学到如何安装和配置Express.js,如何创建和使用一些基本的中间键,如何连接和使用数据库,以及如何配置项目中的路由和控制器等等。我们将会通过一个小而有趣的示例应用程序,来展示Express.js框架的强大和灵活性。

安装及配置Express.js

在使用Express.js之前,我们需要先安装nodejs环境,并且新创建一个工程文件。为了安装Express.js,我们可以在命令行中输入以下命令:

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

这将下载并安装Express.js并保存到我们的项目依赖中,可以在 package.json 文件中看到关于Express.js的具体信息。

在安装之后,我们需要在项目的根目录下创建一个.js文件,并在其中引入和初始化Express.js。请注意,我们需要同时引入http模块并监听一个端口号以提供页面的访问。

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

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

现在,你已经成功地初始化了一个Node.js应用程序并使用了Express.js框架。当你运行它时,你会看到在命令行中打印出"Server is listening on port 3000"。

创建和使用中间键

在Express.js中,中间键是非常重要的组件,通过它们我们可以处理HTTP请求,包括路由、身份验证、错误处理等。在本例中,我们将使用中间键来解析我们的请求体,并设置一个静态文件目录,以便可以正确地访问我们的CSS和JavaScript文件。

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

在这里,我们加载了三个中间键,第一个中间键解析了请求体,并将body属性添加到Express.js的请求对象中;第二个中间键处理了urlencoded格式的请求,以便于在处理POST请求时处理页面上的表单数据;第三个中间键确保我们的CSS和JavaScript文件可以正确地访问,它需要一个路径来指向静态文件目录。

连接和使用数据库

下一步,我们需要配置连接到数据库并操作数据的模块。在这个示例中,我们将连接到一个MongoDB数据库并使用Mongoose.js进行数据管理。

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

在这里,我们通过mongoose.connect()将Node.js连接到我们的MongoDB数据库。Express.js与MongoDB的接口在mongoose.js中实现,它使得我们能够进行数据库写入、查询和获得数据的操作。它也提供了一个易于使用和可定制的Schema和Model来管理我们的数据。

配置路由和控制器

现在,我们已经完成了所有必要的基础设施设置,开始处理路由和控制器。我们的应用程序将包含以下两个路由:

  • 用户登录
  • 一些文本内容的页面

为了实现这些路由,我们需要做到以下两步:

设置我们的路由

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

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

在这里,我们设置了两个路由:index.jslogin.js。他们分别返回主要的应用程序页面和登录页面,并路由到兴趣相关的路径。为此,我们调用express.Router()创建express路由对象。路由器实际上是中间键函数,它自己是在“middleware”堆栈中注册的。

设置Controler

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

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

我们在这里对路由进行处理和响应,使用我们的控制器。控制器负责接收和处理请求数据,以及生成响应数据给客户端的操作。在这个示例中,我们将通过控制器的两种类型来实现路由:index.jslogin.js。他们调用不同的视图文件,并使用不同的中间键来处理不同的页面请求。

这是我们的路由处理的范例

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

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

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

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

在这里,我们定义了一个使用Express.js的路由器,它将路由请求到一个视图文件中。在我们的这个示例中,该路由器返回了两个视图文件,分别是index.ejsabout.ejs。也就是说,我们将使用EJS作为我们的View Engine。在reder方法中,我们将渲染title变量作为传递给视图文件的数据。

控制器范例

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

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

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

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

在这里,我们定义了一个loginController,它负责处理用户登录操作。当用户点击登录按钮时,该控制器将接收和处理POST请求数据,并根据输入的用户名和密码进行身份验证。如果成功,则重定向到我们的主页,否则将返回一个带有错误消息的登录页。

关于视图引擎

Express默认情况下支持多种View Engine,包括EJS、Pug和Handlebars等等。在这个示例中,我们选择了EJS呈现引擎。EJS是一款简单易用的模板引擎,主要由四部分组成:文本字符串、JavaScript代码、注释和嵌入式JavaScript函数。EJS非常适合大多数中小型项目,因为它提供了足够的灵活性和功能,同时又不过于复杂。

结论

这里是一个使用Express.js搭建的一个小的Web应用程序的概述。我们实现了许多不同的功能,包括路由、控制器、中间键、MongoDB和使用视图引擎。但是,Express.js可以做比这更多的事情,它提供了许多扩展和插件,因此可以适应多种应用程序开发需求。

如果你想开始使用Express.js进行开发,那么推荐你去尝试使用一些简单一点的小应用程序,从而了解该框架的基本功能。去试试使用websocket,swig等等来提高自己的NodeJS编程能力。欢迎你探索Express.js的其他功能,如果你在开发过程中有别的问题或疑问,可以通过Stack Overflow或官方文档寻找帮助。

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