nodejs框架中⽂中⽂API⼿册介于最近express 中⽂⽂档⽐较难的现状,特地了⼀个,供⼤家学习思考
Express 4.x API
express翻译api⽂档中⽂
--
express()
express()⽤来创建⼀个Express的程序。express()⽅法是express模块导出的顶层⽅法。
1. var express = require('express');
2. var app = express();
Methods
express.static(root, [options])
express.static是Express中唯⼀的内建中间件。它以模块为基础开发,负责托管 Express 应⽤内的静态资源。
参数root为静态资源的所在的根⽬录。
参数options是可选的,⽀持以下的属性:
属性描述类型默认值dotfiles是否响应点⽂件。供选择的值有"allow","deny"和"ignore"String"ignore" etag使能或者关闭etag Boolean true extensions设置⽂件延期回退Boolean true
index发送⽬录索引⽂件。设置false将不发送。Mixed"index.html" lastModified设置⽂件在系统中的最后修改时间到Last-Modified头部。可能的取值有false和true。Boolean true maxAge在Cache-Control头部中设置max-age属性,精度为毫秒(ms)或则⼀段的字符串Number0
redirect当请求的pathname是⼀个⽬录的时候,重定向到尾随"/"Boolean true setHeaders当响应静态⽂件请求时设置headers的⽅法Funtion
如果你想获得更多关于使⽤中间件的细节,你可以查阅。
Application()
app对象⼀般⽤来表⽰Express程序。通过调⽤Express模块导出的顶层的express()⽅法来创建它:
1. var express = require('express');
2. var app = express();
3.
4. ('/', function(req, res) {
5. res.send('hello world!');
6. });
7.
8. app.listen(3000);
app对象具有以下的⽅法:
路由HTTP请求;具体可以看和这两个例⼦。
配置中间件;具体请看。
渲染HTML视图;具体请看。
注册模板引擎;具体请看。
它还有⼀些属性设置,这些属性可以改变程序的⾏为。获得更多的信息,可以查阅。
Properties
app.locals
app.locals对象是⼀个javascript对象,它的属性就是程序本地的变量。
1. app.locals.title
2. // => 'My App'
3.
4. ail
5. // => 'me@myapp'
⼀旦设定,app.locals的各属性值将贯穿程序的整个⽣命周期,与其相反的是res.locals,它只在这次请求的⽣命周期中有效。
在程序中,你可以在渲染模板时使⽤这些本地变量。它们是⾮常有⽤的,可以为模板提供⼀些有⽤的⽅法,以及app级别的数据。通过req.app.locals(具体查看),Locals可以在中间件中使⽤。
1. app.locals.title = 'My App';
2. app.locals.strftime = require('strftime');
3. ail = 'me@myapp';
⼀个⼦程序是⼀个express的实例,其可以被⽤来作为路由句柄来处理请求。
1. var express = require('express');
2. var app = express(); // the main app
3. var admin = express(); // the sub app
4. ('/', function(req, res) {
5. console.untpath); // /admin
6. res.send('Admin Homepage');
7. });
8.
9. app.use('/admin', admin); // mount the sub app
它和req对象的属性⽐较相似,除了req.baseUrl是匹配的URL路径,⽽不是匹配的模式。如果⼀个⼦程序被挂载在多条路径模
式,untpath就是⼀个关于挂载路径模式项的列表,如下⾯例⼦所⽰。
1. var admin = express();
2. ('/', function(req, res) {
3. console.untpath); // ['adm*n', '/manager']
4. res.send('Admin Homepage');
5. });
6.
7. var secret = express();
8. ('/', function(req, res) {
9. console.untpath); // /secr*t
10. res.send('Admin secret');
12.
13. admin.use('/secr*t', secret); // load the 'secret' router on '/secr*t', on the 'admin' sub app
14. app.use(['/adm*n', '/manager'], admin); // load the 'admin' router on '/adm*n' and '/manager' , on the parent app
Events
<('mount', callback(parent))
当⼦程序被挂载到⽗程序时,mount事件被发射。⽗程序对象作为参数,传递给回调⽅法。
1. var admin = express();
2. ('mount', function(parent) {
3. console.log('Admin Mounted');
4. console.log(parent); // refers to the parent app
5. });
6.
7. ('/', function(req, res) {
8. res.send('Admin Homepage');
9. });
10.
11. app.use('/admin', admin);
Methods
app.all(path, callback[, callback ...]
app.all⽅法和标准的app.METHOD()⽅法相似,除了它匹配所有的HTTP动词。
对于给⼀个特殊前缀映射⼀个全局的逻辑处理,或者⽆条件匹配,它是很有效的。例如,如果你把下⾯内容放在所有其他的路由定义的前⾯,它要求所有从这个点开始的路由需要认证和⾃动加载⼀个⽤户。记住这些回调并不是⼀定是终点:loadUser可以在完成了⼀个任务后,调⽤next()⽅法来继续匹配随后的路由。
1. app.all('*', requireAuthentication, loadUser);
或者这种相等的形式:
1. app.all('*', requireAuthentication);
2. app.all('*', loadUser);
另⼀个例⼦是全局的⽩名单⽅法。这个例⼦和前⾯的很像,然⽽它只是限制以/api开头的路径。
1. app.all('/api/*', requireAuthentication);
app.delete(path, callback[, callback ...])
路由HTTP DELETE请求到有特殊回调⽅法的特殊的路径。获取更多的信息,可以查阅。
你可以提供多个回调函数,它们的⾏为和中间件⼀样,除了这些回调可以通过调⽤next('router')来绕过剩余的路由回调。你可以使⽤这个机制来为⼀个路由设置⼀些前提条件,如果不能满⾜当前路由的处理条件,那么你可以传递控制到随后的路由。
1. app.delete('/', function(req, res) {
2. res.send('DELETE request to homepage');
app.disable(name)
设置类型为布尔的设置名为name的值为false,此处的name是中各属性的⼀个。调⽤app.set('foo', false)和调⽤app.disable('foo')是等价的。
⽐如:
1. app.disable('trust proxy');
2. ('trust proxy');
3. // => false
app.disabled(name)
返回true如果布尔类型的设置值name被禁⽤为false,此处的name是中各属性的⼀个。
1. app.disabled('trust proxy');
2. // => true
3. able('trust proxy');
4. app.disabled('trust proxy');
5. // => false
设置布尔类型的设置值name为true,此处的name是中各属性的⼀个。调⽤app.set('foo', true)和调⽤able('foo')是等价的。
1. able('trust proxy');
2. ('trust proxy');
3. // => true
js arguments返回true如果布尔类型的设置值name被启动为true,此处的name是中各属性的⼀个。
1. abled('trust proxy');
2. // => false
3. able('trust proxy');
4. abled('trust proxy');
5. // => true
注册给定引擎的回调,⽤来渲染处理ext⽂件。
默认情况下,Express需要使⽤require()来加载基于⽂件扩展的引擎。例如,如果你尝试渲染⼀个foo.jade⽂件,Express在内部调⽤下⾯的内容,同时缓存require()结果供随后的调⽤,来加速性能。
1. ine('jade', require('jade').__express);
使⽤下⾯的⽅法对于那些没有提供开箱即⽤的.__express⽅法的模板,或者你希望使⽤不同的模板引擎扩展。
⽐如,使⽤EJS模板引擎来渲染.html⽂件:
1. ine('html', require('ejs').renderFile);
在这个例⼦中,EJS提供了⼀个.renderFile⽅法,这个⽅法满⾜了Express规定的签名规则:(path, options, callback),然⽽记住在内部它只
是ejs.__express的⼀个别名,所以你可以在不做任何事的情况下直接使⽤.ejs扩展。
⼀些模板引擎没有遵循这种规范,库映射模板引擎以下⾯的使⽤⽅式,所以他们可以⽆缝的和Express⼯作。
1. var engines = require('consolidate');
2. ine('haml', engines.haml);
3. ine('html', engines.hogan);
<(name)
获得设置名为name的app设置的值,此处的name是中各属性的⼀个。
如下:
1. ('title');
2. // => undefined
3.
4. app.set('title', 'My Site');
5. ('title');
6. // => 'My Site'
<(path, callback [, callback ...])
路由HTTP GET请求到有特殊回调的特殊路径。获取更多的信息,可以查阅。
你可以提供多个回调函数,它们的⾏为和中间件⼀样,除了这些回调可以通过调⽤next('router')来绕过剩余的路由回调。你可以使⽤这个机制来为⼀个路由设置⼀些前提条件,如果请求没能满⾜当前路由的处理条件,那么传递控制到随后的路由。
1. ('/', function(req, res) {
2. res.send('GET request to homepage');
3. });
app.listen(port, [hostname], [backlog], [callback])
绑定程序监听端⼝到指定的主机和端⼝号。这个⽅法和Node中的是⼀样的。
1. var express = require('express');
2. var app = express();
3. app.listen(3000);
通过调⽤express()返回得到的app实际上是⼀个JavaScript的Function,被设计⽤来作为⼀个回调传递给Node HTTP servers来处理请求。这样,其就可以很简便的基于同⼀份代码提供http和https版本,所以app没有从这些继承(它只是⼀个简单的回调)。
1. var express = require('express');
2. var https = require('https');
3. var http = require('http');
4.
5. ateServer(app).listen(80);
6. ateServer(options, app).listen(443);
app.listen()⽅法是下⾯所⽰的⼀个便利的⽅法(只针对HTTP协议):
1. app.listen = function() {
2. var server = ateServer(this);

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。