🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
## Express 是什么? Express 基于 Node.js 平台,快速、开放、极简的 Web 开发框架。曾经是Node.js 最流行的框架。 Express 虽然被称为框架, 但实质上是一个 支持中间件的路由库。属于小范围的框架。 类似以下的这些特性Express 都没有: * 访问数据库 * 校验数据 * 创建身份鉴别层 * 创建鉴权系统 Express 曾经很流行, 但是因为其自身的一些缺陷,加之框架的维护和更新也不是很及时, 现在的使用已经大不如前了。 > Express 的缺陷主要是如果路由处理器或中间件里用到了`async/await`代码,就容易碰到`UnhandledPromiseRejectionWarning`异常。Express对此无法处理。 ## Express 的快速示例 因为Express 是基于 Node.js 平台的框架,所以使用Express 需要安装Node.js 的环境,这里使用的版Node.js的版本是 v14.16.1 。关于Node.js及其安装可以参考: [Node.js 入门介绍与安装](https://blog.csdn.net/oscar999/article/details/84306324) #### 示例步骤 1. 创建一个项目的目录 ,比如 expressprj 2. 命令行切换到该目录下, 执行 `npm init -y`。 这个命令会在目录下创建一个 package.json 文件,内容如下图: ![](https://img.kancloud.cn/28/d7/28d7a8a36df021d27bd38ed0f9bcfe0e_900x351.png) 3. 命令行输入: `npm install express --save` 该命令会在当前目录下载express, 并且将 express添加到项目的依赖中。 执行的效果是会产生一个package-lock.json文件,并且把相关的依赖写入 dependencies 节点。执行后的效果如下图: ![](https://img.kancloud.cn/c8/12/c812cd97fde9922a5086e76180498b10_898x348.png) 4. 在项目目录下建立一个 index.js 文件, 文件内容如下: ``` 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}`) }) ``` * `app.get` 设置路由, 完整的语法是 `app.methods(path,callback)` 5. 运行。 在命令行输入 `node index.js` 6. 查看结果, 在浏览器输入 http://localhost:3000/ ![](https://img.kancloud.cn/f2/00/f20035a479be22f078e61ed8ee9b23bf_445x142.png) #### 与一般的Node.js 的比较 在Node.js 中,基本示例的写法如下: ``` //1. require http var http = require('http'); //2. create server and response http.createServer(function(request,response){ response.writeHead(200,{'Content-type':'text/plain'}); response.end('Hello Nodejs\n'); }).listen(8888); //3. log console.log('Server running at http://127.0.0.1:8888/'); ``` 从上面示例看来,Express与一般的Node.js比较主要是路由写法上的差异,也没有提供太多的便利, 其实express提供了一个应用程序的脚手架生成器,用来生成项目的主要文件。 ## 使用Express应用程序生成器 (`express-generator`)创建项目 1. 建立项目路径(比如 expressgenprj),命令行切换到项目目录 2. 安装生成器(也就是生成项目目录) `npx express-generator`, 执行之后, 目录的内容如下: ![](https://img.kancloud.cn/04/8a/048a9d80162cb5a3636fe94f91cf6599_682x187.png) * public 资源文件, 包括图片、样式等 * routes 路由文件 * views 存放视图文件 * app.js 主入口文件 3. 安装依赖 `npm install` 4. 以调试的方式启动 `set DEBUG=expressgenprj:* &npm start` 5. 在浏览器输入 http://localhost:3000/ 效果如下图: ![](https://img.kancloud.cn/1c/6e/1c6efc4a47feac7cd5ba2b8770b88671_577x239.png) ## Express的相关资源地址 * 官网介绍(中文):[https://www.expressjs.com.cn/](https://www.expressjs.com.cn/) * Git源码地址: [https://github.com/expressjs/express](https://github.com/expressjs/express) ***** *****