Lanttcat / Vimer

blog by Issues
0 stars 0 forks source link

Web Components尝试 #14

Open Lanttcat opened 5 years ago

Lanttcat commented 5 years ago

学习Web Components的本意是希望把它和React结合到一起,看能不能在组件复用方面有些突破

目前的问题

  1. 一个node tree可以attach几个Shadow root
  2. 如何实现数据的逆向流动

关键技术

坊间传言,有四项主要的技术:

大体的过程是:

  1. 使用ECMAScript 2015类语法创建一个类,来指定web组件的功能(参阅获取更多信息)。
  2. 使用CustomElementRegistry.define()方法注册您的新自定义元素 ,并向其传递要定义的元素名称、指定元素功能的类以及可选的,其所继承自的元素。
  3. 如果需要的话,使用Element.attachShadow()方法将一个shadow DOM附加到自定义元素上。使用通常的DOM方法向shadow DOM中添加子元素、事件监听器等等。
  4. 如果需要的话,使用[` 和 ``方法定义一个HTML模板。再次使用常规DOM方法克隆模板并将其附加到您的shadow DOM中。
  5. 在页面任何您喜欢的位置使用自定义元素,就像使用常规HTML元素那样。
Lanttcat commented 5 years ago

相关文章

Web Components will replace your frontend framework HTML Living Standard

Lanttcat commented 5 years ago

写俩AboutMe和Code Format的demo

Lanttcat commented 5 years ago

Polymer框架

Lanttcat commented 5 years ago

Shadow DOM的样式问题

基本使用

<style>
  c-e::part(textspan) { color: red; }
</style>

<template id="c-e-template">
  <span part="textspan">This text will be red</span>
</template>
<c-e></c-e>
<script>
  // Add template as custom element c-e
  ...
</script>

能够应用样式选择器

custom element的嵌套样式选择

Lanttcat commented 5 years ago

一些定义

关于shadow

Shadow Root和Shadow host:一个Element绑定了Shadow Root,那么就称这个Element为Shadow host

Lanttcat commented 5 years ago

几个主要的回调函数

  1. connectedCallback
  2. disconnectedCallback
  3. adoptedCallback
  4. attributeChangedCallback