2015年,软件开发界发生了很多变化。有很多流行的新语言发布了,也有很多重要的框架和工具发布了新版本。下面有一个我们觉得最重要的简短清单,同时也有我们觉得值得你在2016年花时间精力去学习的新事物的一些建议。
大趋势
在过去的几年里,有一个越来越明显的趋势是web应用的商业逻辑逐步从后端转移到了前端,然后后端变得只需要处理简单的数据API。这就让前端开发框架的选择变得尤为重要了。
另外一个重要的改变是2015年发布的Edge浏览器。这是IE的替代品,拥有全新的界面和更好的性能。跟IE不一样的是它同样采用了跟FireFox和Chrome一样的快速发布策略。这让JavaScript开发者社区能够以周为单位获得最新版JavaScript和Web标准特性支持而不是像过去一样需要等很多年。
语言和平台
Python3.5在今年发布了,带来了很多新特性比如Asyncio,为你带来了类似node.js的事件机制,还有typehints。鉴于Python3终于真正地火起来了我们强烈建议你替换掉Python2。几乎所有的库都已经支持Python3了,所以现在是一个升级历史遗留代码的好时机。
PHP7是一个重要的新版本,这个版本修复了很多问题并且带来了新特性和性能提升(看看概览)。PHP7大约比PHP5.6快2倍,这对一些大型项目还有WordPress和Drupal之类的CMS系统影响很大。我们强烈推荐PHP之道,已经更新到最新的PHP7版本。如果你需要更快的速度并且不介意换一个解释引擎的话,可以试试Facebook在用的HHVM。
JavaScript也以ES2015标准(大家通常叫做ES6)的形式发布了更新。为我们带来了激动人心的新功能。感谢大多数浏览器版本的快速更新,对ES2015的支持已经非常棒了,并且还有Babel.js这样的工具可以让你的新代码跑在低版本浏览器上。
Node.js在这一年变化很多,开发者社区曾经分裂成Node.js和io.js,然后又再度合并。经历过这些之后的结局就是我们得到了一个有很多代码贡献者积极维护的项目,并且拥有了两个版本的Node:一个稳定的LTS(长期支持)版本,这个版本注重稳定性,比较适合长期项目和大公司,和一个非长期支持但是最快实现新特征的版本。
Swift2在今年初发布了。这是Apple出品的旨在简化iOS和OSX开发的现代编程语言。几周前,Swift正式开源并已经兼容Linux。这意味着你可以用它来编写服务端应用了。
Go1.5在几个月前发布了,并带来了重大的架构调整。在2015年它变得越来越流行并被早期创业项目和开源项目所采纳。这门语言是非常简单的,所以花一个周末你就能学会。
TypeScript是一个可编译成JavaScript的静态类型语言。这是由微软开发的,所以跟VisualStudio和开源的VisualStudioCodeeditors完美地集成了。它很快就要大红大紫了,因为即将到来的Angular2就是用它写的。静态类型对大型团队的大型项目特别有用,所以如果你正在大型团队中做大型项目,或者仅仅出于好奇,你也应该尝试一下TypeScript。
如果为了好玩儿,你也可以试试某种函数式编程语言比如Haskell或者Clojure。也有有趣的高性能语言比如Rust和Elixir。如果你在找一份程序员的工作的话,职业开发语言比如Java(在第8版中有一些很好的新特性)和C#(感谢VisualStudioCode和core实现了跨平台开发和运行)都值得你在2016年投入时间。
挑一个或几个学习:Python3,Go,PHP7,ES2015,Node.js,Swift,TypeScript
JavaScript框架
JavaScript框架是web开发技术栈中非常重要的一部分,所以我们单独拿一小节来说这个。今年有两个新标准——ServiceWorkers和WebAssembly,基本改变了现代WebAPP的开发方式。还有一些我们觉得你在2016年应该保持关注的框架新版本发布。
Angular.js已经成为了大型企业首选的JavaScript框架。这个框架即将发布下一个大版本的消息相信大家已经听过一段时间了,在今年初的时候Angular2发布了开发者预览版。相对Angular1而言是一次颠覆性的重构,而对我们而言带来了巨大的改进。一旦正式发布就很有可能成为企业应用开发框架的首选,所以Angular2的开发经验将会是你简历里很好的一个加分项。我们建议再等几个月直到最终版正式发布之后才用于生产,不过你不妨现在就读一读他们的快速上手指南。
React在2015年里持续升温并且持续升级,越来越多的新项目采用它开发。几个月前他们发布了新的开发工具。Facebook还发布了用于开发支持Android和iOS平台原生应用的ReactNative框架,这个框架使用了原生界面配合运行在后台的JavaScript线程实现基于React开发原生应用。可以参考我们今年发表的React初级教程。
Polymer1.0是在5月份发布的。这是第一个稳定且可用于生产的版本.Polymer主要是基于WebComponents标准,这是一份将HTML,JS和CSS打包成独立组件并便于快速引用的标准。目前只有Chrome和Opera支持WebComponents标准,但是Polymer搞定了浏览器兼容性问题。
Ember.js也发布了一个新版本。Ember2带来了模块化功能、废弃了一些旧特性并提升了性能。Ember遵循语义化版本并且开发团队尽可能保证大家能够平滑升级。如果你需要一个稳定且易于升级的框架的话,Ember是个不错的选择。
挑一个或几个学习:Angular2,React,Ember.js,Polymer,WebComponents,ServiceWorkers
前端
Bootstrap在过去的一年里变得更加流行了,正在成为Web开发的标配。使用SASS并支持flexbox的第四版将在几个月之后发布,官方保证可以从V3平滑升级(不会像2年前从v2升级到v3那样),所以尽管放心,你学的第3版的相关知识照样会适用于第4版。
Foundation是另一个可替代Bootstrap的前端框架。第6版在年初的时候发布了,这个版本主要侧重于模块化,你可以根据需要定制自己需要的部分以便缩短加载时间。
MDL是一个Google官方发布的用于开发materialdesignwebapp的框架。这个框架在今年初发布并和Polymer目标相似,但是更容易上手。我们曾经写过一篇精彩的MDL与Bootstrap差异总结。
CSS预处理器也在持续改良。LESS和SASS是当下最流行的两个,大部分功能都差不多。但是,最新的Bootstrap4都已经转向了SASS,所以2016年要学的CSS预处理器中SASS获得了一些优势。当然了,也还有更新的PostCSS工具值得留意,但是我们强烈建议先掌握了预处理器再来学这个。
挑一个或几个学习:Bootstrap,MDL,Foundation,SASS,LESS,PostCSS
后端
这几年的Web开发有一个非常明显的趋势。越来越多的应用逻辑转移到了前端,然后后端仅仅是API。然而传统的后端生成页面的应用依然还有生存空间,所以我们觉得学一个经典的全站框架依然是非常重要的。
关键取决于你更喜欢那种语言,可选择的非常多。用PHP你可以选Symfony,Zend,Laravel(还有Lumen,这是新一代专注于API开发的框架),Slim等。用Python有Django和Flask。用Ruby有Rails和Sinatra。用Java有Play和Spark。用Node.js你可以选择Express,Hapi和Sails.js,还有Go语言的Revel。
AWSLambda去年就已经发布了,但是这个概念到现在才稳定并能用于生产。这是一种可无限扩展的完全取代传统后端服务器的云服务。你可以根据API被访问时的特定条件或者路由来定义不同的响应方法。这意味着你可以完全不用管服务器。
另一个趋势是静态站点生成器比如Jekyll和Octopress(这里有一个完整的同类清单)。这类工具的主要功能是把一堆文本和图片文件渲染成一个完整的静态网站。那些以前通常自己搭一个Wordpress博客程序的开发者现在更喜欢事先生成并直接上传一个静态网站。这样会更加安全(没有后端服务器也不需要数据库)并且性能非常好。结合MaxCDN或CloudFlare之类的CDN服务可以让用户就近访问,明显减少等待时间。
挑一个学习:传统的全栈后端框架,AWSLambda,一种静态生成器
内容管理系统(CMS)
我们主要介绍两种最流行的CMS系统。都是用PHP写的并且易于部署和上手。他们都因为PHP7的发布获得了明显的速度提升。
最近几年Wordpress已经变得早就不仅仅是个博客程序了。它是一个成熟的CMS/框架,配合插件可以做任何一种网站。高质量的Wordpress皮肤是一个巨大的市场,很多自由职业者以Wordpress相关开发为生。配合类似WP-API之类的项目你可以把Wordpress变成一组RESTAPI。
Drupal8在今年发布了。这是一次侧重现代开发最佳实践的重构。使用了Symfony2组件、Composer包管理器和Twig模板引擎。成千上万的网站在使用Drupal,它确实是以内容为主的门户网站的一个很好的选择。
数据库
这一年Web开发社区对NoSQL数据库失去了一些热情,重新回到了关系型数据库比如Postgres和MySQL身边。这方面著名的例外是RethinkDB和Redis,他们都很火,我强烈建议你在2016年都试试。
MySQL是最火并且大部分主机供应商都支持的开源数据库。在5.7版里,MySQL也提供了JSONcolumns来存储非关系型数据。如果你刚开始接触后端开发,你可能正在找连接到服务器已安装的数据库的方法。很可能是旧版本的,所以你没办法尝试JSON类型数据。MySQL已经包含在了很流行的XAMPP或MAMP之类的软件包里,所以上手很容易。
挑一个学习:Redis,RethinkDB,MySQL/MariaDB,PostgreSQL
移动应用
移动平台一直在进步并且智能机的硬件配置现在跟低端笔记本的性能差不多了。这对于hybrid移动开发框架来说是个好消息,基于web技术开发的移动应用将得到更加顺滑、更像原生的体验了。
我们曾经写过一篇不错的Hybrid应用开发框架概览你或许会感兴趣。最火的Ionic框架和Meteor都在最近发布了1.0版本且都适合做移动应用开发。Facebook开源的ReactNative,可以在后台JavaScript进程里运行React组件并更新原生的UI界面,让你可以用几乎同一套代码同时写iOS和Android应用。
挑一个学习:Ionic,ReactNative,Meteor
编辑器和开发工具
Atom在今年发布了1.0。它是一款使用web技术开发的免费且功能强大的代码编辑器。它背后有一个很多大开发者社区(译者注:github)提供了很多扩展包。它提供好用的自动完成并集成了代码重构和校验工具。差点忘了它还有很多漂亮的皮肤可以选择,并且你可以自己写CoffeeScript和CSS来定制自己喜欢的皮肤。Facebook已经这么干了,并且发布了名为Nuclide的编辑器。
微软在今年年初发布的VisualStudioCode给了大家一个惊喜。这是一款支持多种语言并兼容Windows,Linux和OSX平台的轻量级IDE。它提供了强大的智能代码检查并集成了ASP.Net和Node.js的调试工具。
NPM,Node.js的包管理器,火得一塌糊涂并已经成为了前端和node开发者的标准包管理器。这是帮你的项目管理JavaScript依赖最简单的方法并且上手很容易。
目前哪怕是一个人开发也有必要用Git。它的分布式模型让你可以把任何一个文件夹变成一个版本控制仓库,然后你可以把这个仓库发布到Bitbucket或Github,同步到其他电脑上。如果你还没用过Git,我们强烈建议你把它加入你2016年需要学习的清单里面。
挑一个学习:Atom,VisualStudioCode,NPM,Git
搞物联网
树莓派基金会提前给我们送来了圣诞礼物,RaspberryPIZero一种只卖5美金的高性能电脑发布了。它搭载了Linux,所以你可以把它变成一台服务器,一个家用自动化装置,一面智能镜子,或者把它集成到别的电器里面打造一个你梦寐以求的能联网控制的咖啡机。2016年是你应该拥有树莓派的一年。