---
# System prepended metadata

title: Web企業運算_Week7_許家維

---

# 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實現基本的視差滾動等等。以前上課總是照著老師做，這次我把以前的所學盡量融合進專案中，不僅能夠重新複習一次，更能加深自己的熟悉度，讓自己越寫越順手。

