Express框架——总结篇(API总结一)

在前几篇我们了解了 Express 的安装、路由和中间件。在介绍的过程中我们使用了一些方法,那些方法只是整个 Express 框架API 中的一部分,那么我们现在具体总结一下 Express 中的API。

express模块

  • 创建express 实例
    在我们引入 express 模块之后,我们可以通过express()创建 express 实例,如下所示:

     var express = require('express');
    
    var app = express();
    
  • 三个内置中间件
    在中间件的使用我们介绍过三个内置中间件,分别是 express.json([选项])express.static(root,[选项])express.urlencoded([选项])

  • 创建路由器对象
    在路由中我们了解过,可以通过express.Router创建一个新的路由器对象。

    var express = require('express');
       
    var router = express.Router([options])
    

    在创建过程中我们可以传入三个选项,具体的选项和作用:

    • caseSensitive:是否区分大小写,默认是不区分。例如:“ / Foo”和“ / foo”视为相同。
    • mergeParams:保留req.params来自父路由器的值。如果父项和子项的参数名称冲突,则子项的值优先。
    • strict:是否启动严格路由,默认不启动。例如:路由器将“ / foo”和“ / foo /”视为相同。

express实例

express实例的属性
  1. app.locals:这个属性就是实例的局部变量的属性。一旦设置,app.locals属性值将在应用程序的整个生命周期中保持不变
app.locals.title = "这是一个属性";
app.locals.num= 11;

我们可以在项目的任何地方通过app.locals设置和访问局部变量,也可以通过req.app.locals使用局部变量。

  1. app.mountpath:这个属性包含一个或多个安装了子应用程序的路径模式。具体使用方法如下所示:
//根实例
const app = express()
//子实例
const admin = express()

admin.get('/', function (req, res) {
  console.log(admin.mountpath)
  //在安装成功之后,当此时路径为 /adm*n或者/manager时都输出  [ '/adm*n', '/manager' ]
  //可以通过/adm*n和/manager这两个路径访问到admin实例,则 mountpath 属性存放的就是可以访问到实例的路径
  res.send('Admin Homepage')
})

//子实例,准备安装到 admin 子实例上
const secret = express()
secret.get('/', function (req, res) {
  
  console.log(secret.mountpath)
  //在安装成功之后,当此时路径为 /adm*n/secr*t或者/manager/secr*t时都输出  /secr*t
  res.send('Admin Secret')
})

admin.use('/secr*t', secret)
app.use(['/adm*n', '/manager'], admin) 
express实例的事件

express实例中的事件只有一个,用于子应用程序挂载到父应用程序上时执行。语法:app.on('mount' , callback(parent)),其中callback(parent)是一个回调函数,回调函数的参数是父应用程序。具体实例如下所示:

const app = express()
const admin = express()

admin.on('mount', function (parent) {
  console.log('Admin Mounted')
  console.log(parent) // refers to the parent app
})

admin.get('/', function (req, res) {
  res.send('Admin Homepage')
})

app.use('/admin', admin)

当应用程序开始运行时,则事件自定执行。

express实例的方法

express实例中的方法大致可以分为两类,一类是用于设置属性,一类是用于路由或挂载中间件。

  1. app.all、app.delete、app.get、app.post、app.put、app.route、app.use这些方法都是用于路由或挂载中间件,我们在路由篇我具体讲解。
  2. app.listen([port[, host[, backlog]]][, callback]):用于绑定并侦听指定主机和端口上的连接。如果端口被省略或为0,操作系统将分配一个任意未使用的端口,这对于自动任务(测试等)之类的情况很有用。
  3. app.disable(name):将name指定的设置项设置为false。app.disable(‘foo’)相当于app.set(‘foo’, false)
  4. app.disabled(name):如果name指定的设置项为false,则返回true。
  5. app.enable(name):将name指定的设置项设置为true。app.enable(‘foo’)相当于app.set(‘foo’, true)
  6. app.enabled(name):如果name指定的设置项为true,则返回true。
  7. app.engine(ext, callback):用于给不同后缀的文件指定不同的模板引擎
  8. app.get(name):返回name表示设置项的值。还有另外一种用法,就是用于路由中。
  9. app.param([name], callback):用于为路径的参数添加回调。如下实例,当访问 user/fasd 的时候,会先执行app.param中的回调,然后再去执行get中的回调,并且在一个请求-响应循环中只会被调用一次,即使有多个路由的param匹配了它。:
app.param('aa', function(req, res, next, aa) {
    console.log('CALLED ONLY ONCE');
    next();
})
app.get('/user/:aa', function(req, res) {
    console.log('and this matches too');
    res.end();
});
  1. app.path():返回app的地址,string格式。
const app = express()
const blog = express()
const blogAdmin = express()

app.use('/blog', blog)
blog.use('/admin', blogAdmin)

console.log(app.path()) // ''
console.log(blog.path()) // '/blog'
console.log(blogAdmin.path()) // '/blog/admin'
  1. app.render(view, [locals], callback):在回调中返回渲染完成的html界面。它支持传入模板对应的参数,它类似于res.render(),只是不能向客户端直接返回渲染后的界面。
  2. app.set(name, value):为name设置value,其中name为app设置表中的某个属性。
属性名类型描述默认值
case sensitive routingBoolean是否大小写敏感默认为false,即视”/Foo”与”/foo”为同一个path
envString环境模式默认为process.env.NODE_ENV,或者“development”
etagVaried设置ETag响应的头信息。可用的值请看etag选项表部分
jsonp callback nameString指定默认的jsonp回调名称默认为”?callback=”
json replacerStringjson replacer回调默认为null
json spacesNumber设置后会用指定数量的空格填充json默认为Disabled
query parserString指定查询解析器,可用的有“simple”或“extended”。simple表示使用node的查询解析器:querystring;extended表示使用qs默认为”extended”
strict routingBoolean是否使用严格路由默认为false,路由器会将”/foo”与”/foo/”视为同一个路径
subdomain offsetNumberThe number of dot-separated parts of the host to remove to access subdomain2
trust proxyVaried是否启用代理判断Disabled.
viewsString or Array表示应用的view文件存放的地址。如果是一个数组,那么将按照数组顺序寻找view文件process.cwd() + ‘/views’
view cacheBoolean是否启用view模板缓存生产环境默认为true
view engineString指定view渲染引擎
x-powered-byBoolean在HTTP头中加入”X-Powered-By: Express”true

trust proxy可选设置项:

类型
Boolean如果为true,那么express会从X-Forwarded-*头的最左边寻找客户端的IP地址。如果为false,那么express会从req.connection.remoteAddress获取客户端的IP地址。默认为false
IP addresses指定信任的ip地址或子网地址或ip地址数组。默认的子网名称有:loopback - 127.0.0.1/8, ::1/128linklocal - 169.254.0.0/16, fe80::/10 uniquelocal - 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16, fc00::/7
Number信任前n个代理服务器
Function定制化信任机制

etag可选设置项:

类型
Booleantrue表示启用弱ETag,false表示不启用ETag。默认为true
String“strong”表示启用强ETag,“weak”表示启用弱ETag
Function定制化ETag方法
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值