前言
上周末分享了【第1167期】npm 2017 JavaScript 框架报告之 React 生态系统分析,今日早读文章由@编译青春翻译授权分享。
正文从这开始~
主要后端框架
什么鬼,就一个?不对,横坐标上趴着的都是啥?好吧,Express 是用 JavaScript 编写的后端服务的主流解决方案,剩下的四个最大的框架相对于 Express 来说太小了,甚至很难看到它们。
从图中可以看出的另一点是,Express 的下载量由原来的 1.5% 慢慢下降到 0.15%,是原来的十分之一。然而,与不断下滑的 Backbone 和 Flux 不同,Express 已经趋于稳定。
那是不是说 Express 变得越来越不流行了呢?请看下图:
这张图中的纵坐标是绝对下载量,可以看到几乎所有的框架都是越来越流行的。Express 从 2013 年初以来已经增长了 6000%。之所以 6000% 的增长在前一张图中看起来是下降的,是因为在 Express 增长的同时,NPM package 总量也增长了67,000%。
NPM 中前端代码爆炸式增长
目前,大约 83% 的 NPM 开发人员正在编写运行在前端的 JavaScript,而只有 41% 的人正在为后端编写代码。前后端开发比例为 2:1,强烈表明 NPM 社区的未来在于前端开发和工具制造。
在深入研究这个结论之前,让我们来看看更多的服务器端框架。
其他后端框架
Koa
用蓝线表示,Koa 是用一套更紧密的设计原则重写的 Express 的“精神继承者”,使用绝对量可观,但增长速度还不是很快。
Hapi
用黄线表示,Hapi 在 2014 年末有一个短暂的鼎盛时期,这恰巧是 NPM 转用 Hapi 的时候。然而,自此 Hapi 一直处于下滑状态,NPM 自己的网站也正在转用其他技术。
Sails
用绿线表示,Sails 是 JavaScript的 Ruby on Rails 的克隆。虽然最初在 2012 年年底推出的时候非常流行,但它一直衰退,这表明它不再被新项目所采用。
Next.js
用红线表示,Next.js 相对较新,流行度明显不如前三者。其一直稳步增长,值得一试,尤其是因为它使用了React。
前端 vs 后端
刚刚我们提到,调查显示数量上前端开发者超过后端开发者,这个结果能否从 package 的使用情况中体现呢?
这是一个难以回答的问题,许多 package 很难被归类为“前端”或“后端”,因为许多 package 在两种情况下都能工作并且应用广泛,所以单从代码上没法区分是前端还是后端代码,NPM 中有超过 60 万个 package,一个一个调查也是不可能的。
前端历史使用情况
在2013 年及以前,NPM 的前端使用量非常庞大,反映了 Backbone 的流行程度。但是,随着 Express 和其他服务器端代码的持续增长,Backbone 迅速衰退。自 2015 年以来,前端使用率再次增长。但是前端和后端在 JavaScript 代码上界限是模糊的,部分原因是 Webpack 和 Babel 这样的工具,我们下面具体看看。
追踪前端使用情况
为了试图弄清楚 NPM 的前端使用情况,我们来看看一些库,其中包括:
Babel
Webpack
Browserify
Bower
RequireJS
SystemJS
上面是 Webpack 和 Babel 的使用情况,React 用于比对。
Babel
用黄线表示,Babel 非常受欢迎,但它被同时用于前端和后端程序,所以它不是调查前端使用情况的可靠途径。
Webpack
用橙线表示,Webpack 是工作在浏览器的工具。 React 与 Webpack 一直以来彼此紧随,不过在 2016 年年中,Webpack 的使用率开始超过 React。这表明,Web 开发人员已经开始更广泛地采用 Webpack,而不仅仅是在 React 应用程序上使用。
Browserify
在 Webpack 流行之前,Browserify 开创了在浏览器中使用服务器端 JavaScript 的过程。 2015 年年中非常受欢迎,但 2016 年开始急剧下滑。Browserify 将Node.js API 用于浏览器,而 Webpack 是一个更通用的模块系统和编译工具,可以加载图片,CSS 和其他前端资源。因此,对于不用 Node 的开发者来说,Webpack 更为有用。因此,Browserify 衰落,Webpack 崛起,就是这个道理。
Bower
Bower 是另一个浏览器端模块化解决方案。 其在 2014 年中期开始下滑。它的开发者现在认为它已经被弃用了。(有趣的是,编写早期版本的 Bower 的 AndréCruz 继续创建了 npms.io,这个开源的 JavaScript 模块搜索引擎被 NPM 所采用,André 自己也是 NPM 用户)
RequireJS 和 SystemJS
RequireJS 是另一种模块化方案,在 2013 年初颇受欢迎,但与 Bower 同期下滑。 2015 年发布的 SystemJS 增长缓慢,直到 2016 年中期,一直表现平平。 2016 年中期,当 Webpack 助推 React 的时候,SystemJS 的用户很可能这时开始转移阵地。
曾经 Bower 一统天下,后来在 Browserify 面前败下阵来,而 Browserify 和 SystemJS 的份额后来也被 Webpack 侵吞。 JavaScript 生态系统在过去 5 年中的快速改朝换代表明,很难预测 5 年后 JavaScript 将会成为什么样子。
Webpack and Express
目前来看,我们可以通过 Webpack 大概了解 NPM 的前端使用情况。Webpack 从三年前开始快速增长,直到现在受欢迎程度是 Express 的一半。尽管在瞬息万变的 JavaScript 世界中做出预测是一件很不靠谱的事情,但我们认为 Webpack 将继续增长,甚至超过 Express,这与我们所看到的新用户的比例一致。几年后,NPM 可能被认为是一个前端工具。
都是 JavaScript 的好消息
NPM 生态的所有成长,无论是前端还是后端,对于 JavaScript 整体来说都是一个好消息。 它的灵活性和易用性难能可贵,其最核心的那部分常常被视为软肋,实际上可能是铠甲。
NPM 庞大的用户力量可以创建数十个重叠的社区,涉及前端、后端、桌面应用、移动应用、命令行、物联网设备等等,他们使用不同的 JavaScript 库组合,使得 JavaScript 更加蓬勃。
最后,为你推荐
【第1167期】npm 2017 JavaScript 框架报告之 React 生态系统分析
关于本文
译者:@编译青春
译文:https://mp.weixin.qq.com/s/am_SX3Yjt-Df3TFqnJIDXw
作者:@Laurie Voss
原文:https://www.npmjs.com/npm/the-state-of-javascript-frameworks-2017-part-3-back-end-frameworks