Web Component
在介绍Angular Component之前,我们先简单了解下W3C Web Components
定义
W3C为统一组件化标准方式,提出Web Component的标准。
每个组件包含自己的html、css、js代码。 Web Component标准包括以下四个重要的概念: 1.Custom Elements(自定义标签):可以创建自定义 HTML 标记和元素; 2.HTML Templates(HTML模版):使用 标签去预定义一些内容,但并不加载至页面,而是使用 JS 代码去初始化它; 3.Shadow DOM(虚拟DOM):可以创建完全独立与其他元素的DOM子树; 4.HTML Imports(HTML导入):一种在 HTML 文档中引入其他 HTML 文档的方法,。
概括来说就是,可以创建自定义标签来引入组件是前端组件化的基础,在页面引用 HTML 文件和 HTML 模板是用于支撑编写组件视图和组件资源管理,而 Shadow DOM 则是隔离组件间代码的冲突和影响。
示例
定义hello-component
Hello Web Component!
使用hello-component
从以上代码可看到,hello.html 为按标准定义的组件(名称为 hello-component ),在这个组件中有自己的结构、样式及逻辑,然后在 index.html 中引入该组件文件,即可像普通标签一样使用。
Angular Component
Angular Component属于指令的一种,可以理解为拥有模板的指令。其它两种是属性型指令和结构型指令。
基本组成
- 组件装饰器:每个组件类必须用@component进行装饰才能成为Angular组件。
- 组件元数据:组件元数据:selector、template等,下文将着重讲解每个元数据的含义。
- 组件类:组件实际上也是一个普通的类,组件的逻辑都在组件类里定义并实现。
- 组件模板:每个组件都会关联一个模板,这个模板最终会渲染到页面上,页面上这个DOM元素就是此组件实例的宿主元素。
组件元数据
自身元数据属性
类型 | 作用 |
---|---|
从 core/Directive 继承
类型 | 作用 |
---|---|
几种元数据详解
以下几种元数据的等价写法会比元数据设置更简洁易懂,所以一般推荐的是等价写法。
inputs
等价于:
outputs
等价于:
host
onClick(elem: HTMLElement) {
console.log(elem);
}
}
等价于:
queries - 视图查询