React Native

編年史

About Me

 

  • 傅耀德 (Dan、FuD、FuYaoDe)

    • 創科資訊全端工程師
    • 專注於 Node 生態體系
  • 教學 / 經歷
    • 經營 React Natvie Taiwan 社群
    • 2017 第 8 屆iT 邦鐵人賽 佳作
    • GitHub 1600 Star React Native UI 元件 react-native-app-intro
    • 2017 HelloJS 講師 - React Native
    • 2016 Trunk Studio - 前端開發 React / Redux 起手式
    • 2016 HelloJS 講師 - React Native

為什麼想講這個主題?

 React Native Taiwan

第一次辦活動

 React Native

進步神速

0.34 ~ 0.50

剛使用 RN

完成史詩級專案!

簡單介紹一下

React Native 是什麼?

  • 2013 年夏天 Facebook 內部駭客松的 Project。
  • 2015 年 1 月 React.js Conf 發表, 2015 年 5 月正式發佈,當時只有 iOS 版本,2015 年 9 月 Android 才正式支援。
  • 現在已經能開發
    • iOS
    • Android
    • Apple TV
  • 用 JavaScript 撰寫真正的原生 App,不是所謂的 Mobile Web App、HTML5 App、 Hybrid App

特色

跨平台

寫一份程式碼
即可達成跨平台 App 開發建置與維護。
  • iOS
  • Android
  • Apple TV

高效能

效能與使用體驗接近原生開發

快速除錯

開發時可以快速的更新 UI

不用重新編譯

熟悉的開發方式

與 Web 前端相同的 REST API 存取後端資料服務。

只要上架一次

CodePush

免送審更新程式之機制

那有誰在用?

Trunk Studio

那 RN 這一年來

改了什麼?

提升效能

新增 FlatList

  • 高效能
  • 更簡單使用
<FlatList
  data={[{key: 'a'}, {key: 'b'}]}
  renderItem={({item}) => <Text>{item.key}</Text>}
/>
const ds = new ListView.DataSource({rowHasChanged: (r1, r2) => r1 !== r2});
this.state = {
  dataSource: ds.cloneWithRows(['row 1', 'row 2']),
};

<ListView
  dataSource={this.state.dataSource}
  renderRow={(rowData) => <Text>{rowData}</Text>}
/>

ListView

FlatList

加快新手入門

CRNA

Create-React-Native-App

create-react-app

可以快速開始 React 專案

RN Playground

Expo

CRNA 

npm install -g create-react-native-app
create-react-native-app AwesomeProject
npm start

Amazon 也跟風

aws-mobile-react-native-starter

一些值得提的 Feature

 

  • react-native init XXX --template demo
  • 新增支援 Apple tv
  • display: none
  • TextInput 能讓鍵盤顯示 done 按鈕
  • 徹底移除了 MapView
  • 進入點合併一個 App.js
  • Develop Tool 能攔截 Http request
  • WebView 新增 injectJavaScript 方法
  • padding,margin,width,heigh 支持百分比
  • 超雷的把 PropTypes 獨立出來
  • 移除 React.createClass  替換成 createReactClass
  • 不再允许 multipart bundle
  • 一大堆的元件功能補齊
  • 一大堆的效能改進
  • 最狂的修正方法...更新文件,在文檔說明目前不支援...

 

Q&A

deck

By fuyaode

deck

  • 719