写点什么

Web 不是未来会赢,而是已经赢了

Web has won

  • 2016-11-15
  • 本文字数:3218 字

    阅读完需:约 11 分钟

过去 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 量身打造的反调试和反篡改技术(均为流行的应用程序保护方法)自我防护并检测篡改。

作者 Niels Klom 阅读英文原文 The Web Is Not Tomorrow But Today


感谢徐川对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们。

2016-11-15 16:403507
用户头像

发布了 283 篇内容, 共 107.7 次阅读, 收获喜欢 62 次。

关注

评论

发布
暂无评论
发现更多内容

王者荣耀商城异地多活架构设计

爱晒太阳的大白

推荐 6 个实用的 Vue 组件库

devpoint

JavaScript Vue 前端开发 7月月更

Azkaban 安装文档

怀瑾握瑜的嘉与嘉

Azkaban 7月月更

Flutter 使用 AnimatedSwitcher 做场景切换

岛上码农

flutter ios 前端 安卓开发 7月月更

数字化转型的两种误区

奔向架构师

数据仓库 数据资产 7月月更

以太坊升级在即,Arbitrum 引领 L2 Summer 新航向

TinTinLand

【刷题记录】13. 罗马数字转整数

WangNing

7月月更

函数初认识-下

芒果酱

C语言 7月月更

C++ Workflow异步调度框架 - 性能优化网络篇

1412

c++ 开源 workflow 异步调度 网络框架

博弈论(depu)与投资(40/100)

hackstoic

投资

李宏毅《机器学习》|1. Introduction of this course(机器学习介绍)

AXYZdong

机器学习 7月月更

HarmonyoS快速入门:Hello world

逝缘~

7月月更

数据库每日一题---第25天:银行账户概要 II

知心宝贝

数据库 云计算 前端 后端 7月月更

基于CSS mask-image 实现炫酷图片过渡效果之星球大战

南城FE

前端 动画效果 7月月更 过渡

qt 实现遍历文件夹

小肉球

qt 7月月更

MatrixCube揭秘102——300行实现的完整分布式存储系统MatrixKV

MatrixOrigin

MatrixOrigin MatrixOne 矩阵起源 MatrixCube MatrixKV

Spring项目中如何正确处理对象依赖

技术小生

spring 7月月更

C#入门系列(二十二) -- 面向对象之多态

陈言必行

7月月更

TCP拥塞控制详解 | 7. 超越TCP

俞凡

算法 网络 TCP拥塞控制

Arbitrum Nova 发布!打造低成本高速度的游戏社交领域专用链

TinTinLand

python小知识-rethinking python 迭代器

AIWeker

Python python小知识 7月月更

模块7(王者荣耀商城异地多活架构设计)

Geek_701557

MFC|框架下自绘CEdit控件

中国好公民st

c++ 7月月更

getchar()

謓泽

7月月更

MatrixCube揭秘 101——MatrixCube的功能与架构

MatrixOrigin

分布式 MatrixOrigin MatrixOne 矩阵起源 MatrixCube

读书笔记之《深入理解Java虚拟机:JVM高级特性与最佳实践》(下)

蔡农曰

Java 后端 JVM 后端技术 Java 开发

C++ Workflow 异步编程框架 - 性能优化上篇

1412

c++ GitHub 开源 异步编程 workflow

Tortoisegit工具的安装和使用

空城机

git Tortoisegit 7月月更

OpenCV编程:OpenCV3.X训练自己的分类器

DS小龙哥

7月月更

使用Java获取给定日期所在周的第一天

李印

Java 小工具

Okaleido或杀出NFT重围,你看好它吗?

BlockChain先知

Web不是未来会赢,而是已经赢了_语言 & 开发_Niels Klom_InfoQ精选文章