Express
Express 是什么
Express 是一个快速,简单,极简的 Node.js web 应用开发框架。通过它,可以轻松的构建各种 web 应用。例如:
- 接口服务
- 传统 web 网站
- 开发工具集成等
Express 本身是极简的,仅仅提供了 web 开发的基础功能,但是它通过中间件的方式集成了许许多多的外部插件来出来 HTTP 请求。
body-parser
:解析 HTTP 请求体compression
:压缩 HTTP 响应cookie-parer
:解析 cookie 数据cor
:处理跨域资源请求morgon
:HTTP 请求日志记录
Express 中间件的特性固然强大,但是它所提供的灵活性就是一把双刃剑。
- 它让 Express 本身变得更加灵活和简单
- 它的缺点虽然有一些中间件包可以解决几乎所有的问题和需求,但是跳转合适的包有时也会成为一个挑战。
Express 不对 Node.js 已有的特征进行二次抽象,只是在它之上扩展了 web 应用所需的基本功能。
- 内部使用的还是 http 模块
- 请求对象集成 http.IncommingMessage
- 响应对象继承自 http.ServerResponse
Express 特性
- 简单易学
- 丰富的基础 API 支持,以及常见的 HTTP 辅助程序,例如重定向、缓存等
- 强大的路由功能
- 灵活的中间件
- 高性能
- 非常稳定(源码几乎100%的测试覆盖率)
- 视图系统支持 14 个以上的主流模板引擎
Express 发展历史
- Express.js 由 TJ Holowaychuk 创立。首次发行的版本 0.12.0,依据 Express.js 的 Github 仓库,是在 2010年5月22日。
- 在 2014.6, StrongLoop 获得了项目的管理权。StrongLoop 在 2015.9 被 IBM 并购。在 2016年1月, IBM 宣布将 Express.js 置于 Node.js 基金会孵化器的管理之下。
Express 应用场景
- 传统的 web 网站 Ghost...
- 接口服务
- 服务端渲染中间层
- 开发工具,
JSON Server
webpack-dev-server
基础 demo
const express = require('express');
const app = express();
const port = 3000;
app.get('/', (req, res) => {
res.send('Hello World!');
});
app.post('/', function (req, res) {
res.send('Got a POST request');
});
// 要为express.static函数提供的文件创建虚拟路径前缀(该路径实际上并不存在于文件系统中)
// 请为静态目录指定一个挂载路径
app.use('/static', express.static('public'));
app.use(function (req, res, next) {
res.status(404).send("Sorry can't find that!");
});
app.use(function (err, req, res, next) {
console.error(err.stack);
res.status(500).send('Something broke!');
});
app.listen(port, () => {
console.log(`Example app listening at http://localhost:${port}`);
});