本文转载自:众成翻译
译者:zxhycxq
连接:http://www.zcfy.cc/article/2410
原文:https://risingstars2016.js.org/javascript
【译者注:】因格式问题,图片相关的内容,请参照英文原文:https://risingstars2016.js.org/css
JavaScript 社区在创新方面全速前进,几个月后,曾经的趋势就会过期。html
2016 已经结束了,你可能会想本身错过了一些重要的东西?别担忧,咱们正回顾一下主要的趋势。前端
让咱们看看 by the numbers 这个在2016年推进的项目,它比较了在过去12个月,Github上 增长 的 stars 数量。vue
在 2015年, React 成为最大赢家 , Flux 赢得了Flux实现的风暴之战。java
谁是2016年JavaScript后起之秀呢?node
1. 2016最流行的项目react
2. 前端框架webpack
3. Node.js 框架git
5. Mobile
6. 编译器
7. 构建工具
8. 测试框架
9. IDE
10. 静态网站生成器
下面的图表对比了在过去12个月中,GitHub上 增长的 stars。
咱们分析了来自bestof.js.org (关于web平台的最佳项目清单)的项目。
经过检查去年中最火的10个项目,你能够获得一个很好的关于2016年Web开发环境是怎么样的回顾,你会发现:
一个新的 node.js 包管理器: Yarn
构建桌面应用的领先解决方案: Electron
快速开始一个新 React 项目的方案A Create React App
移动框架: React Native
最有名的 CSS 工具包: Bootstrap
基于函数式的状态管理库 : Redux
一个强大而又灵活的图标库: D3
它讲述了不少关于JavaScript在2016年无所不在和用途普遍的事。
Vue.JS 去年在 Github 上得到了超过25,000 个stars, 这意味着一天72个stars,这比包括React和Angular在内的其余框架都多。
vue 2, 利用虚拟DOM的性能,在去年十月份发布。
Vue.JS 被一些大公司(包括阿里巴巴-中国最大的电子商务公司)在生产中使用,因此,你能够认为这是一个安全的选择。
它已经拥有至关成熟的生态系统,包括 router (vue-router) 和一个状态管理库 (Vuex).
看起来 Vue.JS 集 React (组件方法)和 AngularJS (由框架特点加强的html代码模板)于一身.
前端框架类应该对 JavaScript 疲劳 负有必定责任。
看起来,每月一个新的竞争者出现并发出本身的声音,推进创新的步伐!
确切地说,在这个类别中,混合了两种类别的项目
咱们已经注意到Vue.JS(整体第一),让咱们看下其余的竞争者。
React 位列第二,没有前端开发者能够忽视React和它的生态系统。
React 是如此地受欢迎,以致于它鼓舞了众多其余库意图取其精华,去其糟粕,旨在提升浏览器的性能和构建时间。
Inferno 是这个类别中最流行的项目,它声称是最快的可替代React的项目。
在咱们的排名中,紧跟 Inferno 以后, Preact也是一个良好的React 替代品。
它的生态系统至关成熟,例如,具备离线功能的模板、路由、模块,以致于你能够在你的项目中使用任何你Preact项目里面的已存在的React库。
Angular 项目分为2 个库,由于 Angular 2重写了Angular 1,尽管一些概念保持相同。
Angular 2 用TypeScript编写,利用ES6 实现现代化、完全的框架。
AngularJS是1.x的分支, 它仍然在许多项目中使用,并将在一段时间内保持流行。
值得注意的是 Ember, 尽管有强大的生态系统和社区,依然未进入前10.
如此看来, 与其选择”开箱即用“的包含全部特征的框架,
开发者们在2016年 ,更加喜欢选择他们本身的解决方案,”按菜单点菜“。
在2016年,使用如下解决方案建立和部署node.js应用程序从未如此简单
像Gomix项目更是下降了Node.js的世界的门槛,
使得任何人均可以轻松地从浏览器中“点点点”书写和分享node.js代码。
那么问题来了,若是你想开发一个web程序,应该选择哪一个框架呢?
当你使用 node.js 构建Web应用开发,Express常常被考虑为事实上的web服务器。它的(一个简单的核心,你可使用中间件件扩展)哲学为大多数node.js 开发者所熟悉。
Koa这些接近于 Express。但它用ES6 生成器构建,避免有时被称为回调地狱的问题。
Feathers是一种建立“面向服务”的体系结构的很是灵活的解决方案。
这是建立一个Node.js微服务不错的选择。
Nodal 框架的目标是无状态和分布式服务链接到PostgreSQL数据库。
Keystone是我所知获得一个管理客户端运行的最佳解决方案之一 ,
目的是管理从MongoDB数据库来的内容。
管理界面从模型自动生成,具备全部CRUD操做和友好的过滤器。
Sails是一个完整的MVC框架。
受Ruby on Rails的启发(所以名为Sails!).他已经问世很长时间了。
能够和任何类型的数据库使用,SQL或no-SQL。
Loopback是一个有不少的内置功能,包括须要token验证的权限和链接到任何数据库的另外一个成熟的框架。
他的杀手级特性是 API 探测功能,经过检查任何用户token的功能,以直观的方式让开发人员检查全部API端点。
若是你必须构建一个API,这绝对是一个不错的选择。
React 是一个伟大的 UI 库,但使用React和现代Web开发工做流工具须要大量的配置。
那么如何开始建立一个真实世界的应用程序呢?
这是 React "模板生成器" 和其余的“初学者工具包”给出的答案···
Facebook 经过提供一个轻松的叫作建立 React App方法实现须要,
这是使得启动一个新 React 项目很是方便。
Dan Abramov (Redux的创造者,如今在Facebook工做)作了一项伟大的工做:
找到简单和特征之间的正确平衡。
例如,没有花哨的样式解决方案(只是简单的CSS),没有服务器端渲染,
但一切都被很好的打包,开发体验很是棒。
与其竞争者的主要区别是,若是使用Create React App,它将成为项目的依赖项,
全部的黑科技都是隐藏的,你看到的只是你的应用程序代码。
您能够随时升级依赖关系,它不仅是一个开始。
名为React的样板文件有您须要的一模板生成器切,
包括Redux和一些友好的离线功能,很好地利用了web工做者的技术优点。
它让开发人员建立名为渐进式web应用(或PWA)的Web应用程序:
使用名为Service Worker的技术运行的离线Web应用程序,
阅读来自 Nicolás Bevacqua的这篇文章 .
Next.js由忙碌的Zeit人员建立,具备服务器端渲染特性,
可用于建立通用应用程序(或同构应用程序,如咱们在2015年所说),
亦即,在代码客户端和服务器端用差很少的代码运行应用程序。
JavaScript无处不在,你可使用已知的web开发技术 (HTML, JavaScript, CSS)构建原生移动应用。
经过React Native,在一样的代码基础上,你能够构建IOS和Android原生移动应用,
使用React开发人员熟悉的概念。
想了解更多关于构建IOS和Android应用,阅读这个教程
其余解决方案,基于 Cordova,依赖Webview来渲染屏幕,而且不如原生解决方案高效。
"一次编写,处处运行"... 开发者梦想成真了!
Ionic 是混合应用理念的先锋,在底层,它基于Cordova来访问移动设备功能。
它很是成熟,有着强大的生态系统。
NativeScript旨在实现与React Native相同的目标(使用Web技术构建真正的移动应用程序)。 它有两种风格,NativeScript Core和NativeScript + Angular 2
一个在2017年密切关注的项目: Weex,
一个构建在Vue.JS之上的移动跨平台UI框架。
咱们在这里谈论生成任何语言(或JavaScript的超集)的JavaScript的编译器(或“transpilers”)。
他们将代码转换为浏览器(或node.js)能够执行的“标准JavaScript”代码。
例如,编译器容许开发人员使用最新版本的JavaScript(ES6)编写代码,而没必要担忧浏览器支持。
最流行的转译器是 TypeScript,它带给web开发者来自java和c#的静态类型。
事实上, Angular 2使用TypeScript 增长了更多的特性。
这儿有关于在js中使用类型的利弊,阅读这两篇文章,提出你本身的观点。
Babel与Webpack一块儿,几乎成为编译ES5代码和标准JavaScript中的库(如React(JSX))所使用的模板的标准。
最初建立的编译ES6,它成为一个更通用的工具,能够完成任何代码转换,感谢这个插件系统。
Flow不是一个编译器,它只是一个静态类型检测工具,用来“标注”JavaScript代码。
在代码中使用Flow只是增长对于意料之中类型的注释(阅读这里更多关于使用Flow写模块)
它使用Facebook内部的源代码项目,(React,React Native,Flux,Immutable,Jest等)Facebook成为开源世界的主演之一。
这意味深长。
CoffeeScript和其精简的语法,受 Python 和Ruby 语法启发,但它在2016年不太流行,
大量的开发者经过使用Babel从 CoffeeScript 转移到ES6。
在 2016年,咱们很难想象一个没有任何构建过程的Web应用。
一般须要一个构建过程来编译模板和优化资源,以便在生产环境中运行Web应用程序。
Webpack 是被用来构建单页应用的主要工具,在React生态系统中运行,
新发布的版本2带有一些有前途的加强功能(查看本文介绍 introduction)
Gulp Gulp是一个通用的任务运行器,能够用来处理任何形式的自动化过程包括文件系统,所以它不是Webpack或Browserify的直接竞争者。
相似于 Grunt,Gulp经过聚合工做:你能够要求它压缩和合并一系列资源,但它不会像Webpack或Browserify那样本身处理模块化的JavaScript。
然而,它能够很好地与webpack,即便开发人员倾向于使用npm脚本。
Browserify,因为其简单的特性,一般深受node.js开发者的喜好。
基本上,它须要几个node.js包做为输入,并为浏览器生成一个单一的“构建”文件做为输出。
可是,彷佛像Webpack同样的工具,更适合Web应用工做流。
在2017年应该关注的模块管理器,它强调性能: rollup.
它使用ES6模块及一个称为”Tree shaking “功能建立bundle,
只包括您在代码中使用到的功能,而非传输整个库。
最有名的两个测试框架是 Jasmine 和 Mocha, 但最近两个项目在2016年有更多的吸引力: AVA 和 Jest.
AVA, 由多产的 Sindre Sorhus建立的强调性能(并行测试)和ES6。
AVA的语法接近标准测试框架,如Tape 和 Node-tap。
Jest,另外一个 Facebook 项目,
在过去几周里有不少吸引力。 在React社区众所周知,愈来愈多的人转向Jest(例如阅读这个故事 ),
它可能成为2017年最流行的测试框架。
Jest内置了良好的mocking 功能,而其余测试框架一般依赖于[Sinon.JS](http://sinonjs.org/)这样的库。
关于 IDE ,值得一提的是,最流行的两个IDE是使用Web技术开发的开源项目。
在咱们的调查结果中,微软以Visual Studio Code带路。
它提供了关于 TypeScript 和 node.js的良好整合.
一些开发人员提到开发速度的提高,感谢IntelliSense功能的改进(整合了高亮和自动完成).
微软和开源在同一句话里出现,没毛病!
Atom, 由Github推出,
利用 Electron 建立(相似于其它的桌面应用,包括桌面客户端),并不亚于Visual Stdio Code。
关于 Atom 有趣的事实是: 它主要的语言是 CoffeeScript!
静态网站生成器是生成一系列.html, .css 和 JavaScript文件的工具,
您能够在任何简单的web服务器(Apache或NGNX)上部署,而不用大惊小怪,或者设置数据库或任何web框架。
正如比尔盖茨所说:
Build sites like it's 1995
静态网站快速,强大,易于维护。
SSG很是受欢迎,由于有不少很好的免费解决方案解决静态网站:
在2016年,利用node.js构建的最流行的SSG就是Hexo,它是个一站式SSG,
接近于像Wordpress这样的CMS系统,
他有不少功能,包括国际化插件。
新出的Gatsby是一个很是有趣的解决方案,它由于使用React生态系统来生成静态html文件,从竞争对手脱颖而出。
事实上,您能够组合React组件,Markdown文件和服务器端渲染,这使它很是强大。
尽管 JavaScript 疲劳™ 和 戏剧事件 (还记得 "leftpad gate"),
随着如 Vue.JS 和 React Native项目的崛起,
以及新项目如 Yarn 或Create React App.
对社区而言,2016是一个伟大的年份,
咱们一直在谈论2016年Github上的项目,可是更重要的是是开发者的满意度。
那么,若是你想了解更多,请看Sacha Greif的JavaScript现状调查,
咱们已经收集了超过9,000份答卷。
是时候考虑2017年的后起之秀在哪里了?
如下是我精选的10个项目,在2016年我喜欢这些项目和观点,2017年将保持增加:
vue.js势头将不会中止:
Electron
Create React App
React Native
Gatsby (用于构建这个页面!)
Yarn:一种快速、可靠和安全的依赖包,能够代替NPM、可在这儿查阅node.js包管理工具的状态
“渐进式web应用”概念
Node.js的“微服务”解决方案,可以更好实现部署,例如Now
Node.js的升级:最新一版对ES6语法有很好的支持
压轴的是graphql:个人朋友告诉我,可能要搞个大新闻!