Express.js 是由 TJ Holowaychuk 开发的,现在由 Node.js 基金会和众多开源贡献者维护。它是一个保持最低程度规模的灵活 Node.js Web 应用程序框架,为 Web 和移动应用程序提供一组强大的功能。

一、安装与基本使用

  1. 安装Node.js

    • 首先,需要在计算机上安装Node.js。Node.js是一个基于Chrome V8引擎的JavaScript运行环境,它允许JavaScript代码在服务器端运行。
  2. 安装Express

    • 使用npm(Node.js的包管理器)来安装Express。在项目目录下,打开命令行工具,执行以下命令:

      1
      npm install express
    • 这将下载并安装Express及其依赖项。

  3. 创建简单的Express服务器

    • 创建一个JavaScript文件(例如app.js),并在其中编写以下代码:

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      const express = require('express'); 
      const app = express();
      const port = 3000;

      app.get('/', (req, res) => {
      res.send('Hello World!');
      });

      app.listen(port, () => {
      console.log(`Example app listening on port ${port}`);
      });
    • 这段代码创建了一个Express应用程序,定义了一个简单的路由,当访问根路径时返回“Hello World!”。

  4. 启动服务器

    • 在命令行中,进入项目目录,并执行以下命令来启动应用程序:

      1
      node app.js
    • 将看到控制台输出的服务器运行消息,并且可以在浏览器中访问http://localhost:3000,看到“Hello World!”的消息显示在页面上。

二、核心概念

  1. 路由
    • 路由是指定义应用程序端点的路径以及处理这些路径上请求的方式。在Express中,可以使用app.METHOD(PATH, HANDLER)语法来定义路由,其中METHOD是HTTP请求方法(如GET、POST等),PATH是请求的路径,HANDLER是处理请求的函数。
      1
      2
      3
      app.get('/about', (req, res) => {
      res.send('About page');
      });
  2. 中间件
    • 中间件是一种函数,可以访问请求对象(req)、响应对象(res)和应用程序请求-响应周期中的下一个中间件函数。每个中间件函数都有权访问请求对象(req)、响应对象(res),以及管道中下一个中间件函数的引用(next)。中间件常用于执行以下任务:
      • 执行任何代码。
      • 修改请求和响应对象。
      • 结束请求-响应循环。
      • 调用堆栈中的下一个中间件函数。
    • 如果当前中间件没有结束请求-响应循环,则必须调用next()函数以将控制权传递给下一个中间件函数。否则,请求将保持挂起状态。
      1
      2
      3
      4
      app.use((req, res, next) => {
      console.log('Time: ', Date.now());
      next();
      });
  3. 请求和响应对象
    • req(请求对象)包含了与HTTP请求相关的所有信息,如请求头、请求参数等。
    • res(响应对象)用于发送HTTP响应到客户端,如设置状态码、发送数据等。

三、进一步学习

  1. 处理静态文件

    • 可以使用express.static中间件来处理静态文件,如HTML、CSS、JavaScript和图像文件。例如,要将public目录作为静态文件的根目录,可以使用以下代码:

      1
      app.use(express.static('public'));
  2. 构建API

    • Express非常适合构建RESTful API。可以使用不同的HTTP请求方法来处理不同的操作,如GET用于获取数据,POST用于创建数据,PUT用于更新数据,DELETE用于删除数据。
  3. 使用模板引擎

    • Express支持多种模板引擎,如Pug、EJS等。可以使用模板引擎来生成动态HTML内容。
      1
      2
      3
      4
      app.set('view engine', 'ejs');
      app.get('/', (req, res) => {
      res.render('index', { title: 'Hello' });
      });
  4. 错误处理

    • Express允许你定义全局错误处理中间件,以捕获和处理应用程序中发生的错误。例如,可以使用以下代码来捕获并处理所有错误:

      1
      2
      3
      4
      app.use((err, req, res, next) => { 
      console.error(err.stack);
      res.status(500).send('Something broke!');
      });

四、参考资源

  1. 官方网站:Express.js的官方网站(https://expressjs.com)提供了详细的文档和示例代码,是学习Express.js的最佳资源。
  2. 在线教程:可以在各大在线教育平台上找到Express.js的在线教程和视频课程,这些教程通常提供了丰富的实例和案例,有助于更好地理解Express.js的使用。
  3. 社区支持:Express.js拥有一个活跃的社区,可以在Stack Overflow、GitHub等平台上找到关于Express.js的问题和解决方案。

通过以上入门详解,你可以开始使用Express.js来构建自己的Web应用程序和API。随着对Express.js的深入理解,你将能够掌握更多高级功能和最佳实践,以构建更复杂和高效的Web应用程序。