Web Components 原生开发使html组件化模块化

目录结构:

入口文件:==index.html==

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>使用组件</title>
<!-- <link rel="import" href="components/hello-world.html" id="hello-world"> -->
</head>
<body>
<hello-world></hello-world>


<script type="module" src="./components/hello-world.js"></script>
</body>
</html>

模块文件:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
// import './header.js' //引入组件

class HelloWorld extends HTMLElement {
constructor() {
super();
const shadowRoot = this.attachShadow({ mode: 'open' });
shadowRoot.innerHTML = this.template();
}
template() {
return `
<style>
h1{
color: #f00;
}
</style>

<h1>组件元素</h1>
<!-- <edo-header></edo-header> -->
`;
}
// 生命周期:首次被插入文档DOM时
connectedCallback() {
console.log('template element is connected');
}
// 生命周期:从文档DOM中删除时
disconnectedCallback() {
console.log(1111);
}
// 生命周期:被移动到新的文档时
adoptedCallback() {
console.log(22222);
}

// 生命周期:监听属性变化
attributeChangedCallback() {
console.log(3333333);
}
}
customElements.define('hello-world', HelloWorld);

打开:

效果:


Web Components 原生开发使html组件化模块化
https://github.com/chergn/chergn.github.io/6d0a34c28626/
作者
全易
发布于
2024年3月28日
许可协议