npm的作用是帮助程序员查找满足需求的JavaScript库和框架,近日,npm连发三份调查报告,总结了JavaScript生态圈近一年来大大小小的变故,本文主要针对后端框架展开。
后端的故事很简单:Express是编写后端服务的主流解决方案,其余几个大框架相对于Express来说都太小了。
另一个清晰的模式是,Express在逐渐趋于稳定。过去,所有npm下载量的1.5%基本都是Express,现在,这个数字是0.15%的十分之一。然而,与不断下滑的Backbone和Flux相比,Express算是趋于稳定了。
本文讨论的几乎所有框架相较于几年前都是增长的,比如Express从年初以来已经增长了%。之所以这些增长看起来好像是下降了一样,是因为在同一时间内,注册npm机构的库和工具等增长了67,%,基数变大了。
换句话说,JavaScript正在以史上前所未有的速度增长着。
写前端的程序员是写后端的二倍,未来哪一部分会更火?
目前,大约83%的npm开发人员在编写前端JavaScript,而只有41%的程序员在为后端编写代码(这些数字之间有重叠)。前后端开发人员比例为2比1,这说明什么?调查认为,这强烈表明未来前端开发和工具应用将更有前途。
在深入研究这个结论之前,让我们先来看看其他常用的后端框架。
其他后端框架
除了Express之外的四大后端框架是:
·Koa
·Hapi
·Sails
·Next
这里,Koa是Express的继承者,是用一套更紧密的设计原则对Express的重写。获得可观使用量的同时,增长速度不是很快。
Hapi
Hapi在年底经历了短暂的鼎盛时期。巧合的是,这就发生在npm社区转换自己的网站使用Hapi之后,所以有可能npm的代言是有效的。然而,自此以后,Hapi一直处于下滑状态,npm自己的网站也正在转移。
Sails
顾名思义,Sails就是JavaScript的RubyonRails的克隆。虽然最初在年底推出的时候非常流行,但是它遵循着常见的半衰期衰退模式,这表明它不再被新项目所采用。
Next.js
Next.js是一个相对较新的框架,并且比其他三个讨论的要少得多,它的使用模式有点混乱,所以这里跟踪了它的采用情况,Next.js显示出一些稳定增长,值得一试,尤其是因为它使用了React。
npm的前端工具使用历史
在年及以前,npm中前端库的使用量非常庞大,从Backbone的流行就可以看出来。但是,在Express和其他服务器端架构持续增长的同时,Backbone开始走下坡路。
自年以来,npm注册管理机构的前端使用率再次增长。但是前端和后端在JavaScript之间的界限是模糊的,部分原因是Webpack和Babel这样工具的使用。
为了试图弄清楚npm的前端使用情况,我们将看看用来提供前端代码的库,包括:
·Babel
·Webpack
·Browserify
·Bower
·RequireJS
·SystemJS
Babel
Babel是一个转译器,用于将更现代的JavaScript版本转换为与Node.js中的服务器端JavaScript以及与浏览器兼容的JavaScript旧版本。虽然Babel非常受欢迎,但它被用于前端和后端应用程序,不是前端使用的可靠代理。
Webpack
另一方面,Webpack是专门为浏览器提供JavaScript代码的工具。它的使用率一直与React不相上下。
不过,在年中,Webpack的使用率开始超过React。这表明,Web开发人员已经开始更广泛地采用Webpack,而不仅仅是React应用程序。
Browserify
在Webpack流行之前,Browserify开创了在浏览器中使用服务器端JavaScript的过程。这在年中非常受欢迎,但年开始急剧下滑。
对此可能的解释可以在两个工具的设计目标中找到。Browserify将Node.jsAPI(包括用于许多后端API的填充)包含到浏览器中。Webpack是一个更通用的模块系统和编译工具,可以加载图片,CSS和其他前端资源。因此,对于不是Node.jsDevs的开发者来说,Webpack更为有用。
Bower
浏览器端模块化JavaScript的另一个解决方案是Bower。Bower不仅是将模块放入浏览器的另一种方式,它也是一个完全独立的非npm模块,尽管Bower客户端本身是由npm注册中心托管和安装的。
虽然Bower的开发人员认为客户端本身具有许多优秀的特性,但他们同意CommonJS是大多数npm包所使用的JavaScript模块格式,是一种更灵活和流行的解决方案。但最终,还是开始逐渐下滑。
(有趣的是,编写Bower早期版本的Andreacute;Cruz创建了npms.io,这个开源的JavaScript模块搜索引擎被npm所采用,现在npm的官方搜索功能已经启用,Andreacute;自己也是npm用户。)
RequireJS和SystemJS
RequireJS是另一种具有自己模块格式的替代装载机,在年初颇受欢迎,但与Bower同时开始下滑。
年发布的SystemJS增长缓慢,直到年中期,从未真正获得过推动力。
曾经是主要力量的Bower败给了Browserify,后者丢失了Webpack的份额,Webpack偷走了SystemJS的份额。JavaScript生态系统在过去5年的变化清楚表明,很难预测5年后JavaScript将会成为什么样。React现在看起来占统治地位,但是随时都有可能被新人取代。
Webpack和Express
目前,npm前端使用的最可靠代理可能是Webpack。与Express相比,Webpack从三年前的快速增长,现在已经达到了Express受欢迎程度的一半。
尽管在瞬息万变的JavaScript世界中做出预测是一件危险的事情,但npm社区认为Webpack将继续增长,甚至超过Express,这与目前所看到的新用户比例一致。
几年后,npm可能被认为是一个主要的前端工具,这对于JavaScript来说是个好消息。npm生态系统的所有增长,无论是前端还是后端,对于整体JavaScript都是一个好消息。
如果简单概括,调查结果就四个字:平稳增长。众多框架和工具的强劲增长组成了一门语言的繁荣,JavaScript正在登月。