- typescript
- angular
typescript是js的拓展,本質上在瀏覽器中運行的還是javascript,且編譯完成后的js版本是es5,所以不存在兼容性問題。主要添加的概念大致有接口(interface)、類(class)、繼承(extends)、箭頭函數,將js包裝得更像其他的后端語言的功能,這些類似于es6中的概念。ts中可以包含js代碼,這部分代碼不會被編譯。ts中含有類型檢查,也就是說可以為變量定制類型。接口可以作為定制類型(相當于面向對象中的實例化接口?)。
官網教程:
示例使用了typescript,js的一個超集。angular 使用typescript讓程序員使用工具提高開發效率,你也可以使用js來寫angular
注意:vue與react中模板最外層需要一個標簽將組件整體包起來,ng2則不需要,可以利用es6中的模板字符串提高模板的可讀性(主要是換行,保持代碼縮進規范)
單向綁定
單向數據綁定的典型:{{}}插值
還可以為組件或者dom元素綁定屬性或者事件
雙向綁定
ng中的數據雙向綁定由ngModel指令實現,需要從@angular/forms中導入FormsModule模塊,從而使用其中的ngModel。
修飾器(decoration)
一般以@開頭,如@Component()、@Injectable()、@NgModule(),有一些可以以傳入一個對象作為配置數據,但其后都必須跟著一個普通的類,意味著將這個類修飾成對應的組件,依賴注入,模塊等等。
@NgModule({
declarations: [
AppComponent
],
imports: [
BrowserModule
],
providers: [HeroService],
bootstrap: [AppComponent]
})
export class AppModule { }
元數據(metadata)
上述例子中,配置對象中的屬性都可以視為元數據,元數據告訴 Angular 如何處理一個類。
指令(directives)
可以通過@Directive()將指令元數據綁定到類上,指令可以通過添加元素屬性的方式進行使用。當 Angular 開始渲染時,它會根據指令對 DOM 進行修改。類似ngIf與ngFor這類指令會直接影響到dom樹的結構。組件作為指令的一個重要子類,組件本質上可以看作是一個帶有模板的指令。
<li *ngFor="let site of sites"></li>
<site-detail *ngIf="selectedSite"></site-detail>