【it168 资讯】npm的作用是帮助程序员查找满足需求的javascript库和框架,近日,npm连发三份调查报告,总结了javascript生态圈近一年来大大小小的变故,本文主要针对后端框架展开。
后端的故事很简单:express是编写后端服务的主流解决方案,其余几个大框架相对于express来说都太小了。
另一个清晰的模式是,express在逐渐趋于稳定。过去,所有npm下载量的1.5%基本都是express,现在,这个数字是0.15%的十分之一。然而,与不断下滑的backbone和flux相比,express算是趋于稳定了。
本文讨论的几乎所有框架相较于几年前都是增长的,比如express从2013年初以来已经增长了6000%。之所以这些增长看起来好像是下降了一样,是因为在同一时间内,注册npm机构的库和工具等增长了67,000%,基数变大了。
换句话说,javascript正在以史上前所未有的速度增长着。
写前端的程序员是写后端的二倍,未来哪一部分会更火?
目前,大约83%的npm开发人员在编写前端javascript,而只有41%的程序员在为后端编写代码(这些数字之间有重叠)。前后端开发人员比例为2比1,这说明什么?调查认为,这强烈表明未来前端开发和工具应用将更有前途。
在深入研究这个结论之前,让我们先来看看其他常用的后端框架。
其他后端框架
除了express之外的四大后端框架是:
·koa
·hapi
·sails
·next
这里,koa是express的继承者,是用一套更紧密的设计原则对express的重写。获得可观使用量的同时,增长速度不是很快。
hapi
hapi在2014年底经历了短暂的鼎盛时期。巧合的是,这就发生在npm社区转换自己的网站使用hapi之后,所以有可能npm的代言是有效的。然而,自此以后,hapi一直处于下滑状态,npm自己的网站也正在转移。
sails
顾名思义,sails就是javascript的ruby on rails的克隆。虽然最初在2012年底推出的时候非常流行,但是它遵循着常见的半衰期衰退模式,这表明它不再被新项目所采用。
next.js
next.js是一个相对较新的框架,并且比其他三个讨论的要少得多,它的使用模式有点混乱,所以这里跟踪了它的采用情况,next.js显示出一些稳定增长,值得一试,尤其是因为它使用了react。
npm的前端工具使用历史
在2013年及以前,npm中前端库的使用量非常庞大,从backbone的流行就可以看出来。但是,在express和其他服务器端架构持续增长的同时,backbone开始走下坡路。
自2015年以来,npm注册管理机构的前端使用率再次增长。但是前端和后端在javascript之间的界限是模糊的,部分原因是webpack和babel这样工具的使用。
为了试图弄清楚npm的前端使用情况,我们将看看用来提供前端代码的库,包括:
·babel
·webpack
·browserify
·bower
·requirejs
·systemjs
babel
babel是一个转译器,用于将更现代的javascript版本转换为与node.js中的服务器端javascript以及与浏览器兼容的javascript旧版本。虽然babel非常受欢迎,但它被用于前端和后端应用程序,不是前端使用的可靠代理。
webpack
另一方面,webpack是专门为浏览器提供javascript代码的工具。它的使用率一直与react不相上下。
不过,在2016年中,webpack的使用率开始超过react。这表明,web开发人员已经开始更广泛地采用webpack,而不仅仅是react应用程序。
browserify
在webpack流行之前,browserify开创了在浏览器中使用服务器端javascript的过程。 这在2015年中非常受欢迎,但2016年开始急剧下滑。
对此可能的解释可以在两个工具的设计目标中找到。browserify将node.js api(包括用于许多后端api的填充)包含到浏览器中。webpack是一个更通用的模块系统和编译工具,可以加载图片,css和其他前端资源。因此,对于不是node.js devs的开发者来说,webpack更为有用。
bower
浏览器端模块化javascript的另一个解决方案是bower。bower不仅是将模块放入浏览器的另一种方式,它也是一个完全独立的非npm模块,尽管bower客户端本身是由npm注册中心托管和安装的。
虽然bower的开发人员认为客户端本身具有许多优秀的特性,但他们同意commonjs是大多数npm包所使用的javascript模块格式,是一种更灵活和流行的解决方案。但最终,还是开始逐渐下滑。
(有趣的是,编写bower早期版本的andrécruz创建了npms.io,这个开源的javascript模块搜索引擎被npm所采用,现在npm的官方搜索功能已经启用,andré自己也是npm用户。)
requirejs和systemjs
requirejs是另一种具有自己模块格式的替代装载机,在2013年初颇受欢迎,但与bower同时开始下滑。
2015年发布的systemjs增长缓慢,直到2016年中期,从未真正获得过推动力。
曾经是主要力量的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正在登月。