在过去的20年里,web 从简陋的文档分享网络进化为一个大平台,具有了当初创建它时我们无法想象的能力。自诞生之日起,web 一直在努力适应用户需求,web 的成长过程中,也走过弯路,许多错误都是在后来才被解决的。由于 web 本身还在蹒跚学步,Flash 和 Silverlight 等插件才有了主导市场的机会。而当智能手机革命到来的时候,情形完全改变了,人们抛弃了他们的桌面浏览器(和插件),转移到更加智能化却不那么强大的移动设备上。
关于移动设备
在人们对最初的 iPhone 趋之若鹜之后又过了差不多 10 年,移动 web 前端仍然没有被完全征服。移动 web 的功能依然落后于 native app 甚至桌面浏览器。Flash 已经退出历史舞台但是 HTML5 却还没有成为王者。尽管如此,越来越多的开发者选择使用 HTML5 来开发他们的移动应用。高德纳公司预测,到 2016 年末,超过 50% 的线上移动 app 产品将会采用混合模式。
如 React Natvie 和 Phonegap(Cordova) 这类的工具为 web 开发者提供了非常好的选择,让他们可以使用 web 技术来构建 native app。混合开发模式节省了时间和成本:不需要再为每个平台分别从头构建一个 app,开发者可以选择写基于 HTML5 的代码,一次编写多次部署,同时支持 iOS、Android、Windows Phone 和其他平台。
Google 也在用各种方法推动 web 平台发展。它们自主研发的操作系统 Chrome OS 是证明 web 将来有多强的能力以及 App Store 未来可能会发展成什么样子的最好例子。Chrome OS 完全基于 web,除了使用浏览器提供的可以用在 Chrome App 中的 JavaScript API 外,没有任何别的选择。然而 Chrome OS 不算是移动产品,尤其是它配备了一个桌面级的浏览器,并且只能发布于智能平板电脑,因此 Google 一直支持高可用性以及创造更像 native app 的渐进增强 web app 运动。理论上 Google 在 web app 方面的优化取得了很好的进展并且它确实符合 web 在未来几年应该发展的方向,但是目前这些优化只是一个理想化的版本,它只支持 Google 自己在 Android 下的 Chrome 浏览器,所以还有许多额外的工作要做。
JavaScript 革命
尽管在大多数人的印象中,JavaScript 还只是 Web 前端开发的专用语言,但是它实际上几乎已经征服了现代计算机程序的每一个角落。在我看来,Node 在未来将替代 PHP。Node 易于学习,易于安装也易于使用。Node.js 唯一缺少的东西是被虚拟主机广泛支持。大部分虚拟主机依然只支持 PHP,但是 Node.js 为虚拟主机服务商提供了很好的尝试使用新技术的机会。
JavaScript 也被用于物联网甚至虚拟现实。Johnny Five 是一个著名的 JavaScript 库,它能支持几乎所有新的微控制器(比如 Arduino —— 译者注)。Tessel 是另一个非常棒的 JavaScript 使用范例。它不仅仅是一个库,而且是一整个构建于 JavaScript 之上的设备。
去年这个时候 Mozilla 发布了 A-Frame。虽然它并未引起所期望的关注,但不影响它成为一款令人惊叹的库。A-Frame 构建与 Three.js 之上,赋予开发者创建基于 web 的虚拟现实应用。我亲自试用了了它,我得说它真是很棒的一个库。只是问题在于,虚拟现实的发展并没有大家所想象和期望的那样大。虚拟现实也许在某一天会成为很普遍的东西,但那一天到来时,人们可能不会感到特别兴奋。
社区
公司和个人总是需要 web。App 通常比网站承载的内容要少。拿手机银行做例子(这个例子可能不好,至少在国内不好 —— 译者注)。你可能在 app 中可以做许多事情,但通常不是所有事情。网站成本低、可访问性高和相对容易使用,而且 web 背后的开源社区让它在最近几年中越来越好。
诸如 jQuery 和 Bootstrap 一类的框架让各种级别的开发者都能够上手。曾经一段时间里, Angular 看起来像是下一个将要统治前端的技术。然而,与前一个版本不兼容的 Angular 2 没有达到它前任的高度。除了 Angular 外还有许多其他出色的 MV* 库存在:Backbone、Knockout、Ember 和 Vue 是其中的几个,因此开发者不需要抱着 Angular 不放,尤其是如果他们的旧代码不能继续工作了,还是果断换个新库吧。
我想,公平地说 web 开发的未来将主要依靠 React。这一 Facebook 开发的强大的库像一场风暴席卷了 Web 开发社区并且为自己找到了作为前端库的定位,而不是像 Angular 那样大而全。我认为 React 未来所面临的最大的挑战将是如何更广泛普及。所以,真正的问题是,网站确实需要 React 吗?
永远成长
Web 依然在以稳定的速度成长并将继续这样持续很长时间。截至目前估计,34亿用户使用互联网,这个数字几乎是全球人口数量的一半。随着另一半人口连入互联网,web 将再一次面对它最大的挑战。大部分新用户生活在新兴经济甚至第三世界国家,因此他们不会使用一个全新的安装了 Chrome 53 的 Macbook 上网。如果他们比较幸运,他们将使用三星 Galaxy S2,安装有旧的 Android 浏览器。
这一状况给 web 开发者留下一个问题。他们如何能让网站被这些新用户访问,这些用户的浏览器不支持最新特性,上网速度也不快。许多生意很可能因为这个原因失去了这些潜在用户。预计到 2020 年,另外 3.5 亿印度用户将会使用 web,这比美国的总人口还要多。
从今往后
为了适应这些新用户,网站将需要被制作得更轻量,比以前有更好的可访问性。尽管 YouTube Go不是一个网站,但它是一个很好的例子,它是一个轻量级的 YouTube 版本,专为那些在印度没有高速网络的用户而设。注意他们是如何通过一些不用花费多少时间完成的小变化来优化他们的 app 以使得它具有更高的可用性,适应于这些场景。最难的部分是不站在自己的立场而站在用户的立场上发现你的 app 中需要改变的小细节。Google CEO Sundar Pichai 最近向全世界解释了“为印度人解决问题是怎样鼓舞人心的 Google 创新”,所以也许终究“少即是多”。为什么我不认为 React 将会得到如同 jQuery 那样广泛的全球推广,不是因为它不够好,而是因为它并不是必须品。
未来的想法
有一点我确定,web 不会止步不前。Web 是一个不断扩展的数字领域,它已经很大程度上融入我们的生活。对现在这一代人来说,web 不仅仅是一种技术创新,它是生活的一部分。下一场战争将在 web 上爆发,下一次革命将在 web 上发生。自由世界的下一位领导人正通过 web 被选举。然而,web 最大的价值是它对任何人开放。没有人拥有整个 web,或者反过来说,所有人共同拥有 web。但并不是所有人都能兑现他们对 web 的所有权。
也许有一天,文盲和受教育的区别不再仅仅是能够使用文字,而是能够写代码,或者至少能够理解代码。那么多人依赖于一件他们甚至完全不理解的事物是可怕的。如 Steve Jobs 曾经说过的,“在网络上小公司和大公司看起来没有区别”,这句话到今天仍然正确。Web 比以往任何时候都充满潜力,随着客户端逻辑越来越复杂,由于 JavaScript 是 Web 的语言,你也需要寻找方法来保护你的网站,因为更多的威胁将来自于 JavaScript。 Jscrambler 提供了一个运行时应用程序自我保护(RASP)解决方案,它为客户端 Web 应用程序提供最有效的保护级别,能够保护它们免受运行时攻击。它使用专门为 JavaScript 定制的反调试和反篡改技术,能让你的 web 应用自我保护并检测出非法篡改。
往期精选文章 |
---|
使用虚拟dom和JavaScript构建完全响应式的UI框架 |
扩展 Vue 组件 |
使用Three.js制作酷炫无比的无穷隧道特效 |
一个治愈JavaScript疲劳的学习计划 |
全栈工程师技能大全 |
WEB前端性能优化常见方法 |
一小时内搭建一个全栈Web应用框架 |
干货:CSS 专业技巧 |
四步实现React页面过渡动画效果 |
让你分分钟理解 JavaScript 闭包 |
小手一抖,资料全有。长按二维码关注京程一灯,阅读更多技术文章和业界动态。