[Angular #1]基本介紹

MiaHsu
6 min readSep 2, 2021

--

學習目標:了解 Angular 的特性、優缺點及專案使用情境

因為工作需要開始學習 Angular ,這對我來說是一個蠻大的挑戰,之前只有跟著 Huli 開的程式導師實驗計畫 React 學了一半(殘念)

加上 Angular 會需要使用到 TypeScript 及 RxJS ,以及 JavaScript ES6 class 及 modules 的觀念,從五月開始摸索,直到現在才慢慢清楚 Angular 輪廓。

有關前端三大框架的比較,網路上有蠻多相關的文章,以下是近期的文章,有興趣可參考:

因此,此系列為自己使用 Angular 後的心得筆記,一定不全面,可能還有一些觀念不太正確,文中若有任何錯誤的地方歡迎指正。

保哥的 slideshare 裡有很多觀念介紹及教學,這篇筆記的大部分也都取自於此。

什麼是 Angular?

  • 2010 年 Google 推出一款用來協助 SPA 應用程式運行的 JS 函式庫稱作「AngularJS」
  • 2016 年推出了全新的版本,但這個版本不再被視為一個函式庫,而是一個 Web 應用框架「Angular」
  • 由 Google 內 Angular 團隊主導開發生態系並與社群共同維護,一直持續至今。
  • Angular 版本穩定迭代,每半年會更新一次主版本,但基本上都是更新工具支援與核心程式微調整,若是新建專案通常都會使用最新版本來做開發。
資料源自:保哥

內建標準的網站模組化架構

▸ 從 Node.js 看模組化 [第三週] Node.js 基礎 — module.exports 和 require

為什麼要模組化

其實在後端語言中模組化的概念其實已存在一陣子,但以前的網站在前端處理方面較為單純,通常會在一進入網站時載入需要的資源(page load),少數動態的資料可以透過 XHR 的方式載入。

不過近年網頁在前端 JavaScript 的處理越來越複雜,因此就提出 Module 的概念,將 JavaScript 拆分成可以按照需求導入(import)的單獨模塊機制,將程式之間的關聯性、依賴性、複雜度降低。

▸ 模組化的好處

  • 假設一個 Module 出了問題,其他的 Module 還是可以順利執行。
  • 根據需求載入相對應的 Module。

由於模組化的概念在前端還算興新,對於 Module 載入的方式沒有個統一標準,因為 Angular 就提供了標準的網站模組化架構給開發者作為開發準則。

▎落實 MVC 設計模式中「關注點分離」的特性

▸ 什麼是 MVC?跟著小明一起搞懂技術名詞:MVC、SPA 與 SSR

使用 Angular CLI 新增一個 Component todolist

當我們使用 Angular CLI 新建一個 Component 時,會建立 CSS(SCSS)、View 及 Controller 的檔案,目的就是希望落實 MVC 設計模式。此外 Angular會利用裝飾器(Decorators)自動將三者進行連結。

至於 Model 的部分,則需要另外建立 .ts 檔案處理撈取跟管理資料的邏輯 (資料通常是呼叫 RESTful Service),這種把視覺呈現、控制、商業邏輯獨立放置的原則,就是希望開發者可以一次關注一種技術。

在 Google 內部有 1500 個 web 應用程式使用 Angular 所建構。在使用量如此大的情況下,為使程式碼能「易重構」、「易相互嵌套」,Angular 有非常完善的開發準則(產生、建置、測試、部署)及固定的程式碼架構與風格(coding style guide),因此也加速的工程師協作的效率。

以 HTML 和 TypeScript 來建立一個高效、複雜的單頁面應用程式(SPA)

在 View 方面與其他框架不同的點是以 HTML 檔作為樣板,透過 Data Binding 與元件屬性、方法、事件進行綁定。

Angular 是以 TypeScript 作為主語言,在變數或資料定義時必須指定使用哪一種資料型態,解決 JavaScript 是動態型別加弱型別的缺點,在「編譯」時期就能協助開發者察覺出型態上的問題,更有效率地開發及維護大型專案。

[補充說明] 動態資料類型語言的缺點:這類語言在執行時,容忍隱性的型別轉換,因此有時候會造成不可預期的結果你不可不知的 JavaScript 二三事#Day3:資料型態的夢魘 — — 動態型別加弱型別(2)

以 RxJS 處理非同步行為

有關於 Rx JS 的部分可參考:打通 RxJS 任督二脈

Angular 特點

  • 內建程式碼產生器(Angular CLI)改善開發流程
    Angular 有標準的程式架構,如果今天要新增一個專案或功能模組,手動建立就會需要花上不少的時間,透過 Angular CLI 就可以透過指令來產生相關檔案;此外也有引入套件、部署等功能。
  • 靜態程式碼分析工具(codelyzer)搭配 TSLint 快速修復
  • 具規範的 coding style guide
  • 技術論壇活躍,中文開發文件完整

Angular 缺點

  • 學習曲線高,需學習 TypeScript 及 RxJS
  • 具高完整性的框架,因此通常專案都很大

Angular 之專案應用

依應用面向

  • 網頁
  • 桌面應用程式(Electron)
  • 跨平台原生應用程式 App(Ionic Native、Native Script)

依專案需求

  • 較適合中大型、具規模、需求複雜的專案

--

--

MiaHsu

每件事都是最好的安排,成為更好的自己