You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
shadom-dom操作和平常的dong操作差不多,对this.attachShadow({mode: 'open'});。shadow-dom最大的好处就是实现了dom隔离。例如css只会对内部的shadow-dom有效,并不影响外部的元素。这应该是css最完美的解决方案了,目前很多组件化css解决方案css modules、各种css in js都不太优雅
web-components主要由3部分组成
custom-elements
从字面意思可以知道这是自定义元素的意思。区别于原生html元素,我们可以自己定义它的行为。按照是否从原生html元素继承,可分下面两类
两类custom元素
生命周期
custom-elements 比较赞的一点是具有以下的生命周期
connectedCallback 连接到dom后触发
类似于react的componentDidMount,当自定义元素首次加载到dom会触发,如果我们想获取传入的attributes来选择展示内容的话,需要将逻辑放在这个周期内而不是constructor中,constructor是取不到attributes的值,还需要注意的是,受html限制,通过html传入的attributes值都是字符串
disconnectedCallback 当自定义元素从DOM树中脱离触发
对于绑定元素的事件监听,可以在这里进行解绑,防止内存泄漏
adoptedCallback 当自定义元素移动到新的document触发
attributeChangedCallback 自定义元素属性值改变时触发。这个需要配合
static get observedAttributes(){return ['需要监听的属性']}
使用,表示哪些属性变化才会触发这个生命周期。对于动态attributes进行渲染,这个非常好用一个Autonomous custom elements web-components通常使用方法如下
如果是扩展原生元素的web-components则是类似
shadom-dom
shadom-dom操作和平常的dong操作差不多,对
this.attachShadow({mode: 'open'});
。shadow-dom最大的好处就是实现了dom隔离。例如css只会对内部的shadow-dom有效,并不影响外部的元素。这应该是css最完美的解决方案了,目前很多组件化css解决方案css modules、各种css in js都不太优雅template 和 slot
类似于vue的概念,用来实现html复用和插槽效果
template结合custom-elements用法
slot用法则和vue的基本一致
使用
web-components的使用非常方便,有几种方法
1、直接html中使用自定义标签
2、通过js引入
实际开发结合polymer体验更佳
最后写了个web-compoennts todolist
demo
代码如下
一些需要注意的地方:
1、通过html传递属性值,由于是通过attributes传入,所以都是字符串
2、组件之间的通信传递需要通过自定义事件
The text was updated successfully, but these errors were encountered: