이 글에서는 주로 Angular Component를 분석하는 소스 코드 예제를 소개하고 참고 자료를 제공합니다.
Web Component
Angular Component를 소개하기에 앞서 W3C Web Components
Definition
W3C는 통일된 Component 표준 방식으로 Web Component의 표준을 제안하는 것에 대해 간단히 알아보겠습니다.
각 구성 요소에는 고유한 html, css 및 js 코드가 포함되어 있습니다.
웹 구성 요소 표준에는 다음과 같은 네 가지 중요한 개념이 포함됩니다.
1.사용자 정의 요소(사용자 정의 태그): 사용자 정의 HTML 태그 및 요소를 생성할 수 있습니다.
2.HTML 템플릿(HTML 템플릿): d477f9ce7bf77f53fbcf36bec1b69b7a 일부 콘텐츠를 정의하되 페이지에 로드하지 말고 JS 코드를 사용하여 초기화하세요.
3. Shadow DOM(가상 DOM): 다른 요소와 완전히 독립적인 DOM 하위 트리를 만들 수 있습니다. (HTML Imports ): HTML 문서에 다른 HTML 문서를 도입하는 방법, 01a3a061c487227e31d0b850a8271aa1.
Example
Define hello-comComponent<template id="hello-template"> <style> h1 { color: red; } </style> <h1>Hello Web Component!</h1> </template> <script> // 指向导入文档,即本例的index.html var indexDoc = document; // 指向被导入文档,即当前文档hello.html var helloDoc = (indexDoc._currentScript || indexDoc.currentScript).ownerDocument; // 获得上面的模板 var tmpl = helloDoc.querySelector('#hello-template'); // 创建一个新元素的原型,继承自HTMLElement var HelloProto = Object.create(HTMLElement.prototype); // 设置 Shadow DOM 并将模板的内容克隆进去 HelloProto.createdCallback = function() { var root = this.createShadowRoot(); root.appendChild(indexDoc.importNode(tmpl.content, true)); }; // 注册新元素 var hello = indexDoc.registerElement('hello-component', { prototype: HelloProto }); </script>Use hello-comComponent
<!DOCTYPE html> <html lang="zh-cn"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-COMPATIBLE" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> <meta name="author" content="赖祥燃, laixiangran@163.com, http://www.laixiangran.cn"/> <title>Web Component</title> <!--导入自定义组件--> <link rel="import" href="hello.html" rel="external nofollow" > </head> <body> <!--自定义标签--> <hello-component></hello-component> </body> </html>위 코드에서 볼 수 있듯이 hello.html은 표준에 의해 정의된 컴포넌트( hello-컴포넌트) 이 컴포넌트는 고유한 구조와 스타일, 로직을 갖고 있으며 index.html에 컴포넌트 파일을 도입하여 일반 태그처럼 사용할 수 있습니다.
Angular Component
Angular Component는 지시어의 일종으로 템플릿이 있는 지시어로 이해될 수 있습니다. 다른 두 가지 유형은 속성 지시문과 구조 지시문입니다. 기본 구성@Component({ selector: 'demo-component', template: 'Demo Component' }) export class DemoComponent {}
Type | Function | |
---|---|---|
AnimationEntry 메타데이터[] | 구성요소의 애니메이션 설정 | |
ChangeDetectionStrategy | 구성 요소의 변경 감지 전략 설정 | |
ViewEncapsulation | 구성 요소의 뷰 패키징 옵션 설정 | |
any[] | 설정은 구성요소 보기에 동적으로 삽입됩니다. 컴포넌트 목록 | |
[string, string] | 커스텀 컴포넌트의 보간 표시, 기본값은 이중 중괄호 | |
string | ES 아래에 컴포넌트의 모듈을 설정합니다. /CommonJS 사양 ID, 템플릿 스타일의 상대 경로를 확인하는 데 사용됨 | |
string[] | 구성 요소에서 참조하는 외부 스타일 파일 설정 | |
string[] | Set 구성 요소에서 사용하는 인라인 스타일 | |
string | 구성 요소의 인라인 템플릿 설정 | |
string | 구성 요소 템플릿이 있는 경로 설정 | |
Provider[] | 구성 요소 및 모든 하위 구성 요소 설정(ContentChildren 제외) 사용 가능한 서비스 |
Type | Function | |
---|---|---|
string | 템플릿에 구성 요소 인스턴스 설정 별칭 in을 사용하면 | |
{[key: string]: string} | 을 호출하여 구성 요소의 이벤트, 작업 및 속성을 설정할 수 있습니다 | |
string[] | settings 구성 요소의 입력 속성 | |
string[] | 구성 요소의 출력 속성 설정 | |
Provider[] | Set 는 구성 요소 및 모든 하위 구성 요소(ContentChildren 포함)에 사용할 수 있는 서비스(종속성 주입) ) | |
{[key: string]: any} | 구성 요소에 주입해야 하는 쿼리를 설정합니다 | |
string | 템플릿에서 이 구성 요소를 식별하는 데 사용되는 CSS 선택기를 설정합니다(구성 요소에 대한 사용자 정의 태그) |
生命周期钩子 | 调用时机 |
---|---|
ngOnChanges | 在ngOnInit之前调用,或者当组件输入数据(通过@Input装饰器显式指定的那些变量)变化时调用。 |
ngOnInit | 第一次ngOnChanges之后调用。建议此时获取数据,不要在构造函数中获取。 |
ngDoCheck | 每次变化监测发生时被调用。 |
ngAfterContentInit | 使用 |
ngAfterContentChecked | ngAfterContentInit后被调用,或者每次变化监测发生时被调用(只适用组件)。 |
ngAfterViewInit | 创建了组件的视图及其子视图之后被调用(只适用组件)。 |
ngAfterViewChecked | ngAfterViewInit,或者每次子组件变化监测时被调用(只适用组件)。 |
ngOnDestroy | 销毁指令/组件之前触发。此时应将不会被垃圾回收器自动回收的资源(比如已订阅的观察者事件、绑定过的DOM事件、通过setTimeout或setInterval设置过的计时器等等)手动销毁掉。 |
上面是我整理给大家的,希望今后会对大家有帮助。
相关文章:
위 내용은 Angular Component의 소스 코드 예제 분석의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!