# Web企業運算_Week7_許家維 ## 學習清單 * Angular 工具與環境建置練習 * 期中個人履歷網站使用技術 * Grid / Flex * Jquery smooth scrolling * Skrollr.js in Parallax Scrolling * 文字 : google font * icon : font-awesome * media query for rwd * 技術文章 : https://ithelp.ithome.com.tw/users/20090728/ironman/1600 * 本篇連結 : https://hackmd.io/lKXj9tzhTZiHcOs0e1juMA?both ## Code * 利用臺北市政府資料開放平台的臺北捷運列車到站站名資料 * 資料處理後格式,新增一個名為 station-list.const.ts 的檔案,然後在裡面加上以下程式碼 ``` export const stationList = [ { 'Station' : '三重國小站', 'Destination' : '南勢角站', 'UpdateTime' : '2018-10-15T22:14:41.557' }, { 'Station' : '士林站', 'Destination' : '大安站', 'UpdateTime' : '2018-10-15T22:14:35.497' }, { 'Station' : '士林站', 'Destination' : '淡水站', 'UpdateTime' : '2018-10-15T22:14:25.34' }, { 'Station' : '大安森林公園站', 'Destination' : '大安站', 'UpdateTime' : '2018-10-15T22:14:25.34' }, { 'Station' : '大坪林站', 'Destination' : '松山站', 'UpdateTime' : '2018-10-15T22:14:52.737' } ]; ``` * ```import { stationList } from './station-list.const';``` : 在app-component.ts 中,import 此檔案資料 * 將此資料改名為list供後續使用 ``` export class AppComponent { list = stationList; } ``` * HTML 設置 ``` <table> <thead> <tr> <th></th> <th>列車進入月台車站之站名</th> <th>行駛目的地</th> <th>資料更新日期</th> </tr> </thead> <tbody> <tr *ngFor="let item of list;index as i"> <td>{{i+1}}</td> <td>{{ item.Station }}</td> <td>{{ item.Destination }}</td> <td>{{ item.UpdateTime }}</td> </tr> </tbody> </table> ``` * 成果圖 ![](https://i.imgur.com/kW9KcnX.png) ## 成果 * 使用Angular前,必須先安裝Node.js * P.S 這裡要注意Node與Angular的版本相容性,否則會無法使用Angular喔! * 於終端機輸入 ```node -v``` 可找到自己目前的Node版本 * 安裝 Angular CLI : ```npm install -g @angular/cli``` * Angular CLI : Angular 的命令列工具 * ```ng new ng-app``` : 建立一資料夾ng-app並安裝angular內檔案 * 中間會要你選擇使用哪種類的css預處理器(css,sass..etc),若使用css直接按enter即可 ![](https://i.imgur.com/QIxe5DI.png) * ```cd ng-app``` : 移動到此資料夾內 * ```ng serve --open``` : 此時,系統會 1. 啟動本地端的 Web-Server,令我們能夠在 localhost:4200 上看到我們的頁面。 1. 將我們目前所開發的程式碼(已儲存的)編譯、打包後,讓 localhost:4200 載入 1. 當我們儲存我們的程式碼之後,會自動重複 2. 所敘述之事項,並自動令瀏覽器重新載入,不用我們自己手動刷新。 2. ```--open``` : 瀏覽器會自動開啟頁面,若沒有輸入此參數必須手動打開 3. ```--port``` : 改變port,預設為4200 * 開啟完成嚕! ![](https://i.imgur.com/dfFEAFK.png) ### **Angular 檔案結構說明** * **.editorconfig** - 幫助開發人員在不同的編輯器和 IDE 之間更容易定義與維護一致的編碼樣式。 * **.git** - Git 版本控制用的資料夾。 * **.gitignore** - Git 版本控制用的忽略設定檔。 * **angular.json** - Angular CLI 的設定檔。 * **node_modules/** - 此專案所有依賴的套件經由使用 npm install 安裝後,都會擺放到這裡。 * **package-lock.json** - 這個檔案是當我們使用 npm install 安裝套件時所產生的文件,用以記錄當前實際安裝的套件的來源與版號。 * **package.json** - 這個檔案是用來定義我們這一包東西是什麼的說明文件, * **README.md** - 這個檔案是這個專案的說明文件,採用 Markdown 的語法。 * **src/** - 主要在開發的所有程式碼都會放在這裡。 * **tsconfig.json** - 這個檔案是 TypeScript 編譯時看的編譯設定檔。 * **tslint.json** - 這個檔案是 TSLint 的設定檔。TSLint 是 TypeScript 的格式驗證工具,它可以檢查你寫出來的 TypeScript 的格式是不是具有可讀性、可維護性和功能性錯誤。 ### **/src 重要結構說明** * **app/** - 整個網頁應用程式的 Module、Component、Service 等等都放在這。 * **assets/** - 靜態資源放置處,如圖片。 * **browserslist** - 檔案內其實有說明,大意就是 Angular 的編譯器會根據此檔案的設定來加上 CSS 的前綴,**如果要支援 IE 9-11,記得要取消此檔案最後一行的註解**。 * **environments/** - 環境變數設定檔放置處。 * **favicon.ico** - 瀏覽器的網址列、書籤、頁籤上都會用到的小 icon 圖檔。 * **index.html** - 整個網頁應用程式的首頁與根頁面,也是 SPA 唯一的那一頁。 * **karma.conf.js** - Karma 的設定檔。Karma 是一套單元測試工具。 * **main.ts** - Angular CLI 在編譯與打包的時候,把這支檔案裡的程式,當做整個網頁應用程式的主要程式進入點。一般也是不會去動到這裡的程式碼。 * **polyfills.ts** - 載入 Angular 的程式之前,會預先載入的程式。裡面也有一些是如果需要支援較低版本的瀏覽器時,需要取消註解的程式。 * **styles.css** - 整個網頁應用程式共用的樣式設定檔。 ### **Angular 基礎元件** * ```{{}}``` : 插值表達式,將要綁定的資料變數放在 {{ }} 裡面,Angular 就知道在這裡要將變數裡的資料放進去。 * ```*ngFor``` : Angular的語法糖,遍歷並顯示出陣列內的所有元素 * ```*ngIf``` : Angular的語法糖,若符合條件即顯示出 ## 心得 本周初步探討了Angular的環境建置與基本的ngIf、ngFor等用法。 Angular是一門基礎學習曲線較高的程式,由於之前有略為接觸Vue的基本用法、資料綁定等等。目前教到的部分還能夠掌握。 這次因為期中作業的緣故,尚未把整個Angular的操作文件看過一次,接下來我會利用瑣碎時間,快速地瀏覽過Angular的官方文件。 近期由於在找實習,發現Angular、React等常常出現在需求或加分部分,所以我知道這個部分必須好好下工夫,至少要有個基本概念。 關於期中的個人履歷網站,除了完全使用Grid + Flex切版外,我也加入了以前學過的一些概念,像是jquery的smooth scrolling、利用skrollr.js實現基本的視差滾動等等。以前上課總是照著老師做,這次我把以前的所學盡量融合進專案中,不僅能夠重新複習一次,更能加深自己的熟悉度,讓自己越寫越順手。