本文中,我们将一同看看当今 Web 开发的发展趋势,给大家分享我对 2015 年及未来的一些看法、观察和预测。我从 2000 年开始做 Web 技术方面的工作,而近几年主要是做云架构解决方案。作为一名 Web 开发者,我曾在 .Net、Node.js 和 Go 技术栈上开发 Web 应用和 Web 服务。近,我将 Web 技术和开发趋势作为整体研究了一遍,在这里分享一下我的想法和观察结果。
  首先,让我分享一些我所观察到的可用性和体系结构目前的趋势。
  可用性的趋势
  如今,用户体验变得比以往更重要,响应式网页设计(RWD)也成为了网站必备的特性。RWD 能让终用户在不同尺寸的设备上访问网站,包括手机和平板浏览器。有了 RWD 取代移动网站,我们便无需为移动用户单独开发额外的网站。特别是当我们需要把焦点放到如何呈现内容时尤为有用。但如果你是在开发 Web 应用(包含着大量 UI 交互流程)而不是网站时,RWD 帮不了你了。记住 Web 应用与网站是不同的。Twitter Bootstrap 与 Zurb Foundation 算是目前流行的 RWD 框架。如果你要针对移动用户开发 APP 我会建议使用轻量级的框架比如 Yahoo Pure CSS 。
  应用程序架构的趋势
  企业中的移动优先策略同样影响到了 Web 开发架构。当一个组织在开发 Web 应用与 Web 服务时,他们会以自身的移动策略作为主方向调整。且如今,Web API 已成为 Web 应用和移动应用的中心,开发者会在服务器端建立 RESTful 服务,然后基于 RESTful 服务为 Web 和移动开发前端应用。
  API 驱动开发的崛起
  在移动领域,API(特别是 RESTful API)已成为 Web 应用的关键部分,而服务器端的实现已变成薄薄的一层,只提供数据和安全相关的 API 。这些 RESTful API 并不受限于 Web 应用,移动应用同样可以使用。所以说现代 Web 开发人员编写的服务器端代码同时用于移动应用和 Web 应用,给予了我们更多的机会。这里的另外一个趋势是移动后端云服务的兴起,如 Parse和 Azure Mobile Services 等的服务(MBaaS)云平台解决方案。这些 MBaaS 平台可针对多种特定移动后端服务的数据模型提供自动的 RESTful API 。我们可以使用 MBaaS 服务开发 Web 应用,因为它们不仅提供 RESTful API ,伴随着移动 SDK 还提供了 JavaScript SDK 用于 HTML5 客户端。未来,我坚信 MBaaS 服务将广泛用于 Web 应用和移动应用。
  单页面应用程序(SPA)的出现
  当使用 RESTful API 的服务器端受,Web 前端开发便迁移到客户端,且浏览器上的类桌面 UI 是在客户端渲染而不是在服务器端。在 SPA 应用中,前端只需简单的调用 RESTful API 传送数据,然后在客户端构建完整的 UI 。这种情况下,JavaScript 便成为构建 Web 应用的关键技术。SPA 应用的一个优势是我们可以使用杂交移动容器(hybrid mobile container)比如 Phonegap 和 Trigger.IO 很容易地将这些 Web 应用打包成移动应用。这种方法可以应付小型到中型基于数据形式 UI 的应用。于是我们可以用一份代码建立 Web 应用和移动应用了。
  在基于 SPA 的 Web 开发中,JavaScript 已成为关键技术,而且 JavaScript 技能也比以前更加重要。我曾接触过不同框架开发过一些 SPA 应用,并在这种模型下注意到了一些难题。如下:
  当我们在开发大规模 SPA 应用时,对比以前的服务器端方式,现在维护应用变得非常困难。我感觉构建大型 JavaScript 应用真的很难去保持可维护性。
  很难在客户端实现复杂的安全模型,对不同类型的授权角色限制不同访问级别的 UI 。
  我对 SPA 框架的意见
  目前 AngularJS、EmberJS 和 Backbone 是实际使用中受欢迎的几个 SPA 框架。我对这三个框架做了评估并使用其开发过应用。根据我的经验,AngularJS 是产能高的框架,具备构建大型 SPA 应用所需的特性。依愚人之见,使用 MV* 框架做前端开发并不是一个好方法,MVC 不适合大型前端应用。但如今我们在服务器端和客户端都使用 MVC ,我不认为这是佳实践。
  ReactJS – 令人惊叹的前端框架
  当大多数 SPA 框架依然在使用传统的 MVC 模型时,ReactJS 为客户端构建 UI 提供了一种不同的方式。React 是由 Facebook 和 Instagram 团队开发的 JavaScript 库,目的是用来构建用户界面。Instagram 网站的整个前端和 Facebook 网站的一部分都是用 ReactJS 构建的。有趣的是,你可以与其他的前端框架如 AngularJS 和 EmberJS 一起使用 ReactJS 。你可以将 ReactJS 作为 MVC 框架的视图层。但是在实践中,我不建议在传统的 MVC 框架上使用 ReactJS 。ReactJS 引入了虚拟 DOM(Virtual DOM),这是 ReactJS 库令人惊叹的部分,它给渲染 UI 带来了高性能的表现。ReactJS 提供了比 AngularJS 与 EmberJS 等 MVC 框架更高性能的 UI 渲染。你可以利用虚拟 DOM 抽象出可重用的 UI 组件,然后在实际的 DOM 上合成这些组件。虚拟 DOM 让你可以利用 React 在浏览器以外构建 UI 。比如 Facebook 的 React 团队搭建了 Objective C 桥,用于在 iOS 应用上构建 UI 。对于扩展前端应用,我们可以对 React 使用 Flux 架构,这是架构的一套基本惯例,提供了单方向的数据流。我已经对 BackboneJS、EmberJS、AngularJS 和 React 都做了评估并强烈推荐你使用 React 构建用户界面。
  2014 年服务器端 Web 技术栈的趋势
  几年以前,动态类型语言如 Ruby 和 Python 已经吸引了许多创业公司。直到几年前,Ruby on Rails 真是 Web 开发的一场革命。许多创业公司已经利用 RoR 和 Python Web 框架开发出各种创新的产品。但如今有趣的是,由于性能和可扩展性的难题,这些应用程序正被其它的 Web 技术栈重建。在大型应用程序中使用动态类型语言像在喝加了太多糖的饮料。开始的时候,糖的甜味会比较吸引人,但长期来看会伤害到应用程序的健康。今年,我们已经看到很多企业采用 Node.js 尤其是用于构建备受关注的移动应用后端服务。大企业如领英(LinkedIn)和沃尔玛(Walmart)正在使用 Node.js 加强它们的移动后端服务。作为一项新技术,Node.js 真是 2014 年采纳市场的赢家。Node.js 也是移动后端服务(MBaaS)云解决方案的技术栈。今年我们也看到许多基于 Node.js 的命令行工具被用于前端开发。Node.js 的崛起与 Ruby 栈的衰落是今年值得注意的趋势。