目录
Polymer 0.5 和 Polymer 1.0 的主要区别是什么?
如何将我的项目从 Polymer 0.5 升级到 Polymer 1.0?
什么是 Shadow DOM?它在 Polymer 1.0 中是如何工作的?
如何设置 Shadow DOM 中元素的样式?
首页 web前端 js教程 升级到聚合物1.0的指南

升级到聚合物1.0的指南

Feb 19, 2025 am 08:53 AM

A Guide to Upgrading to Polymer 1.0

核心要点

  • Polymer 1.0 是对前代版本的彻底重构,性能更高效,体积更小,对自定义元素的支持更好,数据绑定系统也得到了改进,使其更易于使用和更直观。
  • 从 Polymer 0.5 升级到 Polymer 1.0 需要多个步骤,包括更新 Bower 依赖项、更新 HTML 导入、调整元素定义和数据绑定以适应新的语法,以及进行彻底的测试以确保一切按预期工作。
  • Polymer 1.0 引入了 Shadow DOM,这是 Web Components 标准的关键部分,它封装了自定义元素的实现细节,将其内部结构和样式隐藏在页面其余部分之外。可以使用 CSS 自定义属性以及 ::shadow/deep/ 选择器来设置 Shadow DOM 中元素的样式。

在最近结束的 Google I/O 2015 大会上,Google 发布了期待已久的 Polymer 1.0 版本,并宣布其已准备好投入生产。对于那些在 Polymer 库仍处于开发者预览阶段时就一直在使用它的用户,本文将作为将现有应用程序迁移到最新版本的 Polymer 的指南。

关于 1.0 版的一些重要说明:

  1. 它与之前的版本 0.5(到目前为止存活时间最长的版本)不兼容。
  2. 新版本专注于性能和效率,同时大幅减少了库的整体大小。
  3. 它已从头开始完全重建,使开发人员能够更轻松、更快速地设计更像标准 DOM 元素的自定义元素。
  4. 内部基准测试显示,与之前的版本相比,1.0 版在 Chrome 上快约 3 倍,在 Safari 上快约 4 倍。

安装最新版本的 Polymer 的步骤与本文中描述的完全相同。要更新现有的 Polymer 安装,请导航到应用程序目录,并在终端中运行以下命令:

$ bower update
登录后复制
登录后复制

务必注意,这肯定会破坏您现有的应用程序,因为如前所述,这两个版本不兼容。因此,建议改为在单独的文件夹中安装新副本。为了说明自 0.5 版以来的变化,我们将使用我之前在 SitePoint 上的一篇文章中的信用卡自定义元素作为参考,以比较这两个版本之间的差异。

为不支持的浏览器提供 polyfill

新版本的 Polymer 不再需要 webcomponents.js 库中包含的 Shadow DOM polyfill。改为使用更小的 webcomponents-lite.js 库为旧版浏览器提供 polyfill。

版本 0.5:

<🎜>
登录后复制
登录后复制
登录后复制
登录后复制

版本 1.0:

<🎜>
登录后复制
登录后复制
登录后复制
登录后复制

“精简版”比其前身大约减少了 80kb 的大小,当性能是关键因素时,这可能非常重要。

定义自定义元素

<polymer-element> 标签已被包含自定义元素定义的 <dom-module> 标签取代。自定义元素现在由 <dom-module> 标签的 id 属性标识。自定义元素的命名规则仍然相同。

版本 0.5:

$ bower update
登录后复制
登录后复制

版本 1.0:

<🎜>
登录后复制
登录后复制
登录后复制
登录后复制

注册自定义元素

以前,我们可以通过简单地调用 Polymer() 构造函数来注册自定义元素。如果标签位于 <polymer-element> 标签内,则指定自定义元素名称是可选的。在此版本中,自定义元素现在通过使用原型上的 is 属性来注册。

版本 0.5:

<🎜>
登录后复制
登录后复制
登录后复制
登录后复制

版本 1.0:

<polymer-element name="credit-card"></polymer-element>
  ...
登录后复制

is 属性的值必须与自定义元素的 <dom-module> 标签的 id 属性匹配,并且与之前的版本不同,这不是可选的。

标签可以在 <dom-module> 元素内部或外部,但必须在调用 Polymer 构造函数之前解析元素的模板。

自定义元素属性

<polymer-element> 标签中包含的任何属性现在都应与数据类型一起在 properties 对象上声明。

版本 0.5:

<dom-module id="credit-card"></dom-module>
  ...
登录后复制

版本 1.0:

Polymer('credit-card', {});
登录后复制

自定义元素样式

元素样式现在定义在 <template> 标签之外。

版本 0.5:

Polymer({
  is: 'credit-card'
});
登录后复制

版本 1.0:

<polymer-element name='credit-card' attributes='amount'></polymer-element>
登录后复制

使用 HTML 导入支持外部样式表。

数据绑定

Polymer 1.0 提供两种类型的数据绑定:

  • 方括号 [[ ]] 创建单向绑定。数据流是自上而下的,从宿主到子元素,绑定永远不会修改宿主属性。
  • 花括号 {{ }} 创建自动绑定。数据流是单向的或双向的,具体取决于目标属性是否配置为双向绑定。

在此版本中,绑定必须替换节点的整个文本内容或属性的整个值。因此不支持字符串连接。对于属性值,建议使用计算绑定而不是字符串连接。

版本 0.5:

Polymer({
  is: 'credit-card',
  properties: {
    amount: {
      type: Number
    }
  }
});
登录后复制

版本 1.0:

<polymer-element name="credit-card" attributes="amount"></polymer-element>
  <template>
    ...
  </template>
登录后复制
<dom-module id="credit-card">
  <style>
    ...
  </style>
  <template>
    ...
  </template>
</dom-module>
登录后复制

请注意,这意味着节点不能在绑定注释周围包含任何空格。

新的 Shady DOM

Polymer 0.5 使用 Shadow DOM 为开发人员提供更简单的元素接口,并通过隐藏影子根后面的子树来抽象所有复杂性。这构成了封装的基础,在支持 Shadow DOM 的浏览器中效果很好。

对于尚不支持 Shadow DOM 的浏览器,实现与原生 Shadow DOM 完全相同的 polyfill 非常困难,通常比原生实现慢,并且需要大量代码。由于这些原因,Polymer 团队决定取消 Shadow DOM polyfill,而是构建了一个更轻量级的本地 DOM 版本,它提供了类似于 Shadow DOM 的封装。

需要注意的是,Shady DOM 和 Shadow DOM 彼此兼容,这意味着 Shady DOM API 在浏览器可用时使用原生 Shadow DOM,并在不支持的浏览器中回退到 Shady DOM。

结论

根据应用程序的复杂性,将您的应用程序升级到 Polymer 1.0 可能会是一个非常缓慢的过程,但在加快加载时间和显着减小有效负载方面具有巨大的优势。 Polymer 项目网站上提供的官方迁移指南更深入地介绍了内部 API 的其他一些更改,因此请务必查看。

此外,Chuck Horton 创建了一个名为 Road to Polymer 1.0 的 Github 存储库,其中提供了一个代码转换工具,可以将您的代码从 0.5 版更新到 1.0 版。如果您不想手动进行一些外观更改,这可以作为迁移的起点。

关于升级到 Polymer 1.0 的常见问题

Polymer 0.5 和 Polymer 1.0 的主要区别是什么?

Polymer 1.0 是对先前版本 Polymer 0.5 的完全重写。新版本更高效,占用空间更小,性能更快。它还引入了一种新的、简化的语法,更容易理解和使用。数据绑定系统已进行了改进,以提高性能并使其行为更直观。此外,Polymer 1.0 对创建自定义元素的支持更好,自定义元素是 Web Components 标准的关键部分。

如何将我的项目从 Polymer 0.5 升级到 Polymer 1.0?

从 Polymer 0.5 升级到 Polymer 1.0 包括几个步骤。首先,您需要更新 Bower 依赖项以指向新的 Polymer 1.0 元素。然后,您需要更新 HTML 导入以加载新的元素。您还需要更新元素定义和数据绑定以使用新的 Polymer 1.0 语法。最后,您需要彻底测试您的项目以确保一切按预期工作。

什么是 Shadow DOM?它在 Polymer 1.0 中是如何工作的?

Shadow DOM 是 Web Components 标准的关键部分。它提供了一种封装自定义元素实现细节的方法,将其内部结构和样式隐藏在页面的其余部分之外。在 Polymer 1.0 中,您可以使用 Shadow DOM 创建完全封装且可重用的自定义元素。

如何设置 Shadow DOM 中元素的样式?

设置 Shadow DOM 中元素的样式可能有点棘手,因为它们是封装的,与页面的其余部分隔离。但是,Polymer 1.0 提供了几种设置 Shadow DOM 元素样式的方法。您可以使用 CSS 自定义属性来定义可以在 Shadow DOM 内部应用的样式。您还可以使用 ::shadow/deep/ 选择器来穿透 Shadow DOM 并设置其内部元素的样式。

...(其余的FAQ答案可以按照同样的方式改写,保持内容一致,但用词和句式有所变化)

以上是升级到聚合物1.0的指南的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

热门话题

Java教程
1657
14
CakePHP 教程
1415
52
Laravel 教程
1309
25
PHP教程
1257
29
C# 教程
1230
24
神秘的JavaScript:它的作用以及为什么重要 神秘的JavaScript:它的作用以及为什么重要 Apr 09, 2025 am 12:07 AM

JavaScript是现代Web开发的基石,它的主要功能包括事件驱动编程、动态内容生成和异步编程。1)事件驱动编程允许网页根据用户操作动态变化。2)动态内容生成使得页面内容可以根据条件调整。3)异步编程确保用户界面不被阻塞。JavaScript广泛应用于网页交互、单页面应用和服务器端开发,极大地提升了用户体验和跨平台开发的灵活性。

JavaScript的演变:当前的趋势和未来前景 JavaScript的演变:当前的趋势和未来前景 Apr 10, 2025 am 09:33 AM

JavaScript的最新趋势包括TypeScript的崛起、现代框架和库的流行以及WebAssembly的应用。未来前景涵盖更强大的类型系统、服务器端JavaScript的发展、人工智能和机器学习的扩展以及物联网和边缘计算的潜力。

JavaScript引擎:比较实施 JavaScript引擎:比较实施 Apr 13, 2025 am 12:05 AM

不同JavaScript引擎在解析和执行JavaScript代码时,效果会有所不同,因为每个引擎的实现原理和优化策略各有差异。1.词法分析:将源码转换为词法单元。2.语法分析:生成抽象语法树。3.优化和编译:通过JIT编译器生成机器码。4.执行:运行机器码。V8引擎通过即时编译和隐藏类优化,SpiderMonkey使用类型推断系统,导致在相同代码上的性能表现不同。

JavaScript:探索网络语言的多功能性 JavaScript:探索网络语言的多功能性 Apr 11, 2025 am 12:01 AM

JavaScript是现代Web开发的核心语言,因其多样性和灵活性而广泛应用。1)前端开发:通过DOM操作和现代框架(如React、Vue.js、Angular)构建动态网页和单页面应用。2)服务器端开发:Node.js利用非阻塞I/O模型处理高并发和实时应用。3)移动和桌面应用开发:通过ReactNative和Electron实现跨平台开发,提高开发效率。

Python vs. JavaScript:学习曲线和易用性 Python vs. JavaScript:学习曲线和易用性 Apr 16, 2025 am 12:12 AM

Python更适合初学者,学习曲线平缓,语法简洁;JavaScript适合前端开发,学习曲线较陡,语法灵活。1.Python语法直观,适用于数据科学和后端开发。2.JavaScript灵活,广泛用于前端和服务器端编程。

如何使用Next.js(前端集成)构建多租户SaaS应用程序 如何使用Next.js(前端集成)构建多租户SaaS应用程序 Apr 11, 2025 am 08:22 AM

本文展示了与许可证确保的后端的前端集成,并使用Next.js构建功能性Edtech SaaS应用程序。 前端获取用户权限以控制UI的可见性并确保API要求遵守角色库

从C/C到JavaScript:所有工作方式 从C/C到JavaScript:所有工作方式 Apr 14, 2025 am 12:05 AM

从C/C 转向JavaScript需要适应动态类型、垃圾回收和异步编程等特点。1)C/C 是静态类型语言,需手动管理内存,而JavaScript是动态类型,垃圾回收自动处理。2)C/C 需编译成机器码,JavaScript则为解释型语言。3)JavaScript引入闭包、原型链和Promise等概念,增强了灵活性和异步编程能力。

如何安装JavaScript? 如何安装JavaScript? Apr 05, 2025 am 12:16 AM

JavaScript不需要安装,因为它已内置于现代浏览器中。你只需文本编辑器和浏览器即可开始使用。1)在浏览器环境中,通过标签嵌入HTML文件中运行。2)在Node.js环境中,下载并安装Node.js后,通过命令行运行JavaScript文件。

See all articles