必威体育下载基督教Heilmann

您当前正在浏览的是必威体育下载基督教Heilmann十月的博客必威体育简介档案,2017.

10月存档,2017

Web真相:我们需要对Web api进行粒度控制,不是抽象

周一,10月16日,2017

这是网络真相系列文章。在这个系列中,我们看到了一些听起来真实的陈述,我们一直在使用这些陈述来进行无休止的讨论,而不是继续前进。今天,我想解决向web提供新功能的问题。我们是否应该向提供粒度控制的功能交付低级api ?或者我们应该有让人们更快开始的抽象?还是两个?

在一个完美的情况下,两者都是显而易见的答案。我们应该为那些“接近金属”的工作人员提供低级api。我们应该提供基于这些api的抽象,以便更容易地访问和使用。

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

在我们有一个标准化的网络之前,我们必须按照浏览器制造商的意愿来开发。随着标准的出现,这种情况发生了变化。Web标准是我们的保障。通过跟踪它们,我们有了一种可预测的调试方法。我们知道浏览器应该做什么。因此,我们知道什么时候犯了错误,什么时候是平台中的一个bug。这对于文本和表单驱动的web非常有效。当HTML5进入应用程序空间后,web标准变得复杂得多。加上更大的浏览器和平台碎片化,实现标准和web变得更加困难。当一些标准让人感到仓促时,这并没有帮助。一个API返回空字符串,“可能”或“可能”的时候询问当前浏览器是否可以播放视频并不能让你充满自信。对于外行和初学者,web标准不再被认为是“使用它就会工作”的方法。与其他提供的服务相比,这些服务似乎比较复杂,而且对于开发人员来说,许多更改似乎需要大量的工作来完成。也许工作太多了。

这可以归结为:

  • 抽象使开发人员避免了许多实现怪癖,并帮助他们实现自己想要实现的东西
  • 低级api支持更精简的解决方案,但是希望开发人员了解它们,跟踪更改并以合理的方式处理不支持的环境(参见:渐进增强)

开发者想要什么?

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

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

这也是我们的市场走向:我们并不是为了了解自己在做什么而被雇佣的——我们应该已经知道了。我们的工作是用最短的时间和最少的努力创造出可行的产品。

问题是,网络的历史记录表明,每当有新技术出现时,我们往往不得不从头开始。我们没有创建特定于web的功能,而是试图模仿其他平台的功能。

这里最好的例子是离线功能。当HTML5Flash被宣布死亡,我们需要一个快速的解决方案来提供离线内容。AppCache出生时,这看起来是一个简单的解决方案。事实证明,再一次,那些看起来好得令人难以置信的东西其实一点也不伟大。AppCache的很多功能都是不可靠的。回想起来,这也被证明是一个比我们预期的更安全的问题。

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

这使得服务人员更难共事,因为他们看起来很复杂。加上Safari缺乏支持(现在正在改变你失去了很多开发人员的热情。

在像这样的抽象中有更多的用途工具箱因为他们承诺在规范的更改被解决时,您将保持最新。而不是得到“这是所有的乐高积木,自己造车"它有一个"你想造一辆车,这里有一些方法可以做到这一点。

这是一件好事。当然,我们需要定义更细粒度和透明的标准和解决方案来构建web。但是开发人员不愿意参与定义阶段并关注更改。我们不能期望每个想为web构建的人都那么关心。这不是web发展的方式——不是每个人都必须是底层工程师或懂JavaScript。我们应该考虑到,web已经超越了每个人都深度参与标准世界的时代。

我们需要面对的事实是,网络已经变得比过去复杂得多。如果我们想让所有的开发人员都跟上标准,我们需要从开发人员那里得到很多。雇主或客户往往不像运输产品那样欣赏这些工作。

这不是很好。这不是可维护的,也不是面向未来的。事情不应该发展到这个地步。但这是我们允许接管的一种发展方式。发展已成为一个相当累人和竞争激烈的环境。在短时间内快速交付。快速行动,打破陈规。如果你可以重复使用某些东西,这样做,如果您不知道它是做什么的,或者这样做是否安全,也不要太担心。如果你不先把它送到市场上,别人就会这么做。

这种态度是不健康的,我们会跟着这样做。这也确保了我们的市场很难实现多样化。这是一款需要我们大量时间和不健康竞争力的具有侵略性的游戏。

我们需要找到一种方法来定义web上的下一步是什么,并使其尽快可用。等待所有的玩家都支持一个新特性会让开发者很难在产品中使用它。

依赖于抽象似乎是事情的发展方向。这意味着作为标准创建者和浏览器制造者,我们需要与抽象开发人员进行更多的合作。人们似乎越来越不愿意在更改和使用标志背后的功能时,放弃遵循规范的时间。肯定的是,在会议和我们的谈话中,每个人都很兴奋。硬件和操作系统配置,我们有支持所有的酷和新的。但我们需要更快地进入市场,接触那些还没有接受我们想法的人。

所以,问题不在于规范的粒度定义,协同工作的小部件或抽象部件。它是关于获得新的和明智的,更快地将更安全、性能更好的解决方案转换为生产代码。这意味着我们两者都需要。抽象应该具有更快的更新周期,以便在底层集成新的api。我们应该使用标准进行抽象,不打补丁。