你在 Angular 工作區的脈絡下開發應用程式。 一個工作區包含一個或多個專案的檔案。 專案是構成應用程式或可共用函式庫的一組檔案。
Angular CLI 的 ng new 指令會建立一個工作區。
ng new my-project
執行此指令時,CLI 會在新工作區中安裝必要的 Angular npm 套件與其他相依性,並建立一個名為 my-project 的根層級應用程式。
預設情況下,ng new 會在工作區的根層級建立一個初始骨架應用程式。
此骨架是一個簡單的歡迎應用程式,可立即執行且易於修改。
根層級應用程式與工作區同名,其原始檔案位於工作區的 src/ 子資料夾中。
這種預設行為適合典型的「多儲存庫」開發風格,也就是每個應用程式都位於各自的工作區中。
建議初學者與中階使用者使用 ng new,為每個應用程式建立個別的工作區。
Angular 也支援包含多個專案的工作區。 這種開發環境適合正在開發可共用函式庫的進階使用者, 以及採用「單一儲存庫」開發風格的企業,也就是以單一儲存庫與全域設定管理所有 Angular 專案。
若要設定單一儲存庫工作區,你應該略過建立根應用程式。 請參閱下方的為多專案工作區進行設定。
工作區設定檔
工作區內的所有專案共用同一份設定。 工作區的最上層包含工作區層級的設定檔、根層級應用程式的設定檔,以及根層級應用程式原始檔案與測試檔案的子資料夾。
| 工作區設定檔 | 用途 |
|---|---|
.editorconfig |
編輯器的設定。請參閱 EditorConfig。 |
.gitignore |
指定 Git 應忽略的刻意未追蹤檔案。 |
README.md |
工作區的文件。 |
angular.json |
工作區中所有專案的 CLI 設定,包含如何建置、提供與測試每個專案的設定選項。詳細資訊,請參閱 Angular 工作區設定。 |
package.json |
設定工作區中所有專案均可使用的 npm 套件相依性。此檔案的具體格式與內容,請參閱 npm 文件。 |
package-lock.json |
提供 npm 用戶端安裝到 node_modules 的所有套件的版本資訊。詳細資訊,請參閱 npm 文件。 |
src/ |
根層級應用程式專案的原始檔案。 |
public/ |
包含要由開發伺服器以靜態檔案形式提供,並在建置應用程式時原樣複製的圖片與其他資產檔案。 |
node_modules/ |
整個工作區已安裝的 npm 套件。工作區層級的 node_modules 相依性對所有專案可見。 |
tsconfig.json |
工作區中各專案的基礎 TypeScript 設定。所有其他設定檔都繼承自此基礎檔案。更多資訊,請參閱相關的 TypeScript 文件。 |
應用程式專案檔案
預設情況下,CLI 指令 ng new my-app 會建立一個名為 "my-app" 的工作區資料夾,並在工作區最上層的 src/ 資料夾中產生新的應用程式骨架。
新產生的應用程式包含根元件與範本的原始檔案。
工作區檔案結構就緒後,你可以在命令列使用 ng generate 指令,為應用程式加入功能與資料。
這個初始的根層級應用程式是 CLI 指令的 預設應用程式(除非你在建立額外的應用程式後變更預設值)。
對於單一應用程式工作區,工作區的 src 子資料夾包含根應用程式的原始檔案(應用程式邏輯、資料與資產)。
對於多專案工作區,projects 資料夾中的額外專案,則包含結構相同的 project-name/src/ 子資料夾。
應用程式原始檔案
src/ 最上層的檔案負責支援應用程式的執行。
子資料夾包含應用程式原始碼與應用程式專屬設定。
| 應用程式支援檔案 | 用途 |
|---|---|
app/ |
包含定義應用程式邏輯與資料的元件檔案。詳情請見下方。 |
index.html |
當有人造訪你的網站時所提供的主要 HTML 頁面。CLI 會在建置應用程式時自動加入所有 JavaScript 與 CSS 檔案,因此你通常不需要在此手動加入任何 <script> 或<link> 標籤。 |
main.ts |
應用程式的主要進入點。 |
styles.css |
套用到整個應用程式的全域 CSS 樣式。 |
在 src 資料夾中,app 資料夾包含專案的邏輯與資料。
Angular 元件、範本與樣式都放在這裡。
src/app/ 檔案 |
用途 |
|---|---|
app.config.ts |
定義應用程式設定,告訴 Angular 如何組裝應用程式。當你為應用程式加入更多提供者時,應在此宣告。 僅在使用 --standalone 選項時產生。 |
app.ts |
定義應用程式的根元件,名為 App。當你將元件與服務加入應用程式時,與此根元件相關聯的檢視會成為檢視階層的根。 |
app.html |
定義與 App 相關聯的 HTML 範本。 |
app.css |
定義 App 的 CSS 樣式表。 |
app.spec.ts |
定義 App 的單元測試。 |
app-module.ts |
定義名為 AppModule 的根模組,告訴 Angular 如何組裝應用程式。一開始只宣告 App 元件。當你為應用程式加入更多元件時,必須在此宣告。僅在使用 --standalone false 選項時產生。 |
app.routes.ts |
定義應用程式的路由設定。 |
應用程式設定檔
根應用程式的應用程式專屬設定檔,位於工作區根層級。
對於多專案工作區,專案專屬設定檔位於專案根目錄,也就是 projects/project-name/ 之下。
專案專屬的 TypeScript 設定檔,會繼承自工作區層級的 tsconfig.json。
| 應用程式專屬設定檔 | 用途 |
|---|---|
tsconfig.app.json |
應用程式專屬的 TypeScript 設定,包含 Angular 編譯器選項。 |
tsconfig.spec.json |
應用程式測試所用的 TypeScript 設定。 |
多個專案
多專案工作區適合以單一儲存庫與全域設定管理多個 Angular 專案的組織(即「單一儲存庫」模式)。 多專案工作區也支援函式庫開發。
為多專案工作區進行設定
如果你打算在一個工作區中擁有多個專案,可以在建立工作區時略過初始應用程式的產生,並為工作區取一個獨一無二的名稱。 下列指令會建立一個包含所有工作區層級設定檔的工作區,但不包含根層級應用程式。
ng new my-workspace --no-create-application
接著你可以產生在工作區內名稱獨一無二的應用程式與函式庫。
cd my-workspace
ng generate application my-app
ng generate library my-lib
多專案檔案結構
第一個明確產生的應用程式會放入 projects 資料夾,與工作區中的所有其他專案並列。
新產生的函式庫也會加入 projects 之下。
以這種方式建立專案時,工作區的檔案結構會與工作區設定檔 angular.json 的結構完全一致。
my-workspace/
├── … (workspace-wide configuration files)
└── projects/ (applications and libraries)
├── my-app/ (an explicitly generated application)
│ └── … (application-specific code and configuration)
└── my-lib/ (a generated library)
└── … (library-specific code and configuration)
函式庫專案檔案
當你使用 CLI 產生函式庫時(例如使用 ng generate library my-lib 指令),產生的檔案會放入工作區的 projects/ 資料夾。
關於建立你自己的函式庫的更多資訊,請參閱建立函式庫。
與應用程式不同,函式庫有自己的 package.json 設定檔。
在 projects/ 資料夾下,my-lib 資料夾包含你的函式庫程式碼。
| 函式庫原始檔案 | 用途 |
|---|---|
src/lib |
包含你的函式庫專案的邏輯與資料。與應用程式專案一樣,函式庫專案可以包含元件、服務、模組、指令與管道。 |
src/public-api.ts |
指定從你的函式庫主要進入點匯出的所有檔案。 |
package.json |
設定此函式庫的 npm 套件相依性與進入點(exports)。 |
tsconfig.lib.json |
函式庫專屬的 TypeScript 設定,包含 Angular 編譯器選項。 |
tsconfig.spec.json |
函式庫單元測試所用的 TypeScript 設定。 |