最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • 都 2021 年了,也该抛弃 ExpressJS 了

    正文概述 掘金(LeanCloud)   2021-03-04   822

    作者 Romain Lanz

    翻译 New Frontend

    Express 长期以来都是 Node.js 生态系统的事实标准。随便找个学习 Node 的教程,都会介绍 Express。

    在最近的 JS 调查中,Express 在各方面都是第一。

    都 2021 年了,也该抛弃 ExpressJS 了

    尽管如此,Express 并非很棒的技术,本该在 2015 年就停止使用。

    缺乏维护

    Express 好多年没有重大更新了, 它的下一个大版本 6 年来一直在 alpha 状态。

    人们可能觉得没什么大更新是因为它的 API 已经稳定,不需要变动了。实际情况是:Express 不知道如何处理 async/await

    如果你在路由处理器或中间件里用到了 async/await 代码,就容易碰到 UnhandledPromiseRejectionWarning 异常。Express 不知道它们,所以不会为你处理这些异常。

    Express 仓库里有很多人提到他们遇到了这个问题,比如 #4360、#4348 等等。

    你应该清楚,从 Node 15 开始,遇到这个异常应用会崩溃,在 Node 15 之前则会导致内存泄漏。

    使用 async/await 的时候,你总是应该确保接受 AsyncFunction 作为回调。Broken Promises 是个很好的关于这一主题的演讲。

    小范围框架

    「框架」是个含糊的字眼。拿起你的放大镜,你会发现 Express 实际上是一个支持中间件的路由库,但它仍然被称为「框架」。

    尤雨溪做过一个框架设计如何寻求平衡的非常出色的演讲,其中提到应该根据范围来划分框架的类别。

    我们可以将 Express 划分为小范围框架(low-scope framework)。

    创建应用的时候,除了路由系统,我们还需要更多特性:

    • 访问数据库
    • 校验数据
    • 创建身份鉴别层
    • 创建鉴权系统
    • 等等

    这些 Express 都没有,你需要自行粘合。

    自己粘合这些模块意味着你需要自行承担内存泄露、安全漏洞、bug 等风险。除此之外,这么做是在浪费时间和金钱,因为你不应该是负责做这些的人。

    替代品

    替代品有哪些?该推荐人们学哪些框架?

    尽管我相信不该使用小范围框架,还是有少部分人喜欢这种风格或者出于学习目的需要这类框架。我会向这些人推荐 fastify。

    这个框架维护得很好,而且提供了官方的 Express 兼容层,方便迁移你的应用。

    如果你偏好能让自己专注于业务逻辑的大范围(high-scope)全功能框架,那么可以使用 AdonisJS。

    没有理由继续使用 Express,早换早解脱。

    我讨厌 Express 吗?

    特此声明,我并不讨厌 Express。这篇文章只是分享我的一些看法,希望有助于其他人在充分了解情况的前提下做决定,而不是随大流。

    Express 曾是 Node.js 生态系统中的第一框架,许多年来它都发挥了巨大的作用!但现在是让它退役的时候了。

    我希望能推动 Node.js 生态系统继续向前,帮助新开发者学习不会原地爆炸的技术。

    注:作者 Romain Lanz 是 AdonisJS 开发者之一,本文仅代表作者个人观点。

    题图 Thom Holmes


    起源地下载网 » 都 2021 年了,也该抛弃 ExpressJS 了

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元