~ Express

Express 基于 Node.js,是一个简洁、灵活的 web 开发框架。

它是对 Node.js 中 http 模块的一层抽象,这使得开发者可以无需注意细节,而直接上手进行页面和业务逻辑的开发:

  • 路由:定义路由表执行不同的 http 请求动作
  • 中间件:设置中间件来响应 http 请求
  • 模板引擎:通过向模板传递参数动态渲染 HTML 页面

其核心概念是「 路由和中间件 」,从本质上来说,一个 Express 应用就是在调用各种中间件。


搭建项目基础架构

前提:确认已安装好 Node.js 运行环境


[1] 方式一:普通安装

  • 在工作空间下,手动创建一个项目目录,如 myapp,然后进入此目录:
// 工作空间:project 目录
webpiece@webpiecedeMBP project % mkdir myapp
webpiece@webpiecedeMBP project % cd myapp
webpiece@webpiecedeMBP myapp %
  • 初始化 Node.js 项目,生成项目描述文件 package.json
npm init     // 执行初始化命令
 
# 初始化命令并不是一次执行完毕,而是会提出很多问题让用户填写,如项目名称、描述和作者等,
   package name: (myapp) 
   version: (1.0.0) 
   description: 
   entry point: (index.js) app.js
   test command: 
   git repository: 
   keywords: 
   author: 
   license: (ISC) 
# 如果不想填写,一直按 Enter 键即可 
# ——— 对于 entry point: (index.js),可以输入app.js(推荐)或者你希望的主文件名称,表示当前应用的入口文件
  • 本地安装 express
// 本地安装 - 生产环境
   npm install express --save
 
# 安装完成后,package.json 文件会自动添加 express 为依赖项,更改后的内容如下:
{
  "name": "myapp",
   ...
  "dependencies": {    // 依赖项
    "express": "^4.17.1"
  }
}
  • 创建项目入口文件 app.js,并进行代码测试
// 模块引入及实例化
const express = require('express');
const app = express();
 
// 路由和中间件
app.get('/',(req,res)=>{
    res.end('HelloWorld');    // 设定根路由显示HelloWorld
});
// 监听3000端口为HTTP服务
app.listen(3000,()=>{
	console.log('app listening on port 3000')
})
  • 在命令行中输入 node app.js 运行程序,然后,在浏览器中输入 localhost:3000,就可以了

[2] 方式二:使用工具( express-generator )

express-generator 是 express 应用生成器工具,它包含了 express 命令行工具,可以快速创建一个应用的骨架。


前提:使用 express-generator,首先需要对其进行全局安装。

npm install -g express-generator    // 全局安装
express --version    // 能够输入版本号,则表示安装成功
 
# 基本语法
  express [options] [dir]
    options: 
      -h, --help          可以显示所有可用的命令行选项
          --version       输出版本号
      -e, --ejs           添加对 ejs 模板引擎的支持
          --hbs           添加对 handlebars 模板引擎的支持
          --pug           添加对 pug 模板引擎的支持
      -H, --hogan         添加对 hogan.js 模板引擎的支持
          --no-view       创建不带模板引擎的项目
      -v, --view <engine> 添加对模板引擎(view) <engine> 的支持 (ejs|hbs|hjs|jade|pug|twig|vash) (默认jade)
      -c, --css <engine>  添加样式表引擎 <engine> 的支持 (less|stylus|compass|sass) (默认是普通的css文件)
          --git           添加 .gitignore
      -f, --force         强制在非空目录下创建

  • 进入工作空间,初始化一个项目基础框架
express myapp    // 根目录 myapp

// express 默认的视图引擎是 jade,可以在安装的时候修改成其他视图引擎
   express --view= ejs myapp

运行成功后,生成的应用程序具有如下结构:                  // 可以随意使用此结构或修改它以最好地满足实际需求

.
├── bin
│   └── www   // 启动文件 — 文件内包含引用要启动的应用、设置应用监听的端口和启动 HTTP 服务等
├── public   // 静态资源文件 — 该目录下的文件资源不需要经过文件映射就可以直接访问
│   ├── images
│   ├── javascripts
│   └── stylesheets
│       └── style.css
├── routes   // 路由文件 — 文件中设置的接口最终以指定的 HTTP 请求方式暴露给用户,并在用户请求后将结果返回
│   ├── index.js
│   └── users.js
├── views   //视图文件 — 在 app.js 中设置好视图引擎和模板之后,该目录即为应用视图的根目录,然后路由文件就会根据 app.js 中的设置加载并渲染该目录下的视图文件
│   ├── error.ejs
│   └── index.ejs
├── app.js   // 初始化文件 — 包括引入应用程序的基础依赖项、设置视图引擎目录以及模板、设置静态资源路径、配置通用的中间件、引入路由和一些错误处理中间件等
└── package.json   // 配置文件 — 文件内包含程序的基础信息、启动脚本和依赖包等

  • 添加依赖,然后运行项目
$ cd myapp    // 进入项目目录
$ npm install    // 安装所有依赖
// 运行项目,然后,在浏览器中输入 localhost:3000 就可以看到这个应用了
   $ DEBUG=myapp:* npm start    // MacOS 或 Linux
   $ set DEBUG=myapp:* & npm start    // Windows 中