写点什么

Polymer 2.0 版本引入突破性改变,升级迁移已平滑过渡

  • 2017-01-03
  • 本文字数:1000 字

    阅读完需:约 3 分钟

Polymer 2.0 版本用 Custom Elements API v1 替换了 v0,弃用了 Polymer.dom,并以 Shadow DOM 取而代之。不过这个升级迁移过程并没有看起来那么大难度,因为他们推出了一个兼容层,使得用 Polymer 1.7+ 版本编写的代码能够在 2.0 版本中运行。

Polymer 1.+ 版本是基于 Custom Elements API v0 构建的。Custom Elements API v0 使用 document.registerElement() 进行初始化自定义元素,现已被弃用。那么如何在 Custom Elements API v1 下创建新元素呢?Polymer 2.0 版本改用 customElements.define() 进行创建。API 的这个最新版本很快将被所有主流浏览器所支持。Chrome 54+ 已经实现了该 API,Safari TP 也已在使用,而 Edge 和 Firefox 对该 API 的支持工作也在进行中。(更多关于各浏览器对 Custom Elements API v1 的支持情况可以在这里找到。)与此同时,这个填充代码(polyfill)可以加强所有浏览器对自定义元素的支持。

Polymer 2.0 版本的另一个重要改变是使用 Shadow DOM v1 代替 Polymer.dom 。有些浏览器已运行了 Shadow DOM v1,有些则正在开发。Shady DOM 从 Polymer 中分离出来作为填充代码。

在数据系统方面,Polymer 2.0 版本推出了许多增强功能:对对象和数组不再进行脏数据检查(dirty checking),对数组的处理更加简单,以及对数据变更通知进行分批,

为避免这些突破性改变对系统造成损害,Google 推出了一个兼容层,使得用Polymer 1.7+ 版本创建的自定义元素能够在2.0 版本中运行。开发人员只需要“修改现有代码,使其在内容分布和样式上符合Shadow DOM v1 API 的要求,同时适应在更改Custom Elements v1 API 时导致的变更”。Polymer 还引入了混合元素(hybrid elements)使其与Polymer1.x 兼容。将来某一时刻,将有工具自动把Polymer 1.x 创建的自定义元素转换为2.0。

Polymer 2.0 版本使用 ES6 中的类语法(class syntax) 对自定义元素进行定义。Polymer 1.x 版本中的工厂方法仍可以通过兼容层进行使用。

开发人员可以使用 Polymer 2.0 Preview ,但它现在还处于开发过程中,还不能被用于生产环境。Polymer 2.0 GA 将于 2017 第一季度发布。

查看英文原文 Polymer 2.0 Introduces Breaking Changes But the Migration Has Been Smoothed


感谢薛命灯对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们。

2017-01-03 18:002195
用户头像

发布了 22 篇内容, 共 57358 次阅读, 收获喜欢 3 次。

关注

评论

发布
暂无评论
发现更多内容

react高频面试题总结(一)

helloworld1024fd

React

基于threejs的商品VR展示平台的设计与实现思路

Five

js vr three.js 签约计划第三季 8月月更

开源一夏 |Spring boot 自动配置原理

叶秋学长

开源 8月月更

中原银行实时风控体系建设实践

Apache Flink

大数据 flink 编程

如何在技术上来保证LED显示屏质量?

Dylan

LED显示屏 led显示屏厂家

10份重磅报告 — 展望中国数字经济未来

阿里技术

研究报告

FinClip | 来了, 2022 年 7 月更新大盘点

FinClip

ABAP-OOAVL模板程序

桥下本有油菜花

abap

看我如何用多线程,帮助运营小姐姐解决数据校对系统变慢!

华为云开发者联盟

后端 开发

react常见面试题

helloworld1024fd

React

半夜赶工制作简报的我好想说 : 确定了,最终稿就是这样

叶小鍵

七日算法先导(二)——双指针

工程师日月

8月月更

小程序插件的生态丰富,加速开发建设效率

Speedoooo

小程序 小程序容器 小程序插件

8大软件供应链攻击事件概述

SEAL安全

开源 DevOps DevSecOps 软件供应链安全 软件供应链攻击

数据湖(一):数据湖概念

Lansonli

数据湖 8月月更

主流跨端技术一览

Speedoooo

前端框架 小程序容器

IIR数字滤波器设计(数字信号处理)

Five

matlab 过滤器 8月月更

流动性质押挖矿系统开发如何制作?单双币系统开发成熟技术

开发微hkkf5566

“纯C”实现——三子棋小游戏

一介凡夫

c 后端、 #开源 8月月更

Maven中的scope

六月暴雪飞梨花

maven 开源 技术 8月月更 scope

OSI 七层模型和TCP/IP模型及对应协议(详解)

Five

TCP/IP TCP协议 8月月更

如何通过DBeaver 连接 TDengine?

TDengine

数据库 tdengine Dbeaver

Vite2 + Vue3 + TypeScript + Pinia 搭建一套企业级的开发脚手架

小周先生

开源 Vite2 vue3.0 #开源 8月月更

【云原生】jenkins部署docker镜像到远程服务器

青芒果

云原生 CODING Linxu docekr 8月月更

基于深度学习的裂缝检测技术

阿炜小菜鸡

8月月更 裂缝监测

前端面试高频20道手写题(二)

helloworld1024fd

爆款视频怎么做?这里或许有答案!

博文视点Broadview

React高频面试题合集(二)

helloworld1024fd

React

受邀出席Rust开发者大会|Rust如何助力量化高频交易?

非凸科技

量化策略 量化交易

实践GoF的设计模式:迭代器模式

华为云开发者联盟

后端 开发

前端面试高频20道手写题

helloworld1024fd

Polymer 2.0版本引入突破性改变,升级迁移已平滑过渡_开源_Abel Avram_InfoQ精选文章