Skip to content

專案架構 | Angular 新手練功日誌

· 6 min

上一篇文章了解如何建立的專案後,今天我們就來了解專案的架構 專案架構

檔案命名#

根據 Angular CLI 的版本,會有不同的命名慣例

由於 Angular 維持有後綴命名慣例已經有一段時間了,因此這系列的文章也會以這種方式來命名檔案。讓我們在 angular.json 中的 schematics 加上這段設定,這樣可以在使用 Angular CLI 快速生成檔案的相關指令 (如 ng generate componentng generate service 等)時,會自動產生有後綴的檔案。

{
"projects": {
"<project-name>": {
...
"schematics": {
"@schematics/angular:component": { "type": "component" },
"@schematics/angular:directive": { "type": "directive" },
"@schematics/angular:service": { "type": "service" },
"@schematics/angular:guard": { "typeSeparator": "." },
"@schematics/angular:interceptor": { "typeSeparator": "." },
"@schematics/angular:module": { "typeSeparator": "." },
"@schematics/angular:pipe": { "typeSeparator": "." },
"@schematics/angular:resolver": { "typeSeparator": "." }
},
...
}

schematics 的設定會影響你使用 Angular CLI ,產生檔案的預設選項。例如,你可以設定產生元件時是否自動建立測試檔、是否加上樣式檔案、預設使用哪種樣式(CSS、SCSS)等。

專案進入點#

由於 Angular 預設採用 Single Page Application (SPA) 架構,所有 UI 的渲染都在瀏覽器端進行。因此,index.html 只包含一個 app-root 標籤,內容會由 Angular 框架在執行時動態產生與更新。

SPA 單頁式應用程式

  • Single Page Application (SPA) 是一種網頁應用程式架構,允許使用者在單一網頁上進行多次互動,而不需要重新載入整個頁面。
  • 所有 UI 渲染都在客戶端進行,並且透過 AJAX 或 Fetch API 與後端伺服器進行資料交換。這樣的設計可以提供更流暢的使用者體驗,因為頁面不需要頻繁地重新載入。
  • 缺點是 SEO 支援較差,因為實際上的內容是由 JavaScript 動態生成的,搜尋引擎可能無法正確索引這些內容。

在 Angular 專案中,應用程式的進入點是 main.ts 檔案,負責啟動 Angular 應用程式。啟動時,Angular 會將根元件 App 動態載入到 index.html 中的 app-root 標籤內。

就像圖片看到的一樣,原始碼不會有任何內容,所有的內容都是由 Angular 動態產生的,TypeScript 原始碼會被編譯成 JavaScript,這些檔案會被載入到 index.html 中,然後由瀏覽器執行,動態產生 DOM 結構。 原始碼

根據 Angular 版本不同,啟動方式略有差異,但核心概念一致。 目前 Angular 推薦的啟動方式:

import { bootstrapApplication } from '@angular/platform-browser';
import { appConfig } from './app/app.config';
import { App } from './app/app';
bootstrapApplication(App, appConfig)
  .catch((err) => console.error(err));

當然根據的版本不同,你可能會看到不同的寫法,例如傳統的模組化寫法:

import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
import { AppModule } from './app/app.module';
platformBrowserDynamic().bootstrapModule(AppModule);

這兩種寫法主要是獨立元件的寫法以及和傳統的模組化寫法。這在接下來的文章中會有更詳細的介紹。

結論#

這篇文章主要介紹了 Angular 專案的基本架構與應用程式進入點,讓大家對於 Angular 專案的結構有初步的了解。下一篇文章會先介紹 Angular 框架的最小單位 - 元件(Component)。