百花齐放的工具是Web的未来
lietoumai opened this issue · 0 comments
免责声明:我在脸书上班,玩React.Js 和Web 标准
我FO了很多网路从业者,和他们一样,我在这个领域沉浸多年。他们是我学习的榜样和明灯。然而,每隔一段时间,我就能看到一些老生常谈:
_Web平台已经足够好了,人们只是没有善加使用_
在90年代和2000年,这个陈词滥调被一遍又一遍的重复。他们中的许多人现在都在浏览器团队和web标准上。这些是网络理想主义者。但是我偏偏觉得,这种心理正在扼杀Web.
修辱
IMHO,这种网络观点是很带侮辱性的。它忽略了那些大量试图让网络为他们工作的优秀工程师。当Facebook入乡随俗的时候,这些人认为这是由于缺乏人才或努力。相信我,如果你看过那些所有尝试过并且被遗弃的工作,从而使得Facebook在移动端工作,你会更明白web还没有准备好。类似的情况在世界其他地方的公司也在发生着。
我不认为那些才华横溢的工程师失败的不明不白。他们努力了因为现状并不够好。
与此同时,世界上一些最聪明、最谦逊、最成熟的**领袖意识到,web还不够好。更重要的是,如果我们继续认为浏览器供应商他们自己有足够的知识和带宽来覆盖所有的用例,那会远远不够的。
可扩展Web宣言的基础
这讲得通。在未来,如何让一小群人们同意在高水平的API上为世界上每一个开发者工作。
低水平下库特征
首先是库的增殖,随后polyfills,再接下去package managers,接着transpilers。这在Web历史上并不是随机事件。有一个很痛的领悟是,我们永远无法达到一个Web被完全完成的那个点。如果你幻想所有的一切都是基于浏览器建造,那么你要哭了。ES6并不会再浏览器实现并且许多开发者已经在使用ES7的功能了。
毋容置疑,一些功能在现代WEB中并非必须。一些工具非常臃肿,并且很挫。但是,每一天总有人在开发新的工具以解决一些重要的新问题。
什么情况下你能说,WEB足够好了?答案是当你完成了昨天的Web。这就是我们多数人的现状。我们只是通过写一些简单的HTML和JS来一遍又一遍的开发网站。我们的社区发现重复造轮子实在是没有必要。于是发明了一些可重复使用的软件。举个栗子,Wordpress 或者是Medium。
Web的未来在于创新,而不是旧产品。用一些我们从没想过的例子。Web能够支持这一点的唯一方法就是公开更低级的特性。较低级别的特性可以支持更多的用例,而不是受约束的高级API。即使你能实现它,它也需要大量的弱鸡技巧和专业知识来以一种不打算被使用的方式来服务API。当今Web不是创新的平台。
那初始加载呢
这让我想到PPK的文章“工具不能解决网络的问题,它们是问题”。在这个案例中,他指的是Facebook的产品“Instant Articles”。他说,我们下载太多的东西,然后执行太多的东西,这使得加载单独的文章变得很慢。他指出传统的老式web完全符合这个情况。
PPK的观点没有考虑到这个团队已经做了很多工作来优化之前的Web。如果可能的话,包括预取和在CDNs上的存储资源。我没有参与那个团队。我对创建这个产品的选择一无所知。从技术角度看,我怀疑它更多的是与苹果在iOS webview上的垄断地位的缓慢移动技术有关,而不是它内部的任何东西。
这种体验的主要特点是很难用传统的web进行复制。即使是一个简单的功能也无法控制,这会导致团队就要从头开始重建系统。
缓存
如果Web的未来不是由浏览器厂商构建的,而是由客户端库构建的,那么我们将如何获得快速的初始下载呢?它是服务器端的HTML / CSS渲染吗?没有。这只能让我们访问本来就存在于浏览器中的功能。
然后我们需要下载每个页面加载的JavaScript,对吧?非也。您不需要为每个页面下载DOM。新版本的DOM被浏览器自动下载,然后缓存。我们也可以对库进行同样的操作。
理想的解决方案不是将更多的东西捆绑到浏览器的自动更新包中。最好将浏览器拆分为更小的包,以乐观的方式预取每个用户的普通项,并启用更好的缓存原语。在这个方向上,服务端人员是一个很好的助力。
有一天,你会下载一个呈现给WebGL的JavaScript版本的DOM。DOM只是另一个库。
还有一些基础设施问题需要解决。然而,毫无疑问,Web的未来并不是2005年的DOM / HTML文档。它是预取和缓存的用户空间库。
更多的工具,而不是更少。
原文出处:https://medium.com/@sebmarkbage/tooling-is-not-the-problem-of-the-web-cb0ae1fdbbc6