写点什么

Polymer 0.8 带来了性能的提升,也包含破坏性的变更

  • 2015-04-12
  • 本文字数:1314 字

    阅读完需:约 4 分钟

Polymer 团队推出了 Polymer 0.8 的 alpha 版本,其中包含了“建议包括在 1.0 版本中的 API”,但同时它“与 0.5 版本中的 API 不相兼容”,存在着许多破坏性的变更。这个类库的新版本在文件尺寸和性能方面都得到了优化,而它的特性还没有全部完成。

Polymer 0.8 中包含了一个 _Shady DOM_ 特性,这是它自己实现的一套 Shadow DOM 的 polyfill,最初是由webcomponents.js所提供的。因此用户可以选择导入这个更小的webcomponents-lite.js文件,Shady DOM“对速度进行了优化“,并且希望避免“shadow DOM 这个 polyfill 所带来的复杂性、庞大尺寸、性能缺失以及侵入性。”

新版本中不再使用polymer-element标记,而是用dom-module标记取而代之,正如以下代码片段所表现的一样,它的作用是定义并注册某个元素:

复制代码
<dom-module id="hello-world">
  <style>
    div { color: red }
  </style>
  <template>
    <div>Hello World!</div>
  </template>
</dom-module>
<script>
  Polymer({is: "hello-world"});
</script>

原本在模板中的样式也被转移到模板之外了,正如以上示例所显示的一样。

Polymer 0.8 使用了一个单一属性集合的对象,以定义属性的观察者和计算属性。无论是否出现在属性对象中的所有属性都可以与数据进行绑定。由于使用了生成的属性访问器,因此数据绑定系统变得更易于使用,而调试也变得更简单和快速。在属性对象中的值域中定义了默认值,可以选择直接提供某个数值,也可以选择调用某个函数以返回数值。

复制代码
Polymer({
is: "my-component",
properties: {
observed: {
type: Number,
value: 100,
observer: 'observedChanged'
},
product: {
computed: 'multiply(x,y)'
}
}
});

要了解所有破坏性变更的完整列表,推荐阅读一下迁移指南中的内容。要重点指出的是,0.5 版本中的元素尚未完成移植,但在最终版本中会确定将所有元素移植。而关于对 0.5 版本未来的支持,该团队是这样说的

我们已经意识到目前有许多项目依赖于 0.5 版本中的功能,而且在所有的元素都完成移植之前,这些项目无法转而使用 0.8 版本。我们将持续关注新的 pull request 并进行合并,直至所有元素都完成移植为止。但是,我们目标是将 0.8 版本作为新的基准,全力打造这个高性能、适用于生产线上的新版本。如果 0.5 版本还有任何增量发布,只要有必要,我们都会通过一个新的分支发布该功能。

根据团队的基准测试结果来看,Polymer 0.8 的启动时间快了4 至8 倍,在Chrome 上也是如此。它的资源占用也有明显减少。如果想要深入了解0.8 版中的新特性,推荐你阅读一下开发者指南

有大量的的新特性是针对Polymer 1.0 版本而开发的,这些特性中有许多还无法运行,或只能部分运行,包括:内容体安全策略、支持手势、更好的Shady DOM 表现、跨scope 的样式、更多的模板特性、数据绑定调试工具、基准测试等等。在0.8 版本中已经支持了HTML 元素的继承,但对于扩展自定义元素的支持则推迟到了1.1 版本,原因在于“由于我们在0.8 版本中进行了一些性能方面的改进,变相造成了这一功能在新版本中的实现比起在0.5 版本中要面临更大的困难。”

查看英文原文: Polymer 0.8 Comes with Performance Improvements and Breaking Changes

2015-04-12 06:052005
用户头像

发布了 428 篇内容, 共 182.1 次阅读, 收获喜欢 39 次。

关注

评论

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

Dubbo SPI

青年IT男

dubbo

Hello Python! 第一天学 Pyhton 语言

在即

6月日更

微博评论的高性能高可用计算架构设计

唐高为

实现多级缓存架构设计方案

xcbeyond

缓存 缓存架构 6月日更

直击Huawei Mate 40产线背后的华为云IoT智能制造

华为云开发者联盟

IoT 数字化转型 数字孪生 华为云IoT

有点难的 webpack 知识点:Dependency Graph 深度解析

范文杰

webpack 6月日更

手把手教你在IDEA中配置Maven

打工人!

Java maven 6月日更

ARTS- 日常打卡5

pjw

React Hooks - 如何安全地使用state

蛋先生DX

大前端 React React Hooks JavaScrip 6月日更

BZZ算力挖矿系统开发功能丨BZZ算力挖矿源码设计

系统开发咨询1357O98O718

详解Camtasia的注释功能

淋雨

视频剪辑 Camtasia 录屏

关于第四次财富狂潮的思考,区块链如猛虎出笼?

CECBC

致恰达耶夫,致鸿蒙

脑极体

【Flutter 专题】114 图解自定义 ACEProgressPainter 对比进度图

阿策小和尚

Flutter 小菜 0 基础学习 Flutter Android 小菜鸟 6月日更

在Spring Bean实例过程中,如何使用反射和递归处理的Bean属性填充?

小傅哥

Java spring 小傅哥 反射调用 属性填充

一文了解预训练语言模型!

博文视点Broadview

GrowingIO 前端团队对于 GraphQL 的实践总结

GrowingIO技术专栏

大前端 graphql

面试系列-2 redis列表场景分析实践

李阿柯

php 面试 redis cluster

情指勤一体化指挥调度平台搭建,情报研判分析系统搭建

深圳首辆数字人民币主题观光巴士亮相

CECBC

react源码解析4.源码目录结构和调试

全栈潇晨

React Hooks react源码

HarmonyOS 2正式发布 硬件生态品牌HarmonyOS Connect一同亮相

科技汇

分治(详解残缺棋盘 —— Java代码实现)

若尘

算法 分治 java代码 6月日更

Spring Boot FatJar类加载机制简要分析

luojiahu

Spring Boot 类加载 ClassLoader FatJar

你们公司的数据库出过问题么?

escray

学习 极客时间 朱赟的技术管理课 6月日更

“扯皮”终结者,区块链帮农民工计薪水

CECBC

【Vue2.x 源码学习】第二篇 - Vue的初始化流程

Brave

源码 vue2 6月日更

中断Hwi:提高鸿蒙轻内核系统实时性及执行效率的秘密武器

华为云开发者联盟

鸿蒙 硬件 中断 鸿蒙轻内核 中断信号

k8s 插件管理工具之krew使用

雪雷

6月日更

Redis数据结构

邱学喆

数据库 redis 跳跃表

面试系列-3 限流场景实践

李阿柯

php lua redis 面试 限流算法

Polymer 0.8带来了性能的提升,也包含破坏性的变更_开源_Abel Avram_InfoQ精选文章