---
# System prepended metadata

title: Web 企業運算 - Week 13 ( 6/9 - 6/16 )

---

# Web 企業運算 - Week 13 ( 6/9 - 6/16 )
數科碩一 M0861101 許家維

### 本週自學清單
* React-Native實作練習 - 根據期末規定粗略切版
* Flexbox 複習
* React-Native Component
    * https://reactnative.dev/docs/components-and-apis.html
* 本文網址 : https://hackmd.io/5RsmJwKfTMqWQmY5NTKo4A?both

### 上課內容程式碼
App.js 程式
![](https://i.imgur.com/TRRzvJ2.png)
Explore.js 程式
![](https://i.imgur.com/Vdu0d2d.png)
Explore 手機畫面
![](https://i.imgur.com/IO4WlgU.jpg)
Saved.js 程式 (實作上課內容)
![](https://i.imgur.com/iHvOf9L.png)
Save 手機畫面
![](https://i.imgur.com/L0uHUae.jpg)






### 學習筆記
* React Native是一個行動應用程式開發框架，使用React.js構建行動應用程式。我們能夠使用Javascript建立原生ios及Android框架
* 使用React Native的範例如Facebook、Skype、Instagram
* 特點 : **Virtual DOM !!!**
    * React Native 在Javascript中抽象操作系統原生的UI組件高效機制，判斷新舊狀態，即可知道是哪個DOM發生變化，有更動才會進行渲染，不用每次重繪內容，通過不同的渲染引擎生成不同平台下的UI
* Expo Client
    * Expo Client（Android / iOS / Github） 主要負責即時接收由 XDE or 透過 Expo Cli 所部署（deploy）來的程式碼。
    * Expo 框架本身會把你撰寫的樣式、功能等打包成某種格式，透過 Wifi 或是雲端傳送到Expo Client 上，再由它轉譯成你想呈現的東西。
    * ![](https://i.imgur.com/rH4EbkP.png)


React Native 安裝步驟
1. ``` npm install -g expo-cli ``` : 安裝Expo cilent
2. ``` expo init 專案名稱  ``` : 初始化專案在XX資料夾
3. ``` cd 專案名稱  ```
4. ```npm start (expo start) ``` : 開啟 Expo Server & Metro bundler

Component 安裝步驟
1. 擁有一個React-Native環境
2. ``` npm install Component名稱 ``` : 安裝套件
3.  ```npm install``` : 安裝該套件的dependencies

常用Component
* View
    * View 是 React Native 中最基礎的 Component，如同 React DOM 裡面的 div 一樣重要，可以把它拿來做排版上的設定、處理 Touch 的 Event 等等。
    * 會對應到 iOS 上的 UIView、以及在 Android 的 android.view。
* Text
    * 用來呈現一段文字的 Component
* Image : 放圖片
* Touchables*
    * React Native 內建許多能處理 Touch 的 Component (統稱 Touchables*)，它們都能指定 onPress、onPressIn、onPressOut、onLongPress 等等的 Event Handler，而它們之間的差別在於它們被 Touch 之後會有不同的回饋
* Button
    * 在v0.37.0 才導入的新 Component
* ScrollView
    * 內容超出一個畫面所能顯示的量時，我們通常需要使用 ScrollView，讓它能藉由往下滑來瀏覽
* ListView
    * 通常被用在呈現大量陣列資料時使用，不會一次 Render 所有的 Item，只會 Render 呈現在畫面上的 Item，可以改善單純使用 ScrollView 的效能問題。
    * 需要傳遞一個 Function 給 renderRow，讓 ListView 知道怎麼去 Render 每一列




### 本周心得
這個禮拜上了業界使用率高的React Native，透過RN能快速開發APP。自己認為學RN一開始可能會遇到一點困難，因為每個小功能可能都需要下載及import一個Components，比起單純寫網頁多了一道程序。但他的即時顯示在手機上也讓我非常驚豔。未來我應該會深入研究此一框架，讓自己不僅僅只是開發web介面，也能透過RN開發APP介面。
這次的練習我挑戰先做一部分的期末作業，試試看能不能靠自己刻出來，目前已經完成Search Bar及 下方三個頁面的切換，在資料方面先粗略的科Layout，再下一周會試著把資料接上，實現完整的一個APP 
