~ 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 中