###### tags: `Angular` # 初探 Angular|基本介紹與環境建置 ## 關於 Angular > The modern web developer's platform(一套框架,多種平臺)  Angular 是由 Google 開發,基於 TypeScript 編寫的 JavaScript 前端框架,常和同為三大框架的 React 和 Vue 比較。 1.x 版的 AngularJS 其實還算是函式庫,直到 Angular 2 版本出現之後,與其說是一套框架,更常被稱作是一個開發平台,因為 Angular 強大的地方在於,整合了非常多功能給開發者使用: * i18n - 多國語系化 * Animation - 動畫 * Router - 提供路由機制開發 SPA * [Angular CLI](https://cli.angular.io/) - 命令列工具,可用來建立專案、建立應用和函式庫程式碼 * Material - Google 力推的 Material 網頁設計框架 * Augury - 官方出版的 Google Chrome 開發者工具,用於分析頁面中所用元件的狀態與方法 > 可參考 [Angular 2 skill map](https://github.com/TeamStuQ/skill-map/blob/master/data/designbyStuQ/png-Angular2-by-StuQ.png)。 ### Angular 基本架構 以下是官網提供的 Angular 架構圖:  Angular App 主要由這八個元素構成: * Metadata 元資料、描述資料 * 在 `@Component`、`@NgModule` 裝飾器函式中,用於描述該元件的附加資料 * 元資料中指定的樣式只會作用於該元件 * Template:模板,呈現畫面 * 權重:Template Input Variable(模板輸入變數)= Template Reference Variable(模板參考變數) > Component Variable * Component:元件,為最小 UI 單位 * Directive + Template 的組合 * Dependency Injection:倚賴注入 * DI 是一種 Design Pattern,為了將功能集中,減少相依性的設計模式 * Service:服務,針對特定事情處理邏輯 * Directive:指令,有三種呈現形式 * Component 元件,擁有樣板的指令 * Structural Directive 結構指令 * 修改檢視結構 * 如:`*ngFor`、`*ngIf`、`NgSwitch`,星號是用來簡化復雜語法的「語法糖」 * Attribute Directive 屬性指令 * 改變元素的外觀或行為 * 如:`NgClass`、`NgStyle`、`NgModel` * Data Binding:資料綁定 * Property Binding 屬性單向綁定 * Event Binding 事件單向綁定 * Two Way Binding 屬性與事件雙向綁定 * Module:模組,打包功能以實現功能模組化 參考資料: - [Angular小教室 - 用Note List了解頁面基本元素 (基礎篇)](https://github.com/marshal604/blog/issues/2) --- ## 環境建置 > 詳細可參考 [Angular 官方文件](https://angular.io/docs)。 ### 前置作業 要執行一個簡單的 Angular 應用,可使用 Angular CLI 工具來加速開發,建議使用 [Node.js](https://nodejs.org/en/) 的 npm 套件管理工具來安裝 Angular CLI。 可在終端機輸入下方指令,查看版本資訊,確認是否有安裝成功: ``` $ node -v ``` ### 第一步:安裝 Angular CLI 使用 Angular CLI 開發工具,可透過 ng 命令,快速產生 Directive 元件、服務元件(Service Component)、管線元件(Pipe Component),或是路由設定,並執行多種開發任務,比如測試、打包和釋出。 輸入下方指令進行安裝: ``` $ npm install -g @angular/cli ```  如果是在 mac 系統,指令必須加上 `sudo`,切換成管理員帳戶才有權限安裝: ``` $ sudo npm install -g @angular/cli ``` 可輸入 `ng version` 或是 `ng v` 指令查看版本資訊,確認是否安裝成功,畫面如下:  ### 第二步:建立 Angular 初始專案 透過 `new` 指令,可在當前目錄建立一個 Angluar 工作空間 (Workspace),並初始化 Angular 專案所需要的配置: ``` $ ng new my-app ```  安裝需要一段時間,完成後會出現 `Packages installed successfully. Successfully initialized git.` 這段文字:  除了透過 NPM 安裝必要套件,還會利用 Git 進行版本控制,並完成第一次提交(commit)。 ### 第三步:啟動開發伺服器 在本地端 build 和 serve 專案,並運行在 `http://localhost:4200/`: ``` $ cd my-app $ ng serve --open ```  - ng serve 指令會啟動開發伺服器,並監視檔案變化,一旦有改變就會重新建構應用 - `--open` 或簡寫 `-o` 可自動開啟瀏覽器 預設畫面如下:  ### VSCode 擴充套件:Angular Extension Pack 若使用 VSCode(Visual Studio Code)編輯器,可安裝一個叫做 Angular Extension Pack 的擴充套件,整合了 Angular 相關擴充套件方便使用:  ## 預設專案架構 > 詳細可參考這篇:[[Angular 深入淺出三十天] Day 04 - 資料夾結構說明](https://ithelp.ithome.com.tw/articles/10203534)。 建立好 Angular 專案之後,預設架構如下:  - 根目錄 my-app:一個新的 workspace - 子目錄 src/:主要開發原始碼 - app/:包含整個網頁應用程式的 Module、Component、Service - assets/:圖片等靜態資源 - environments/:環境變數設定檔 - 子目錄 e2e/:E2E 測試的程式碼 - browserslist:用來定義專案支援的瀏覽器與版本 - angular.json:Angular CLI 設定檔 - karma.conf.js:[Karma](https://karma-runner.github.io/3.0/index.html) 設定檔,用來進行單元測試,專案建立時會預設使用這套工具 - tsconfig.json:TypeScript 編譯設定檔 - tslint.json:TSLint 設定檔,為 TypeScript 的格式驗證工具,提高程式碼可讀性、偵測功能性錯誤 - 其他相關配置檔案 ### 從建立 Component 開始 透過 Angular CLI 提供的指令,我們能快速建立一個專案架構,其中最常使用 ng generate 來產生 Component、Service、Pipe 等檔案的程式碼。 指令如下: ``` $ ng generate component <name> ``` 或簡化成: ``` $ ng g c <name> ``` 舉例來說,如果要建立一個叫做 todo-list 的 Component,指令是 `ng g c todo-list`,接著 Angular 就會建立四個檔案,以及更新 app.module.ts:  * todo-list.component.html:模板 Template * todo-list.component.spec.ts:執行 ng test 命令會透過 Karma 進行測試 * todo-list.component.ts:元件 Component * todo-list.component.css:樣式 ## 小結 因為工作需要,而開始接觸 Angular 這套前端框架,卻也了解到這套工具涵括的功能種類眾多! 雖然一時半刻還無法消化,但其實也不是說剛開始就要完全了解,有些概念還是和 React 有相似之處,總之就先跟著官網提供的[練習指南](https://angular.tw/tutorial),一步一步跟著實作,慢慢踏入 Angular 的世界! 參考資料: - [Angular 全集中筆記 系列](https://ithelp.ithome.com.tw/users/20109645/ironman/3762) - [Angular 深入淺出三十天 系列](https://ithelp.ithome.com.tw/users/20090728/ironman/1600) - [Angular 大師之路 系列](https://ithelp.ithome.com.tw/users/20020617/ironman/1630) - [前端工程的夢幻逸品:Angular 2 開發框架介紹 ](https://blog.miniasp.com/post/2016/07/26/Introduction-to-Angular-2)
×
Sign in
Email
Password
Forgot password
or
Sign in via Google
Sign in via Facebook
Sign in via X(Twitter)
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
Continue with a different method
New to HackMD?
Sign up
By signing in, you agree to our
terms of service
.