https://cloud.tencent.com/developer/devdocscss
1.設計原則 (2)KISS (4)High Cohesion, Low Couplingvue 高聚合,低耦合;功能相關代碼緊密在一塊兒;功能不相干代碼拆分越明確越好ios (5)迪米特法則/最少知識原則 |
||||
Angular Angular由Google在2009年建立的MVVM框架,適用於中大型的企業級SPA應用。web V1.x官網: https://angularjs.org/
3.建立第一個 Angular項目
默認會在C:\Users\web\AppData\Roaming\npm目錄下安裝ng.cmd可執行文件及其相關文件 ng new myngapp01 此步須要聯網從NPM官網下載第三方模塊 Would you like to add Angular routing? y Which stylesheet format would you like to use? (Use arrow keys) ④進入項目根目錄,運行該項目(Node.js 項目)
4.Angular項目引導啓動流程 ④主組件中聲明瞭模板和樣式,最終渲染在index.html中<app-root/>
|
||||
(2)Angular核心概念之一 一一組件
使用快捷命令建立: (3)Angular核心概念之二———數據綁定 ③事件綁定: ( click)= "fn( )" (區分vue v-on /@) ⑥選擇綁定: [ngSwitch] *ingSwitchCase *ngSwitchDefault ⑧樣式綁定指令: [ngClass]
1.Angular核心概念之三一指令(Directive)
... < any"ngSwitchDefault> ... </any> </any> ④樣式綁定指令: [ngStyle] ⑤樣式綁定指令: [ngClass]
2.(瞭解)如何自定義指令 < div appNeedStrong> ... </div>
@Directive({ selector: 'appNeedStrong' }) 3.Angular中的雙向數據綁定
提示: ngModel指令處於FormsModule,必須在當前模塊中聲明導 import { FormsModule } from '@angular/forms'; 若是想監視模型數據的改變(就像Vue.js 中的watch函數),可使用 <input [(ngModel)]= "userName" (ngModelChange)="fn()">
示例:建立密碼輸入框,隨着用戶的輸入,後面的提示信息不停的在改變: "密碼不能爲空"
使用Angular實現TodoList
4.Angular核心概念之四---管道 ②uppercase:把數據轉換爲大寫形式
|
||||
1.自定義管道:
示例:建立一個管道: zzmm,能夠把數字1/2/3分別轉換爲"黨員/中共黨員」、」團員/中國共青團團員」和"羣衆/中國人民羣衆」 |
||||
2.(重點/難點)父子組件間的數據傳遞 (1)父組件給子組件傳遞數據:父=>子-Props Down (1.1)子組件聲明本身專有的屬性 @Input() //Input裝飾器把下面的屬性變爲「輸入型屬性」 ----------------------------------------------------------------------- parent.component.html: <h1>這裏是父組件</h1>
parentName: '父親的名稱'
child.component.ts: -----------------------------------------------------------------------
(2.1)子組件聲明並觸發事件,觸發時攜帶本身的數據 @Output()
< app-child (unameEvent)= "doEvent($event)" > --------------------------------------------------------------------- parent.component.html:
child.component.ts: |
||||
3.服務和依賴注入 |
||||
inject:打針,注入
Angular建立對象的兩種方式: (2)依賴注入(Dependency Injection) 在構造方法中聲明須要依賴某個對象,且該對象是」能夠被注入的 |
||||
TypeScript知識點一 強類型語言: 1.類型聲明: work( tool: number[] ): void{
2.接口:是一種特殊的class,用於規定一個class必須提供特定的方法 run(){} stop(){} }
3.類成員(屬性/方法)的訪問修飾符 ①private: 私有成員,只能在當前類內部使用; class中的屬性通常都應該聲明爲私有的或被保護的!
4.類屬性的聲明/賦值方式 public constructor( price: number ){
上面的代碼能夠簡寫爲: |
||||
1.Angular核心概念之六————服務和DI(依賴注入) Component:負責視圖的數據綁定/事件處理 注意: Angular 中的依賴注入是基於構造方法的參數類型,而與前後順序無關 建立服務: }
問題: Angular 中的Service能夠在哪裏被提供/Service的提供者/注入器有哪些? 萬式2:在模塊中提供----在當期模塊中的全部組件共用同一 個服務對象(app module.ts中) @Injectable() 方式3:在組件聲明中提供----該服務僅能做用於當前組件(組件的ts文件中) |
||||
問題:前端技術中有哪些異步請求方案? 由W3C提供的XHR的替代方案,採用Promise |
||||
2.Angular中異步請求服務器端數據 imports: [ HttpClientModule ] (3)調用HttpClient提供的異步數據請求服務 |
||||
3. Rx.js和Observable對象 乙方聲明「訂閱(subscribe)" 甲方; HttpClient服務採用了「觀察者/訂閱-發佈模式" ,其最核心對象爲: |
||||
示例:建立組件: ProductList,點擊「加載更多」則異步請求更多數據,呈如今表格中, | ||||
4.Angular中組件的聲明週期鉤子函數 Hooks Function:聲明好的特定的函數,到了指定的時間點,就會被自動執行 面試題: Angular中組件的生命週期鉤子函數按順序有: (3)ngDoCheck( ):組件正在執行變化檢查 (4)ngAfterContentlnit( ):組件內容初始化以後 (8)ngOnDestroy( ):組件即將從DOM樹上銷燬,用於釋放定時器、取消訂閱...執行且僅執行一次 |
||||
5.Angular核心概念之七一路由和 SPA應用 SPA應用的優勢: (1)不便於實現SEO優化 SPA應用的核心----路由詞典(把一個地址和一個組件一 一對應起來): [
ng g component index ng g component productList ng g component productDetail
(1)在根模塊中建立路由詞典 (3)在根模塊的模板中聲明路由組件的佔位符 <router-outlet></router-outlet> (4)讓客戶端請求路由地址 http://127.0.0.1:4200/product/list |
||||
示例: 1)建立以下四個組件: ng g component index ng g component productList ng g component productDetail ng g component userCenter
productDetail => product/detail let routes=[{path:'',component:...},...] 3)在根模塊中註冊路由詞典 RouterModule.forRoot(routes); app.component.html: <router-outlet></router-outlet> http://127.0.0.1:4200/user/center
1.路由詞典的配置
let routes=[
{path:'',component:IndexComponent},
{path:'index',component:IndexComponent},
{path:'product/list',component:ProductListComponent},
{path:'product/detail',component:ProductDetailComponent},
{path:'user/center',component:UserCenterComponent},
{path:'**',component:NotFoundComponent}
注意:路由詞典中的路由path不能以'/' 開頭,可是,路由跳轉時指定的路徑最好都以‘/’開頭 constructor(private router:Router){} ... this.router.navgeteByUrl('router')
<any routerLink="...">
注意:routerLink指令能夠用在任何元素上,如DIV、A、BUTTON
3.路由參數 -------------------------------------------------------------------- { path: product/detail/:pid', component: ... } ③在目標組件中讀取當前路由的參數
|
||||
4.路由嵌套 let { path: 'myinfo', component: .... ] 路由出口: 示例:爲「用戶中心」建立嵌套路由
5.路由守衛 使用方法: ....... } ②使用路由守衛 [
建立一個路由守衛: |
||||
移動端應用的種類: (2)Web App:
(3)Hybrid App: (4)Dart/ Flutter一 表明着將來
6.基於Angular的UI組件庫 Angular相關的組件庫: lonic概述: https://ionicframework.com/ lonic是一個基於HTML/CSS/JS技術的,建立混合App的UI組件庫技術。底層能夠不依賴於任何框架(弓|入.css和.js就能夠運行),也能夠
lonic CLI = Angular CLI + UIModule +移動端打包工具... 移動端打包工具 md: Meterial Design Android Studio
使用方法: (npm config set registry https://registry.npm.taobao.org/)
建立好項目後會自動調用npm i 下載所依賴的第三方模塊 (4)啓動客戶端瀏覽器,訪問開發服務器 用(手機)瀏覽器訪問項目 http://127.0.0.1:4200
lonic的九種主題色----color:
2.lonic App的頁面佈局 ion-header > ion-toolbar > ion-title >標題 </ion-app> ------------------------------------------------------------ lonic主體中的「柵格佈局系統」一仿 Bootstrap3:
Module:模塊
3.lonic提供預約義組件 Button:按鈕<ion-button> this.alertController.create({
this.modalController.create({ Item:列表項 <ion-item detail href= "#">
卡片:< ion-card> ion-card-header + ion-card-content< /ion-card>
InfiniteScroll:無窮滾動組件,滾動到底部時加載更多內容 <ion-infinite-scroll threshold = "20px" (ionInfinite)= "loadData" >
搜索條: <ion-searchbar> 2.Angular & lonic階段項目
ng g component main 盛放ion-tabs組件的頁面 ng g component not-found 404頁
確保每一個組件都在AppModule中進行了聲明: declarations:[ ] <ion-app> <ion-router-outlet></ion-router-outlet> <app-main> </app-main> </ion-app>
(4)編輯main.component.html,聲明頁籤組件 <ion-tab-bar> <ion-tab-button>圖標+文字</ion-tab-button> </ion-tab-bar> </ion-tabs>
(5)編輯路由配置模塊文件app-routing.module.ts,聲明並註冊路由詞典 {path: 'product-detail/:pid', component: ProductDetailComponent}, {path: 'cart', component: CartComponent}, -------------------------------------------------------------------------------------------- (6)開始修改主頁組件模板: index.component.html, 添加頁面內容 <ion-header> -------------------------------------------------------------------------------------------
(7)修改商品列表頁模板: product-list.component.html, 添加頁面內容 ------------------------------------------------------------------------------------------
HTML元素屬性(Attribute)和JS DOM對象的屬性(Property) <td colspan="3">
自定義一個管道內倆種模式 |