[译]初窥Express 5

媒介

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.paramsreq.bodyreq.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

原文链接

https://strongloop.com/strongblog/moving-toward-express-5/

    原文作者:菜菜蔡伟
    原文地址: https://segmentfault.com/a/1190000003892257
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞