- 《架构师》2016年12月
- InfoQ中文站
- 295字
- 2020-06-26 06:05:37
Web不是未来会赢,而是已经赢了
过去20多年来,Web已由一个基本的文档共享网络发展成为诞生之初我们根本无法设想的,无所不能的平台。自面世之日起,Web就在努力迎合用户的各种需求,虽然发展过程中也曾犯过各种错误,但这些问题陆续都已顺利解决。诸如Flash和Silverlight等插件本有机会统治整个市场,因为Web本身当时还在匍匐前进中,很多方面尚不能满足用户的需求。但当智能手机引发的革命使得大家逐渐忘却台式机(和各种插件),转为使用体积更小,同时性能不那么强大的便携设备后,大环境又一次发生了巨变。
“移动”的世界到底是咋回事
距离人们在“水果店”外排队购买初代iPhone到现在已经差不多10年了,Web技术至今也还没有全面成为移动领域的“一哥”。“移动化”的Web能力依然落后于原生应用甚至桌面浏览器。Flash虽然算是死了,但HTML5依然没有因此而能称王。然而越来越多的开发者开始使用这种技术开发自己的移动体验,Gartner称到2016年底,超过50%的移动应用将会使用混合方式开发。
诸如React Native和Phonegap(Cordova)等工具为Web开发者提供了一种使用Web技术构建原生应用的备选方案。这种混合方式在时间和成本方面的效益更高:开发者无需专门为每个移动平台从零开始构建应用,而是可以编写基于HTML5的代码,只须编写一次,少量调整后即可重复部署至iOS、Android、Windows Phone等平台。
谷歌也在想方设法推进Web平台技术的发展。他们通过自家的操作系统Chrome OS作为标杆向大家展示Web技术的各种可能性,甚至向我们展示了App Store本应能做到的一切。Chrome OS完全依赖Web技术,除了可供开发者用在自己的Chrome应用中,由浏览器提供的JavaScript API之外,不包含任何类型的原生备选方案。但Chrome OS并不能算作一种移动平台,尤其是考虑到该系统内建了一个桌面级的浏览器,并且只安装在一些小型笔记本上,因此谷歌又提出了Progressive Web Apps的概念,借此打造易用性更强,更接近原生应用体验的Web应用。理论上这种应用的实际使用效果还不错,并且应该成为未来几年里Web技术的发展方向,但目前这依然仅仅是一个愿景创意,只能用于谷歌自己的Android版Chrome浏览器,该技术还有很长的路要走。
JavaScript的革命
虽然大部分人依然认为JavaScript只是一种前端Web开发技术,但实际上JavaScript已经逐渐渗透至现代化计算领域的每个角落。在我看来,Node是PHP的未来。Node易于学习,易于安装和开发。Node.js唯一欠缺的是托管方面的广泛支持。大部分Web托管服务依然只支持PHP,但Node.js也为想要尝试新技术的托管公司提供了一个好机会。
IoT(物联网)甚至VR(虚拟现实)领域也可以见到JavaScript的身影。知名的JavaScript库Johnny Five就可以用于几乎所有新型的微处理控制器(Microcontroller,也许你喜欢与用其他名字称呼这种技术)。Tessel也很好地证明了JavaScript可以实现的丰富用途,它已经不单纯是一种库,更像是一种依赖JavaScript的完整设备。
去年这时候Mozilla发布了A-Frame。虽然该技术并未获得应有的广泛关注,但这实际上是一种非常让人吃惊的库。基于Three.js构建的A-Frame使得开发者可以创建基于Web的虚拟现实体验。我自己尝试过这种技术,不得不说这个库太伟大了。问题在于VR技术的重要性并不像大家想象中(本应该?)的那么高。也许有朝一日虚拟现实技术会变得极为平常普遍,但也许人们再也不会为其感到激动了。
社区
无论公司或个人,总是需要Web的,应用通常包含的内容还是不如网站那么丰富。例如手机银行,虽然可以在银行的应用中办理很多业务,但通常就有些业务无法支持。网站的成本更低,更易于访问,通常来说开发过程也相对更为简单,为Web技术背后的开源社区在近年来也已经对Web技术进行了大刀阔斧的革新。
诸如jQuery和Bootstrap等框架使得不同技术水平的开发者可以更容易地进行Web开发。一段时间来,似乎接下来需要考虑的就是Angular了,然而该技术在向后兼容性方面还没有达到前任所实现的高度。市面上还有大量都很不错的MV*库,例如Backbone、Knockout、Ember,以及Vue等,因此开发者并不需要固守于Angular,尤其是该技术会使得他们无法继续使用原有的代码。
我认为可以说Web开发的未来主要还会落在React身上。Facebook开发的库在Web开发社区中曾引起热议,经过不断的完善这些库已成为大家的首选,而不像Angular那样做的太过火。我认为,React未来面临的最大挑战在于接受度。因此问题实际上就变成:网站真的需要React吗?
永不停歇的成长
Web技术依然在以稳定的速率成长着,未来很长时间内还会继续维持这样的步伐。目前预计全球有34亿网民,数量已接近全球人口总数的一半。随着另一半人口开始上网,Web技术将再一次遭遇自己最大的宿敌:浏览器的支持。目前大部分新晋网民居住在新兴市场国家,甚至第三世界国家,他们不可能使用装有Chrome 53的全新Macbook上网。如果够幸运,他们使用的可能也仅仅是运行老版Android浏览器的三星Galaxy S2手机。
这就给Web开发者造成了另一个问题:如何让自己的网站能被这些浏览器不支持最新功能,并且网速不快的网民顺利访问。很多企业已经因为类似这样的问题错失了大量潜在用户。据估计到2020年,印度将有另外3.5亿人开始上网,美国人口总数都没这么多。
从此往后
为了拉拢这些新用户,网站需要变得比以往任何时候更轻巧,更易于访问。虽然算不上一个网站,但YouTube Go就是个不错的例子,这是一种轻量级版本的YouTube,专为诸如印度等国家网速不够快的用户打造。你可以关注一下他们是如何通过短时间内进行的一些小幅改动对自己的应用进行优化,使其更容易被网速不高的用户所使用的。这一过程中最难的部分是如何在自己无法获得切身体会的前提下,发现应用中需要改动的部分,并决定具体该如何改动。谷歌CEO Sundar Pichai最近曾提到“对谷歌来说,解决诸如印度用户遇到的此类[问题]甚至让谷歌自己得到了创新灵感”,毕竟有些时候少就是多(Less is more)。因此我认为React在全球采用率方面无法实现jQuery那样的高度,不是因为React不够好,而是因为目前并不需要它。
针对未来的想法
有件事是确定的:Web技术还会继续发展。Web是一种依然在不断扩张的数字化领域,已在我们每个人的生活中占据了越来越大的比重。对于零零后(L世代)来说,Web已经不仅仅是一种技术创新,而成了自己身份的一部分。下一场战争将以Web为战场,下一次革命将发生在Web上,自由世界的下一任领袖将从现在的Web中评选而来。然而Web最令人称道的地方在于它是对所有人开放的。Web不归任何人所拥有,或换句话说,任何人都是Web的主人。但并非所有人都行使了自己的主人翁权利。
也许从今往后的某一天,文盲和非文盲之间的差别不再看文字的运用能力,而是看是否会写代码(书写),或至少能读懂代码(阅读)。那么多人严重依赖自己哪怕连最浅显的理解都不具备的东西,这件事想想就让人感觉恐怖。正如Steve Jobs曾经说过的:“在网上,哪怕全球最小的公司看起来也和最大规模的公司一样大”,这句话直到今天依然是真理。Web比以往任何时候具备更多的潜力。随着越来越多的逻辑开始包含在客户端,随着JavaScript成为Web上的通用语言,你也需要想方设法保护这些网站,因为Web中也将出现越来越多的威胁。
Jscrambler提供了一种运行时应用程序自保护(RASP)解决方案,该方案可为客户端Web应用程序提供有效的保护,防范运行时攻击。在该解决方案的帮助下,用户的Web应用程序可通过针对JavaScript量身打造的反调试和反篡改技术(均为流行的应用程序保护方法)自我防护并检测篡改。