1 Polymer简介
Polymer(聚合物,设计理念:材料学设计规范)
Polymer是google开发的web components方式的前端UI控件库
历史
2013年google I/O大会发布0.5开发者预览版
2015年 google I/O大会发布1.0版本
目前已更新到1.2.3版本
web components 是什么?
web组件就是web的一个一个元素标签, 如input标签,img标签,video标签等等。 web componts的概念就是把所有可重用的东西封装成元素组件, 下次要用,自己使用自己写好的标签即可。
polymer给大家提供了封装自定义标签的方法,它自己也有很多已经封装的标签
polymer的理念是一切功能皆元素, 即使是ajax, 也是元素,core-ajax标签可以发起ajax请求, 文档地址:http://www.polymer-project.org/docs/elements/core-elements.html#core-ajax
polymer已经有了一个组件库,里面有很多已经封装好的组件。
2 快速实践
新建newTag.html文件
1 | <link rel="import" href="polymer/polymer.html"> |
详细说明
1、如果使用该组件,则在html文件中导入即可1
<link rel="import" href="newTag.html">
2、声明周期的回调函数
- ceated
- attached
- detached
- attributeChanged
3、本地DOM的初始化顺序
- created callback
- local DOM initialized
- ready callback
- factoryImpl callback
- attached callback
4、通过dom-module定义一个本地DOM,及自定义标签,该标签的id为该自定义标签的名称<dom-module id="element-name">,名称必须用-连字符。
5、在<dom-module>中放置<template>,polymer将会自动克隆template标签中的内容到自定义标签中(即本地DOM)。
6、Polymer({ })实现组件。
7、可以在组件中定义样式,通过在template内定义style实现。
8、事件监听 on-eventname 和addEventlistener的区别。
polymer提供了on-eventname属性来对事件进行监听, 如监听按钮的点击事件:
1
<paper-button id="button" label="flat button" on-click="{{buttonClick}}"></paper-button>
另外还可以用addEventlistener监听事件,如
1
2
3
4this.$.button.addEventlistener('click',function(){
alert('click');
console.log(this);
});
在两种监听方法是有区别的。
- on-eventname 方式监听, 在监听函数中 this 指向的是当前polymer对象。可以用this来获得当前polymer对象的其他属性。
- 而addEventlistener 在监听函数中 this 是当前元素。
3 拓展–标准HTML 5组件实现API
• Shadow DOM:Shadow DOM API 支持您将元素添加到通过常用方法(比如document.getElementById())无法访问的 DOM 树。Shadow DOM 中的元素隐藏在暗处;它们对 DOM 树其他部分实际上是不可见的,在默认情况下,它们不受周围文档中的 CSS 的影响。
• 模板:HTML5 模板是一个惰性文档片段。当您需要显示这些片段时,可以 创建该模板,让片段出现在 DOM 树中。这些模板允许您封装那些您可以创建和定制的 HTML、JavaScript 和 CSS。(相当于polymer中的template)
• 定制元素定制元素是组件的标签。定制组件的标签必须包含一个连字符(例如
• HTML 导入:HTML 导入允许您从一个 HTML 文件中导入另一个,这使得您可以在其自身文件中实现定制组件。
这些 API 目前仍正开发中。撰写文本之时,还没有浏览器支持所有这些 API。因此,如果现在开始实现 HTML5 标准组件,那么可以从 Polymer 和 X-Tags 这两个开源项目中进行选择,它们提供了缺失的功能。