express 简介
express是跑在node.js上的服务端web框架,它给我们提供很多便捷的api,供我们编程。它的安装很简单。
它的简单用法:
varexpress =require('express');
varapp = express();
app.get('/',function(req, res){
res.send('Hello World!');
});
app.listen(3000,function(){
console.log('Example app listening on port 3000!');
});
express 路由配置
通常情况下,我们前端请求接口,都是后端程序员提供,他们或许是php、java或其他程序语言。express给我们提供的路由可以使我们web程序员用js编写。
路由方法派生自 HTTP 方法之一,附加到 express 类的实例。
Express 支持对应于 HTTP 方法的以下路由方法:get、post、put、head、delete、options、trace、copy、lock、mkcol、move、purge、propfind、proppatch、unlock、report、mkactivity、checkout、merge、m-search、notify、subscribe、unsubscribe、patch、search 和 connect。
有一种特殊路由方法:app.all(),它并非派生自 HTTP 方法。该方法用于在所有请求方法的路径中装入中间件函数。
路由方法一般情况下接受两个参数,一个是请求路径字符串,第二个是路由处理的回调函数。
关于字符串路径,“/”代表根目录,我们可以通过正则表达式来匹配路径。
关于路由处理程序,我们可以单个回调函数可以处理一个路由;多个回调函数可以处理一个路由(确保您指定 next 对象);一组回调函数可以处理一个路由。
当然我们也可以用app.route()为路由路径创建可链接的路由处理程序。 因为在单一位置指定路径,所以可以减少冗余和输入错误。
我们可以用express.Router()类来创建可安装的模块化路由处理程序。
接着,在应用程序中装入路由器模块:
varbirds =require('./birds');
...
app.use('/birds', birds);
路由处理程序的响应方法
静态文件
为了提供诸如图像、CSS 文件和 JavaScript 文件之类的静态文件,请使用 Express 中的 express.static 内置中间件函数。
将包含静态资源的目录的名称传递给 express.static 中间件函数,以便开始直接提供这些文件。例如,使用以下代码在名为 public 的目录中提供图像、CSS 文件和 JavaScript 文件:
当然我们也可以为静态资源路径设置别名,第一个参数传入字符串:
app.use('/static', express.static(__dirname +'/public'));
API
app.use():在指定路径执行中间件函数,一般情况下第一个参数是一个路径path,第二个参数是一个回调函数callback。路径我们可以用正则匹配,也可以维护成一个数组,用来匹配路径。回调函数中一般情况下是三个参数,req、res、next,错误处理中间件有四个参数,前面加一个err。
app.set():设置程序的name值,比如设置端口port,设置模版引擎ejs。
app.engine():用指定的模版引擎解析文件,第一个参数为文件扩展名,第二个为引擎提供的方法。
app.get(名称):返回set 设置的值,与app.set()相对应。
app.render():app.render(view, [options], callback) 渲染 view, callback 用来处理返回的渲染后的字符串。可以将其app.render()视为生成渲染视图字符串的实用程序函数。内部res.render()用于app.render()渲染视图。
版本更新
可express目前的稳定版本是4.X。5.0版本正在测试中,在5中废弃了许多api,也更改了许多。
1、在 Express 4 中已移除的 app.router 对象在 Express 5 中已恢复。在新版本中,此对象只是对 Express 基本路由器的引用,不像在 Express 3 中应用程序必须显式将该路由器装入。
2、在 Express 4 中,如果存在端口号,req.host 函数会错误地将其剥离。在 Express 5 中,则会保留端口号。
3、req.query,在 Express 4.7 以及 Express 5 之后,如果您希望使用自己的查询字符串解析逻辑函数,查询解析器选项可以接受 false 以禁用查询字符串解析。
4、现在,此方法为所有查看引擎强制执行异步行为,避免具有同步实现以及违反建议接口的查看引擎所导致的错误。
5、在 Express 5 中,res.sendfile() 函数已由驼峰式大小写版本 res.sendFile() 替换。
6、Express 5 不再支持 app.del() 函数。Express 5 不再支持特征符 res.send(status),而是使用res.sendStatus(statusCode) 函数。
7、Express 5 不再支持特征符 res.json(obj, status)、res.jsonp(obj, status)、res.send(obj, status)。而是设置状态,然后将其链接到 res.json() 方法,如下所示:res.status(status).json(obj)、res.status(status).jsonp(obj)、res.status(status).send(obj)。
req.param(name),已移除用于检索表单数据的方法,因为这可能引起混淆,而且很危险。
领取专属 10元无门槛券
私享最新 技术干货