2016 年 javascript 领域中最受欢迎的“明星”们-mile米乐体育
js.org通过比较过去12个月里,在github上增加的星标数,告诉你2016年的趋势。
在2015年,react是社区之王,redux在与flux的大战中获胜。那么,谁是2016年的javascript的新星?
以下图表比较了github在过去12个月中增加的星标数量。js.org分析了bestof.js.org的项目,这是一个与网络平台相关的最佳项目的精选列表。
一. 2016年最受欢迎的项目
概述
通过一年中最热门的10个项目,由此可以很好地了解2016年的web开发环境,因为您会发现:
- 3个ui框架:vue.js、react、angular 2
- 新的node.js包管理器:yarn
- 构建桌面应用程序的领先mile米乐体育的解决方案:electron
- 快速启动新的react项目的mile米乐体育的解决方案:craste react app
- 移动框架:react native
- 最著名的css工具包:bootstrap
- 基于函数概念的状态管理库:redux
- 强大灵活的图表库:d3
以上展现了2016年中,javascript表现出了无处不在,功能多样的特性。
而2016年的王者是……
vue.js项目在去年的github上获得了超过25,000颗星标,将包括react和angular的其他框架甩在身后,一骑绝尘。
10月发布的veu.js的版本2,带来了虚拟dom的性能。
vue.js用于大公司(包括阿里巴巴,中国最大的电子商务公司)的生产,所以你可以认为它是一个安全的选择。
它已经有一个相当成熟的生态系统,包括路由(vue-router)和状态管理库(vuex)。
看来vue.js采用了最好的react(组件方法)和angularjs(模板是html代码增强的框架特性)。
二. 前端框架
前端框架类可能是2016年javascript最累的一个牌行榜,几乎每个月都会出现一个竞争者,但是,这推动了创新的步伐。
确切地说,在这个类别中混合了两种类型的项目:
- 完整的框架包含了所有功能,能够创建一个现代的web应用程序(路由、数据提取、状态管理)。angularjs、angular 2、ember或aurelia都属于这一类。
- 更轻量级的mile米乐体育的解决方案专注于ui层,如react、vue.js、inferno……
我们已经提到了总体排名第一的vue.js,让我们看看其他竞争者。
react及其竞争者
react总体排名第二,前端开发者没有谁可以忽略react及其丰富的生态系统。
react如此受欢迎,它激发了很多其他库,旨在采取最好的react,没有臃肿,提高在浏览器的性能和构建时间。
inferno是这个类别中最受欢迎的项目,它声称是react最快的替代品。
在我们的排名中,紧跟inferno之后,preact也是react的一个不错的替代品。它的生态系统是相当成熟的,例如有一个具有离线功能的bolierplates、路由、compat模块,以便您可以使用preact项目中的任何现有react库。
angular 1和2
angular项目已经拆分为2个存储库,因为angular 2是angular 1的完全重写,即使一些概念保持不变。
angular 2是用typescript编写的,并且利用es6提供一个现代和彻底的框架。
angularjs项目是1.x的分支,它在许多项目中仍然使用,并将继续流行一段时间。
值得一提的是,ember虽然拥有庞大的生态系统,但它的社区并不在前十名。
因此看起来,与其选择“开箱即用”的所有功能的完整框架,2016年开发商更倾向轻量级的方案,并喜欢组成自己的方案——“点菜”。
在2016年调味的更轻的方法,并更喜欢组成自己的mile米乐体育的解决方案“点菜”。
三. node.js框架
2016年,使用以下mile米乐体育的解决方案创建和部署node.js应用程序从未如此简单:
- now
- webtask.io
- stdlib
像gomix这样的项目甚至降低了node.js世界的门槛,使得任何人都可以在浏览器中轻松点击几下来编写和共享 node.js代码。
如果你必须构建一个web应用程序,你会选择哪个框架?
express
当你使用node.js构建web应用程序时,express通常被视为事实上的web服务器。它的哲学(一个可以使用中间件包扩展的简约核心)是大多数node.js开发人员熟悉的。
koa
koa的哲学接近express,但它是使用es6生成器,以避免有时被称为回调地狱的问题。
feathers
feathers是一个非常灵活的mile米乐体育的解决方案,创建一个“面向服务”的架构,它是一个很好的适合创建node.js微服务。
nodal
nodal框架以目标无状态和分布式服务连接到postgresql数据库。
keystone
keystone是我所知得到一个管理客户端并运行得最好的mile米乐体育的解决方案之一,以便管理来自mongodb数据库的内容。管理界面自动从模型生成,具有所有crud操作和精细的过滤器。
sails
sails是一个完整的mvc框架,受ruby on rails的启发(因此名为sails!)。它已经存在了很长时间。它可以与任何类型的数据库(sql或无sql)良好工作。
loopback
loopback是另一个成熟的框架,内置许多函数,包括使用令牌和到任何类型的数据库的连接器的认证。
它的杀手级功能是api浏览器功能,允许开发人员以直观的方式检查所有api端点,并能检查任何用户的令牌。如果你必须构建一个api,这绝对是一个不错的选择。
四. react boilerplates
react是一个伟大的ui库,但使用react和现代web开发工作流工具需要大量的配置。那么如何开始创建一个应用程序呢?
这是react的“boilerplates”和其他“starter kits”提供的答案:
create react app
facebook通过提供一个称为create react app的轻量级方法来解决这个需求,这是一个非常方便的启动一个新的react项目。
dan abramov(redux的创造者,现在为facebook工作)做了一个伟大的工作,在简单性和功能找到了正确的平衡点。例如,没有花哨的样式mile米乐体育的解决方案(只是简单的css),没有服务器端渲染,但是所有的一切,都很好地打包了,开发人员的体验非常棒。
与其竞争者的主要区别是,如果使用create react app,它将成为项目的依赖项,所有的魔法是隐藏的,你看到的只是你的应用程序代码。您可以随时升级依赖关系,它并非只是一个起点。
react boilerplate
命名为react boilerplate具有您需要的一切,包括redux和一些漂亮的离线功能,利用web workers技术。
它让开发人员创建所谓的渐进式web应用程序(progressive web applications,pwa):离线运行的web应用程序,使用一种名为service worker的技术,请阅读nicolásbevacqua的这篇文章。
next.js
next.js由zeit创建,具有可用于创建通用应用程序的服务器端呈现功能(或同构应用程序,如我们在2015年所说),也就是说客户端和服务器端运行的应用程序使用相同代码。
五. mobile
javascript无处不在,你可以使用技术web开发人员已知的任何技术(html、javascript、css)构建移动应用程序。
react native
使用react native,你可以从相同的代码库使用react开发人员熟悉的概念构建ios和android真正的原生移动应用程序。要了解有关构建ios和android应用程序的更多信息,请阅读这本教程。
其他基于cordova的mile米乐体育的解决方案,依靠webview来渲染屏幕,并且不如原生mile米乐体育的解决方案那么高效。 “一次编写,随处运行”,这是开发人员的梦想成真!
ionic
ionic是“混合”应用程序概念的先驱。在后台中,它基于cordova访问移动设备功能。这是一个非常成熟的大型生态系统。
nativescript
nativescript旨在实现与react native相同的目标(使用web技术构建真正的移动应用程序)。它有两种种风格:nativescript core和nativescript angular 2。
前瞻
在2017年密切关注的一个项目:weex,一个构建在vue.js之上的移动跨平台ui框架。
六. 编译器
我们在这里谈论生成任何语言(或javascript的任何变体)的javascript的编译器(或“transpilers”)。它们将代码转换为浏览器(或node.js)可以执行的“标准javascript”代码。
例如,编译器允许开发人员使用最新版本的javascript(es6)编写代码,而无须担心浏览器的支持。
typescript
最时髦的转换器是typescript,它为web开发人员提供了java和c#开发人员使用的静态类型。事实上,angular 2使用typescript增加了更多的牵引力。在javascript中使用类型有优缺点,阅读这些文章,使你自己的观点:
- 你可能不需要typescript
- typescript:缺失的介绍
babel
babel与webpack一起,几乎成为编译es5代码和标准javascript中的库(如react(jsx))使用的模板的标准。最初创建用于编译es6,它成为一个更通用的工具,可以完成任何代码转换,拜一个系统的插件所赐。
flow
flow不是一个编译器,它是一个用于“注释”javascript代码的静态类型检查器。基本上在代码库中使用flow意味着添加注释来描述期望的类型(点阅读更多了解使用flow编写模块)。
它在facebook项目的代码源内使用。因为facebook成为开源世界的主要角色之一(像react、react native、flux、immutable、jest等项目),这意味着很多。
coffeescript
多年来,coffeescript由于其精简语法(灵感来自python和ruby语法),成为最受欢迎的编译器,但它在2016年不太流行,很多开发人员从coffeescript迁移到es6与babel。
七. 构建工具
在2016年,很难想象一个没有任何构建过程的web应用程序。通常需要一个构建过程来编译模板和优化资源,以便在生产环境中运行web应用程序。
webpack
webpack是用于构建单页应用程序的主要工具,它与react生态系统一起使用。新发布的版本2带来了一些令人鼓舞的增强功能(查看这份介绍)。
gulp
gulp是一个通用的任务运行器,可以用于涉及文件系统的任何类型的自动过程,因此它不是webpack或browserify的直接竞争者。
像grunt一样,gulp通过聚合工作:你可以要求它缩小和连接资源列表,但是它不会像webpack或browserify那样处理模块化javascript本身。
然而,它可以很好地与webpack一起工作,即使开发人员倾向于使用npm脚本。
browserify
browserify由于其简单性,受到了node.js开发人员喜爱。
基本上,它需要几个node.js包作为输入,并为浏览器生成一个单一的“构建”文件作为输出。但是似乎一个更有见地的工具像webpack是一个更好地适合web应用程序工作流。
前瞻
2017年的模块捆绑包,强调性能:汇总(rollup)。
它使用es6模块与一个称为树摇动(tree shaking)功能创建捆绑包,只包括您在代码中使用的功能,而不是搬运完整的库。
八. 测试框架
最著名的两个测试框架是jasmine和mocha,但最近的两个项目在2016年有更多的牵引力:ava和jest。
ava
ava,由多产的sindre sorhus创建的强调性能(并行测试)和es6。 ava的语法接近标准测试框架,如tape和node-tap。
jest
jest,另一个facebook项目,在过去的几周里得到了很大的牵引力。它在react社区中是众所周知的,越来越多的人转向jest(阅读这篇故事来了解),它可能成为2017年最流行的测试框架。
jest有内置的良好的模拟能力,而其他测试框架通常依赖于像sinon.js这样的库。
九. ide
关于ide(integrated development environment,集成开发环境),值得一提的是,两个最流行的ide是使用web技术开发的开源项目。
visual studio code
在我们的结果中,microsoft凭借visual studio code遥遥领先。
它提供了一个与typescript和node.js的很好的集成。一些开发人员提到关于开发速度,很感谢intellisense功能(高亮和自动完成的混合)。
在同一句话中提到“开源”和“微软”不再矛盾了!
atom
atom是由github推动的、并且由electron构建(像其他一些桌面应用程序,包括slack桌面客户端),并非远远落后visual studio code。关于atom的一个有趣的事实:它的主要语言是coffeescript!
十. 静态网站生成器
静态网站生成器(static site generators,ssg)是生成一系列.html、.css和javascript文件的工具,您可以在任何简单的web服务器(apache或ngnx)上部署,而不必大惊小怪,或者设置数据库或任何网络框架。正如gatsby网站所说:
就像1995年那样建立网站。
静态网站具备快速性、鲁棒性和易维护性。
ssg非常受欢迎,因为有很多很好的mile米乐体育的解决方案来主持静态网站免费:
- github pages
- gitlab pages
- netlify
- surge
- now static
hexo
在2016年,使用node.js构建的最流行的ssg是hexo。它是一个彻底的ssg,接近cms系统,可用于构建一个博客,如wordpress。它有很多功能,包括国际化插件。
gatsby
新来的gatsby是一个非常有趣的mile米乐体育的解决方案,它从竞争对手脱颖而出,因为它使用react生态系统来生成静态html文件。事实上,您可以组合react组件,markdown文件和服务器端渲染使它非常强大。
总结
尽管存在javascript疲劳™和戏剧(记住“左键门”),但对于社区而言,随着像vue.js和react native项目的兴起,以及像yarn或creat react app的新项目,2016年仍然不啻为一个伟大的年份。
我们一直在谈论的项目,2016年在github得到了吸晴,但真正重要的是开发者的满意度。所以,如果你想要一个更定性的方法,上sacha greif查看javascript调查的结果,它收集了超过9,000的反馈。
以下是我的年度十大选择,代表了在2016年我所喜欢的项目和想法,将在2017年持续增长:
- vue.js:势头强劲,不会停止
- electron
- create react app
- react native
- gatsby
- yarn: 一个快速,可靠和安全的依赖管理,可以取代npm,点此处了解node.js包管理器的状态
- 渐进式web应用程序
- node.js微服务使用像now这样的托管mile米乐体育的解决方案很容易部署
- node.js的演变:最新版本对es6语法提供良好的支持
- 还有一个选择是graphql:据我了解,graphql将有大动作