[Web翻译]Web Components更新:更多时间升级到v1 APIs

2,115 阅读6分钟

原文地址:developers.google.com/web/updates…

原文作者:developers.google.com/web/resourc…

发布时间:2019年7月

Web Components v1 APIs 是一种网络平台标准,已经在 Chrome、Safari、Firefox 和(很快)Edge 中推出。数百万个网站都在使用v1 API,每天有数十亿用户使用。使用v0 API草案的开发人员提供了宝贵的反馈意见,这些意见影响了规范的制定。但是v0 APIs只被Chrome支持。为了确保互操作性,去年年底,我们宣布这些API草案已被废弃,并计划从Chrome 73开始删除。

由于有足够多的开发者要求有更多的时间进行迁移,这些 API 尚未从 Chrome 浏览器中移除。v0草案API现在的目标是在Chrome 80中移除,大约在2020年2月。

如果您认为您可能正在使用v0 API,那么您需要知道以下内容。

回到未来:禁用 v0 APIs

要在禁用v0 APIs的情况下测试你的网站,你需要从命令行启动Chrome,并使用以下标志。

--disable-blink-features=ShadowDOMV0,CustomElementsV0,HTMLImports

在从命令行启动它之前,你需要先退出Chrome浏览器。如果您安装了Chrome Canary,您可以在保持Chrome浏览器加载此页面的同时,在Canary中运行测试。

要在禁用v0 APIs的情况下测试你的网站。

  1. 如果你是在Mac OS上,浏览chrome://version,找到Chrome的可执行路径。在步骤 3 中你会需要这个路径。
  2. 退出 Chrome 浏览器。
  3. 使用命令行标志重新启动 Chrome。 --disable-blink-features=ShadowDOMV0,CustomElementsV0,HTMLImports 有关使用标志启动Chrome的说明,请参见使用标志运行Chromium。例如,在Windows上,你可以运行:
chrome.exe --disable-blink-features=ShadowDOMV0,CustomElementsV0,HTMLImports。
  1. 要仔细检查是否正确启动了浏览器,打开一个新的标签页,打开DevTools控制台,并运行以下命令。
console.log(
"Native HTML Imports?", 'import' in document.createElement('link'),
"Native Custom Elements v0?", 'registerElement' in document, 
"Native Shadow DOM v0?", 'createShadowRoot' in document.createElement('div'));

如果一切都按预期工作,你应该看到。

Native HTML Imports? false
Native Custom Elements v0? false
Native Shadow DOM v0? false

如果浏览器对任何或所有这些功能的报告为真,就说明出了问题。确保你已经完全退出了Chrome浏览器,然后用标志重新启动。

  1. 最后,加载您的应用程序并运行这些功能。如果一切都按预期工作,你就可以了。

使用 v0 polyfills

Web Components v0 polyfills 在不提供本地支持的浏览器上为 v0 API 提供支持。如果您的网站在禁用 v0 APIs 的 Chrome 浏览器上无法运行,您可能没有加载 polyfills。有几种可能。

  • 您根本没有加载 polyfills。在这种情况下,您的网站在其他浏览器上应该会失败,例如 Firefox 和 Safari。
  • 您正在根据浏览器的嗅探有条件地加载 polyfills。在这种情况下,您的网站应该可以在其他浏览器上运行。向前跳到加载polyfills

在过去,Polymer项目团队和其他团队建议根据特征检测有条件地加载polyfills。这种方法在禁用v0 APIs的情况下应该可以正常工作。

安装 v0 polyfills

Web Components v0 polyfills从未发布到npm注册表。如果您的项目已经在使用Bower,您可以使用Bower安装这些polyfills。或者您也可以从一个zip文件中安装。

  • 用Bower安装

bower install --save webcomponents/webcomponentsjs#^0.7.0

  • 要从 zip 文件安装,请从 GitHub 下载最新的 0.7.x 版本。

github.com/webcomponen…

如果从zip文件安装,如果有其他版本出现,你将不得不手动更新polyfills。你可能会想在你的代码中检查polyfills。

加载v0的polyfills

Web Components v0的polyfills作为两个独立的捆绑包提供。

| --- | --- webcomponents-min.js | 包括所有的 polyfills。这个捆绑包包括影子DOM polyfill,它比其他polyfills大得多,对性能影响更大。只有当你需要影子DOM支持时才使用这个捆绑包。 webcomponents-lite-min.js | 包含了除阴影DOM之外的所有polyfills。注意:Polymer 1.x用户应该选择这个捆绑包,因为Shadow DOM仿真直接包含在Polymer库中。Polymer 2.x用户需要一个不同版本的polyfills。详情请看Polymer项目的博客文章

webcomponents-min.js 包括所有的 polyfills。这个捆绑包包括影子DOM polyfill,它比其他polyfills大得多,对性能影响更大。只有当你需要影子DOM支持时才使用这个捆绑包。 webcomponents-lite-min.js

也有单独的polyfills可以作为Web Components polyfill包的一部分。单独使用单独的polyfills是一个高级话题,这里不做介绍。

要无条件地加载polyfills。

<script src="/bower_components/webcomponents/webcomponentsjs/webcomponents-lite-min.js">
</script>

或者。

<script src="/bower_components/webcomponents/webcomponentsjs/webcomponents-min.js">
</script>

如果你直接从GitHub安装了polyfills,你需要提供安装polyfills的路径。

如果您根据功能检测有条件地加载polyfills,当v0支持被移除时,您的网站应该继续工作。

如果您使用浏览器嗅探有条件地加载 polyfills(即在非 Chrome 浏览器上加载 polyfills),当 v0 支持从 Chrome 移除时,您的网站将失败。

帮忙!我不知道什么是API。我不知道我使用的是什么API!

如果您不知道自己是否正在使用任何 v0 API,或者您正在使用哪些 API,您可以检查 Chrome 中的控制台输出。

  1. 如果你之前启动Chrome时设置了禁用v0 API的标志,请关闭Chrome并正常重启。
  2. 打开一个新的 Chrome 标签页并加载您的网站。
  3. 按 Control+Shift+J (Windows、Linux、Chrome OS) 或 Command+Option+J (Mac) 打开 DevTools 控制台
  4. 检查控制台输出是否有废弃信息。如果有很多控制台输出,在 "过滤器 "框中输入 "废弃"。

你应该看到你正在使用的每个 v0 API 的弃用消息。上面的输出显示了 HTML Imports、自定义元素 v0 和 shadow DOM v0 的消息。

如果您正在使用这些 API 中的一个或多个,请参见使用 v0 polyfills

下一步:脱离v0

确保v0的polyfills被加载,应确保您的网站在v0 APIs被移除后仍能继续工作。我们建议转移到广泛支持的Web Components v1 APIs。

如果您使用的是Web Components库,如Polymer库、X-Tag或SkateJS,第一步是检查该库是否有支持v1 APIs的新版本。

如果你有自己的库,或者在没有库的情况下编写了自定义元素,你就需要更新到新的API。这些资源可能会有帮助。

总结

Web Components v0 draft APIs 将会消失。如果你从这篇文章中得到了一件事,请确保你在禁用v0 APIs的情况下测试你的应用程序,并根据需要加载polyfills

从长远来看,我们鼓励您升级到最新的API,并继续使用Web Components!


通过www.DeepL.com/Translator (免费版)翻译