必威体育下载克里斯蒂安·海尔曼

您当前正在浏览必威体育下载克里斯蒂安·海尔曼十月份的博必威体育简介客档案,2017。

10月存档,二千零一十七

Web真理:我们需要对Web API进行粒度控制,不是抽象的

星期一,10月16日,二千零一十七

这是网络真理系列文章.这是一个系列,我们关注的是听起来真实的陈述,我们一直用它来进行无休止的讨论,而不是继续前进。今天,我想解决为Web提供新功能的问题。我们应该向功能提供低级API以提供粒度控制吗?或者我们应该有让人们更快开始的抽象?还是两者兼而有之?

在一个完美的场景中,两者都是显而易见的答案。我们应该为那些“接近金属”的人提供低级别的API。我们应该提供基于那些允许更容易访问和使用的API的抽象。

事实上,两者之间存在很大的脱节。毫无疑问,新的Web标准从抽象中学到了很多东西。必威体育下载例如,jquery影响了DOM规范。当浏览器最终得到queryselector和classlist时,我们希望这是抽象需求的结束。除了,过去没有,现在仍然没有。抽象还可以处理的是消除实现错误并提供terser语法。这两件事都与开发人员产生了很好的共鸣。这就是为什么我们有一群开发人员乐于使用抽象并相信它为他们做正确的事情。

在我们建立标准化网络之前,我们必须适应浏览器制造商的突发奇想。随着标准的出现,情况发生了变化。网络标准是我们的保障。通过跟踪它们,我们有了一种可预测的调试方法。我们知道浏览器应该做什么。因此,我们知道什么时候我们犯了错误,什么时候它是平台上的一个bug。这对于文本和表单驱动的Web很有效。什么时候?HTML5进入应用程序空间的Web标准变得更加复杂。添加更大的浏览器和平台碎片,朝着标准和网络的方向努力变得更加困难。当一些标准感到匆忙时,这没有帮助。安美国石油学会返回空字符串,“可能”或“可能”何时询问当前浏览器是否可以播放视频不会让你充满信心。对于局外人和初学者,Web标准不再被认为是“使用这个并且它会工作”的方法。与其他报价相比,它们似乎比较复杂,而且开发人员需要跟上许多变化。可能工作太多了。

这就是它的归根结底:

  • 抽象保护开发人员不受许多实现怪癖的影响,并帮助他们完成他们想要实现的工作。
  • 低级API允许更精简的解决方案,但希望开发人员了解它们,跟踪变化并以合理的方式处理不支持的环境(请参见:渐进增强)

开发人员想要什么?

作为已知的Web开发人员,您希望有粒度控制。我们经常被“神奇的”抽象所灼伤。我们想知道我们使用什么,看看它从哪里来。这样我们就可以创建许多不同的解决方案,并确保我们想要的标准化工作能够正常进行。我们还希望能够在部分出现问题时修复和替换解决方案的部分。我们不希望的是无法追溯到某个问题的来源。我们还希望确保Web的新功能保持透明和安全。我们通过创造更小的可以混合和匹配的专门组件。

作为没有经历过浏览器战争的痛苦或不需要知道浏览器如何工作的新开发人员,事情看起来不一样。我们希望编码并实现我们的目标,而不是一路上学习所有不同的部分。必威体育下载我们想重新使用有效的产品,而不是担心我们的产品。我们并不担心网络作为一个平台及其未来。对我们来说,它只是建立和发布产品的一个形式因素。很像iOS或游戏平台。

这也是我们的市场发展方向:我们没有得到报酬来理解我们所做的——我们应该已经知道了。我们的报酬是在最短的时间内以最少的努力创造出一种可行的产品。

问题在于,网络的历史记录表明,每当有新技术出现时,我们往往必须重新开始。而不是创建特定于Web的功能,而是尝试模仿其他平台所做的。

这里最好的例子是离线功能。什么时候?HTML5当Flash被宣布死亡时,我们需要一个快速的解决方案来提供离线内容。应用程序缓存诞生了,它看起来像是解决这个问题的简单方法。事实证明,又一次,那些看起来太好而不真实的东西一点也不好。AppCache的很多功能都不可靠。回想起来,这也是一个比我们预期的更严重的安全问题。

浏览器为我们提供了太多的“魔力”,我们作为实现者没有足够的洞察力。就是这样服务人员来了。我们希望做正确的事情,并提供一种更精细的方法来定义浏览器在何时何地缓存什么。我们希望给开发人员一个拦截网络请求并对其采取行动的机会。这是一项巨大的努力。本质上,我们用美国石油学会.到目前为止,服务工作者所做的不仅仅是离线功能。他们还应该在后台处理推送通知和应用程序更新。

这使得服务工人看起来很复杂,工作起来更加困难。此外,Safari()缺乏支持。现在正在改变)你失去了很多开发人员的热情。

在抽象中有更多的用途,比如工作箱因为他们承诺在规范修改完成的同时保持更新。不是说“这里都是乐高积木,自己造一辆车“,它有一个“所以你想造一辆车,这里有一些方法可以做到这一点。

这是件好事。当然,我们需要定义更细粒度和透明的标准和解决方案来构建Web。但开发人员不愿意参与定义阶段并密切关注变化。我们不能指望每个想为网络建设的人都这么关心。这不是网络的发展方式——不是每个人都必须是一个低级别的工程师或者了解JavaScript。我们应该考虑到,网络的发展超过了每个人都深入参与标准世界的时代。

我们需要面对的事实是,网络已经变得比以前复杂得多。如果我们希望所有开发人员都能跟上标准的发展,我们就需要开发人员的大量需求。通常雇主或客户不喜欢的工作比运送产品更受欢迎。

这不好。这不是可维护的,也不是面向未来的。不应该这样。但这是我们允许接管的一种发展方式。发展已经成为一个相当疲惫和竞争的环境。以短节奏快速传递。快一点,打破一切。如果你可以重复使用一些东西,做到这一点,如果你不知道它做了什么,或者它是安全的,不要担心太多。如果你不先把它送到市场,别人会的。

这种态度是不健康的,我们跟着它在磨蹭自己。它还确保了我们市场的多样性难以实现。这是一个积极的游戏,需要我们很多时间和不健康的竞争力。

我们需要找到一种方法来定义下一个在网络上是什么,并使它尽快可用。等待所有参与者支持一个新特性,这使得开发人员很难在生产中使用它。

任何情况下,依赖抽象似乎都是顺其自然的。这意味着作为标准创建者和浏览器创建者,我们需要更多地与抽象开发人员合作。人们似乎越来越不可能在更改规范和使用标志背后的功能时放弃时间来遵循规范。当然,在会议和我们的谈话中,每个人都很兴奋。我们拥有的硬件和操作系统配置支持所有的新功能。但我们需要更快地进入市场,并接触到那些还没有在我们的想法上出售的人。

所以,问题不在于规范的细化定义,共同工作或抽象的小部分。它是关于变得新的和明智的,更快地将更安全和性能更好的解决方案转换为生产代码。这意味着我们需要两者。抽象应该有一个更快的更新周期,以便在引擎盖下合并新的API。我们应该用标准来抽象,不修补它们。