资讯专栏INFORMATION COLUMN

[译]初窥Express 5

joywek / 2314人阅读

摘要:被移除的方法和属性被改变为复数形式的方法名以下这些方法名被更改为了复数形式。在中,使用单数的方法名将会得到一个警告。在中,被它的驼峰命名版本所取代。在中,中会删去端口号,而在中,端口号会被保留。

前言

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://www.ucloud.cn/yun/91555.html

相关文章

  • []Express在生产环境下的最佳实践 - 安全性

    摘要:前言这将是一个分为两部分,内容是关于在生产环境下,跑应用的最佳实践。潜在的攻击者可以通过它们进行针对性的攻击。 前言 这将是一个分为两部分,内容是关于在生产环境下,跑Express应用的最佳实践。第一部分会关注安全性,第二部分最会关注性能和可靠性。当你读这篇文章时,假设你已经对Node.js和web开发有所了解,并且对生产环境有了概念。 概览 生产环境,指的是软件生命循环中的某个阶段。...

    Forelax 评论0 收藏0
  • []Express应用结构的最佳实践

    摘要:为应用增加新的特性和处理新的情况可能都会改变文件的结构。写一个模板的最佳实践是,不要在模板中处理数据。在上面这四个文件夹中,主要的测试代码将是单元测试,这意味着你需要将被测试的代码与应用分离开来。 前言 Node和Express并不严格要求它的应用的文件结构。你可以以任意的结构来组织你的web应用。这对于小应用来说,通常是不错的,十分易于学习和实验。 但是,当你的应用在体积和复杂性上都...

    dreamans 评论0 收藏0
  • Express.js 中的 Sessions 如何工作?()

    世界上任何一个拥有用户数据的 web 应用都必须处理 sessions。作为一名开发者,我们必须要知道它们是什么以及如何处理它们。在这篇文章中,我想要分享的是: session 是什么? session 如何存储数据? 你如何决定存放 session 数据的位置? 在 sessions 工作时,你必须意识到的安全性上的影响有哪些?在一些示例代码中,我将会运用 session npm modul...

    Hydrogen 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<