ng-核心特性(模型概念)

来源:https://www.cnblogs.com/ygjzs/archive/2020/01/22/12228032.html

angular核心特性 很多開發者已經做過非常多的項目,但是當你跟他聊的時候,你很快就會發現他並沒有掌握這門框架的精髓。打幾個比方,當別人提到 Spring 的時候,你的大腦裡面第一個想到一定是 DI、IOC、AOP 這些東西;當別人提到 Hibernate 或者 Mybatis 的時候,你的大腦里 ...


angular核心特性

很多開發者已經做過非常多的項目,但是當你跟他聊的時候,你很快就會發現他並沒有掌握這門框架的精髓。打幾個比方,當別人提到 Spring 的時候,你的大腦裡面第一個想到一定是 DI、IOC、AOP 這些東西;當別人提到 Hibernate 或者 Mybatis 的時候,你的大腦裡面立即會浮現出 ORM 的概念;當別人提到 React 的時候,你想到的應該是 VDom、JSX;當別人提到 jQuery 的時候,你首先想到的應該是$對吧?所以,你可以看到,任何一個成功的框架都有自己獨創的 “概念模型”,或者叫 “核心價值” 也可以。這是框架本身存在的價值,也是你掌握這門框架應該緊扣的主線,而不是上來就陷入到茫茫多的技術細節裡面去

組件(Components)

既然如此,問題就來了,新版本的 Angular 的核心概念是什麼呢?

非常簡單,一切都是圍繞著“組件”( Component )的概念展開的:

組件化

Component(組件)是整個框架的核心,也是終極目標。“組件化”的意義有2個:

  • 第一是分治,因為有了組件之後,我們可以把各種邏輯封裝在組件內部,避免混在一起
  • 第二是復用,封裝成組件之後不僅可以在項目內部復用,而且可以沉澱下來跨項目復用

模塊(Modules)

NgModule(模塊)是組織業務代碼的利器,按照你自己的業務場景,把組件、服務、路由打包到模塊裡面,形成一個個的積木塊,然後再用這些積木塊來搭建出高樓大廈。

模板(Templates)

組件是用來封裝對視圖的操作的,而我們的所謂的視圖其實也就是常規的 HTML 模板:

<!--The content below is only a placeholder and can be replaced.-->
<div style="text-align:center">
  <h1>
    Welcome to {{ title }}!
  </h1>
</div>

元數據(Metadata)

metadata.png

元數據告訴 Angular 如何處理組件類。

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})
export class AppComponent {
  title = '你的第一個 Angular 應用';
}

數據綁定(Data binding)

和 Vue.js 一樣,MVVM 思想(數據驅動視圖),通過特殊的 {{}} 語法將數據綁定到 DOM 元素,當數據改變的時候會影響視圖的更新。

指令(Directives)

和 Vue.js 一樣,Angular 擴展了 HTML 語法,增加了一些特殊的屬性指令,例如:

  • *ngFor 迴圈指令
  • *ngIf 條件判斷指令
  • [(ngModel)] 表單控制項雙向綁定指令
  • ...

Services(服務)

服務是一個廣義範疇,包括:值、函數,或應用所需的功能。

說白了服務就是針對某個單一或系統功能的封裝,例如在 Angular 核心包裡面,最典型的一個服務就是 Http 服務。

幾乎任何東西都可以是一個服務。 典型的服務是一個類,具有專註的、明確的用途。它應該做一件特定的事情,並把它做好。

例如:

  • 日誌服務
  • 和服務端介面交互的服務

組件類應保持精簡。組件本身不從伺服器獲得數據、不進行驗證輸入,也不直接往控制台寫日誌。 它們把這些任務委托給服務。

服務仍然是任何 Angular 應用的基礎。組件就是最大的服務消費者。

組件的任務就是提供用戶體驗,僅此而已。它介於視圖(由模板渲染)和應用邏輯(通常包括模型的某些概念)之間。 設計良好的組件為數據綁定提供屬性和方法,把其它瑣事都委托給服務。

Angular 不會強制要求我們遵循這些原則。 即使我們花 3000 行代碼寫了一個“廚房洗碗槽”組件,它也不會抱怨什麼。

依賴註入(Dependency injection)

“依賴註入”是提供類的新實例的一種方式,還負責處理好類所需的全部依賴。大多數依賴都是服務。 Angular 使用依賴註入來提供新組件以及組件所需的服務。

總結

我們學到的這些只是關於 Angular 應用程式的八個主要構造塊的基礎知識:

這是 Angular 應用程式中所有其它東西的基礎,要使用 Angular,以這些作為開端就綽綽有餘了。 但它仍然沒有包含我們需要知道的全部。

這裡是一個簡短的、按字母排序的列表,列出了其它重要的 Angular 特性和服務。

  • 動畫
  • 表單
  • HTTP
  • 組件生命周期
  • 管道過濾器
  • 路由
  • 測試

您的分享是我們最大的動力!

更多相關文章
  • Ecmascript 6 ECMAScript 6.0(以下簡稱ES6)是JavaScript語言的下一代標準,已經在2015年6月正式發佈了。 Ecmascript 是 JavaScript 語言的標註規範 JavaScript 是 Ecmascript 規範的具體實現 + 具體實現取決於各大瀏覽 ...
  • 我的項目由客戶端、後臺管理、資料庫和伺服器三部分組件,每次啟動項目都要一個一個啟動,挺麻煩的,現在寫一個.bat文件來批處理命令。 這個是我的啟動文件內容。 第一行運行的我wampServer伺服器,我用這個來運行和管理mySql 第二行,先啟動一個新的命令行視窗,\K 是為了不讓視窗自動關閉,我需 ...
  • app.module 路由模塊 路由守衛 統一處理認證 註冊 登錄 頁面刪除功能 typescript import { Component, OnInit } from '@angular/core'; import { Router } from '@angular/router' import ...
  • 創建組件,指令,過濾器和服務 可輔助創建資源的功能列表: | Scaffold | Usage | | | | | "Component" | | | "Directive" | | | "Pipe" | | | "Service" | | | "Class" | | | "Guard" | | | ...
  • 插值 文本綁定 屬性綁定 在布爾特性的情況下,它們的存在即暗示為 ,屬性綁定工作起來略有不同,在這個例子中: 如果 的值是 、`undefined false disabled 元素中。 使用 JavaScript 表達式 編寫模板表達式所用的語言看起來很像 JavaScript。 很多 JavaS ...
  • 啟用 Http 服務 open the root , import the symbol from , add it to the array. 發起一個 get 請求 Reading the full response 錯誤處理 ...
  • 在 Angular 中最常用的指令分為兩種,它們分別是 屬性型指令 和 結構型指令 。 NgClass 作用:添加或移除一組 CSS 類 NgStyle 作用:添加或移除一組 CSS 樣式 NgModel 作用:雙向綁定到 HTML 表單元素 NgIf 作用:根據條件添加或移除 DOM 語法: 我們 ...
  • 幾乎所有前端框架都在玩“組件化”,而且最近都不約而同地選擇了“標簽化”這種思路,Angular 也不例外。 對新版本的 Angular 來說,一切都是圍繞著“組件化”展開的,組件是 Angular 的核心概念模型。 組件的定義 以下是一個最簡單的 Angular 組件定義: :這是一個 Decora ...
一周排行
  • 本筆記摘抄自:https://www.cnblogs.com/PatrickLiu/p/8135083.html,記錄一下學習過程以備後續查用。 一、引言 今天我們要講行為型設計模式的第九個模式--訪問者模式。如果按老規矩,先從名稱上來看這個模式,我根本不能獲得任何對理解該模式有用的信息, 而且這個 ...
  • 微信公眾號:【 "Dotnet9的博客" 】,網站:【 "Dotnet9" 】,問題或建議:【 "請網站留言" 】, 如果對您有所幫助:【 "歡迎贊賞" 】。 開源C WPF控制項庫系列: "(一)開源C WPF控制項庫《MaterialDesignInXAML》" "(二)開源C WPF控制項庫《Pan ...
  • 如今,當談到 WPF 時,我們言必稱 MVVM、框架(如 Prism)等,似乎已經忘了不用這些的話該怎麼使用 WPF 了。當然,這裡說的不用框架和 MVVM,並不是說像使用 Winform 那樣使用 WPF,而是追本溯源,重識 WPF 與生俱來的綁定和命令的風采。 ...
  • 本筆記摘抄自:https://www.cnblogs.com/PatrickLiu/p/8176974.html,記錄一下學習過程以備後續查用。 一、引言 今天我們要講行為型設計模式的第十個模式--備忘錄模式,先從名稱上來看。備忘錄模式可以理解為對某個對象的狀態進行保存,等到需要恢復的時 候,可以從 ...
  • 前言 在兩年多以前就聽聞 Blazor 框架,是 .Net 之父的業餘實驗性項目,其目的是探索 .Net 與 WebAssembly 的相容性和應用前景。現在這個項目已經正式成為 Asp.Net Core 框架的一部分,公開了預覽版,官方教程也基本寫好上線了。就著這個機會,順便體驗一下這個框架用起來 ...
  • .NET web開發者在開發過程中,一定都踩過的坑,明明修改了js文件,可是部署到生產環境,客戶反饋說:“還是報錯啊”。。然後一臉懵逼的去伺服器上看文件,確實已經更新了。有經驗的coder可能就想到了,肯定是客戶端瀏覽器緩存搞的鬼。 此時會告訴客戶,請Crtl+F5刷新一下,這時,客戶會說:“Ctr ...
  • 哈嘍..大家好 很久沒有更新了,今天就來一篇最近開發用到的功能,那就是中英文切換,這個實際上也不是高大上,先說一下原理,在.NET Core框架中給我們提供了全球化的類,叫做Localization,其官方的文檔地址傳送門。 在我的項目中,我是這樣操作的,你想用別的方式,也可以看文檔自己去搞。這個已 ...
  • WPF允許使用Image元素顯示點陣圖。然而,按這種方法顯示圖片的方法完全是單向的。應用程式使用現成的點陣圖,讀取問題,併在視窗中顯示點陣圖。就其本身而言,Image元素沒有提供創建和編輯點陣圖信息的方法。 這正是WriteableBitmap類的用武之地。該類繼承自BitmapSource,BitmapS ...
  • 記錄LINQ學習過程。 概要 LINQ是一種“語言集成”的查詢表達式,使用LINQ可以智能提示和進行類型檢查。C#里可以編寫的LINQ查詢有SQL資料庫、XML文檔、ADO.NET數據集、支持IEnumerable和IEnumerable的對象。使用LINQ,可以簡單對數據源進行分組、排序、篩選。有 ...
  • 這兩天複習了下Request以及Response部分的內容。 主要內容 1. HTTP協議:響應消息 2. Request對象 3. Response對象 4. ServletContext對象 HTTP: 概念:Hyper Text Transfer Protocol 超文本傳輸協議 傳輸協議:定 ...
x