媒介
Express
5.0 仍处于alpha
版中,然则我们照样想先来初窥一下新的express
版本中将会有哪些转变,以及怎样将你的运用从Express
4 迁移至 Express
5。
Express
5 与Express
4 的区分,并有像之前从Express
3 更新至 Express
4 时的那样异常庞大。然则,依然照样有几个API有了颠覆性的变化。这意味着你的Express
4 运用在更新至Express
5 以后,将有能够不能运转。
装置
想要运用alpha
版的Express
5 ,你只需在你运用的根目录下运转敕令:
$ npm install express@5.0.0-alpha.2 --save
完成了以上步骤以后,你便能够运转你项目中的自动化测试,来看看有哪些代码运转失利了,然后依据下文列出的Express
5 的更新清单,来修复它们。(你的代码应当是有写测试的吧。。)接着,依据测试的毛病信息,来现实运转你的运用,看看究竟是发生了什么毛病。这些毛病应当都是运用了Express
5不再支撑的属性和要领所致使的。
Express
5 的转变
以下是Express
5 的转变清单。固然,因为如今它还在一个alpha
版,所以能够会有更多的变化。
被移除的要领和属性:
app.del()
app.param(fn)
被转变成复数情势的要领名:
以下这些要领名被变动为了复数情势。在Express
4 中,运用单数的要领名将会获得一个正告。而Express
5 则不再支撑它们了:
req.acceptsCharset()
->req.acceptsCharsets()
.req.acceptsEncoding()
->req.acceptsEncodings()
.req.acceptsLanguage()
->req.acceptsLanguages()
.
app.param(name, fn)
中name
的前置冒号(:
)
app.param(name, fn)
中name
的前置冒号是为了向前兼容Express
3。在Express
4 中,运用前置了冒号的name
会获得一个正告。而在Express
5 中,将会默默得疏忽它,然后运用没有前置冒号的name
。
假如你遵照的是Express
4的文档,这个转变不应当影响到你的运用。
req.param(name)
这个要领的要领名异常具有歧义,并且在猎取已被删除的数据时能够会有风险,所以它被移除了。你将必需从req.params
,req.body
或req.query
来明确地猎取指定数据。
res.json(obj, status)
Express
5 将不再支撑要领res.json(obj, status)
。取而代之的是,你能够经由过程status
要领链式调用它,如:res.status(status).json(obj)
。
res.jsonp(obj, status)
Express
5 将不再支撑要领res.jsonp(obj, status)
。取而代之的是,你能够经由过程status
要领链式调用它,如:res.status(status).jsonp(obj)
。
res.send(body, status)
Express
5 将不再支撑要领res.send(obj, status)
。取而代之的是,你能够经由过程status
要领链式调用它,如:res.status(status).send(obj)
。
res.send(status)
Express
5 将不再支撑status
参数是数字的res.send(status)
要领。取而代之的是,你能够运用res.sendStatus(status)
,它将会设置一个指定的HTTP相应码以及文字描述,如“Not Found”
,“Internal Server Error”
等等。
假如你需要向res.send()
通报一个数字,那就给这个数字用引号围困,来将其转换为一个字符串,然后Express
5 将不会以为你在运用旧的不再支撑的要领。
res.sendfile()
在Express
5 中,res.sendfile()
被它的驼峰定名版本res.sendFile()
所庖代。
有所转变的要领和属性:
app.router
app.router
对象在Express
4中被移除了,然则在Express
5 中,它有回归了。然则它与Express
3 中的差别,它只是一个对基础的Express
router
对象的援用,在你的运用中,你不准要显式的加载它。
req.host
在Express
4中,req.host
中会删去端口号,而在Express
5 中,端口号会被保存。
req.query
在Express
4.7和Express
5 中,query parser
接收false
参数来禁用默许的查询字符串诠释。然后你能够运用本身的查询字符串诠释逻辑替代之。
有所改进的要领:
res.render()
关于一切的模板引擎,这个要领如今都邑强迫去运用它异步版本的编译要领,来防止在运用支撑同步编译的模板引擎中能够会涌现的bug。
结论
我们已给了Express
5 中的一切转变的一个预览,以及晋级你的运用的大抵途径。然则因为它还处于一个alpha
阶段,所以将来能够会有更多的变化。请坚持关注StrongLoop
。