速来报名!AICon北京站鸿蒙专场~ 了解详情
写点什么

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:403499
用户头像

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

关注

评论

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

ZooKeeper 分布式锁 Curator 源码 01:可重入锁

程序员小航

zookeeper 源码 分布式锁 curator

Redis on AEP 实践

BUG侦探

redis 傲腾AEP

数仓是如何与“夏令时”愉快的玩耍!

华为云开发者联盟

数仓 时区 GaussDB(DWS) 夏令时 夏令

从零开始学习3D可视化之3D界面

ThingJS数字孪生引擎

大前端 可视化 3D 3D可视化 数字孪生

事件Event:带你体验鸿蒙轻内核中一对多、多对多任务同步

华为云开发者联盟

鸿蒙 任务 OpenHarmony 事件 LiteOS-M

邮件误删不用怕,试试这个方法帮你找回来

淋雨

EasyRecovery 文件恢复 硬盘数据恢复

深度解析HashMap底层实现架构

华为云开发者联盟

Java hashmap 底层 底层架构 Map接口

面试官:order by 是怎样排序的?怎么优化?

一个优秀的废人

Java MySQL 数据库 后端 order by

视觉生产技术入门篇

若尘

视觉 7月日更

干掉 Postman?测试接口直接生成API文档,这个工具贼好用

程序员小富

Java 编程 程序员 开发工具 大学生

科创人|决策易赵祝维:从满足应用需求到服务业务目标,从SaaS服务商到业务合作伙伴

科创人

商业智能BI,会成为下一个风口吗?

瓴羊企业智能服务

阿里云 数据中台 数据分析 BI 商业智能

【从零开始学爬虫】采集京东商品信息

前嗅大数据

大数据 爬虫 数据采集 采集商城 采集京东

电脑有什么超简单的录屏方法

淋雨

视频剪辑 Camtasia 录屏软件

10分钟理解REACT概念

加百利

React 7月日更

ClickHouse大数据领域企业级应用实践和探索总结

王知无

了解一下缓存分类、更新、清理策略以及如何处理缓存带来的风险

Jokay

缓存 缓存穿透 缓存击穿 缓存雪崩 缓存设计

从Encoder-Decoder模型入手,探索语境偏移解决之道

华为云开发者联盟

神经网络 ASR 语境偏移 CLAS ASR模型

网络攻防学习笔记 Day76

穿过生命散发芬芳

网络攻防 7月日更

阿里云低延时直播 RTS 能力升级 让直播推流效果更佳

阿里云CloudImagine

阿里云 音视频 直播技术 视频云

我可以减肥失败,但我的 Docker 镜像一定要瘦身成功!

尔达Erda

Docker 开源 云原生 镜像 瘦身

Vue进阶(幺陆贰):vue render函数介绍

No Silver Bullet

Vue 7月日更 render

MySql 通过定义变量更新多表

Flychen

华为云GaussDB(for openGauss)推出重磅内核新特性

华为云开发者联盟

高可用 华为云 内核 GaussDB(for openGauss) 存储引擎

北鲲云超算与传统的超算中心有什么不同?

北鲲云

Ubuntu Server 20.04搭建Redis集群

玏佾

redis redis集群 搭建 redis cluster

测试开发之系统篇-常用系统命令

禅道项目管理

测试 命令 测试开发

HarmonyOS Connect伙伴峰会重庆站举办 生态建设持续完善

科技汇

名列GitHub必看榜!腾讯架构师纯手敲Spring Boot高级进阶笔记

Java架构追梦

Java 架构 腾讯 面试 springboot

MapReduce的参数优化

大数据技术指南

7月日更

爬虫入门到放弃02:如何解析网页获取数据

叫我阿柒啊

爬虫 CSS选择器 xpath lxml

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