狠狠撸

狠狠撸Share a Scribd company logo
React-Native 實戰
融合現有 iOS App
Sam Lee
Sam Lee
現職 : 趨勢科技 FED
熱衷 : 前端 / 後端 技術
淺草籤 作者
Email: lee.orz@gmail.com
Agenda
? Why React-Native
? 實戰
? Demo
Why React-Native ?
問 題
? UI 變化的很快
? iOS / Android 的 UI 無法共?用
? 上架時間??長 (Review時間)
? 線上修正 Bug 相對困難
WebView的難處
? 效能不佳
? 相容性問題
? 离线问题
站在巨?人肩膀!
跨平台開發?工具
?工具 React-Native
PhoneGap/
Cordova
Appcelerator Xamarin Corona
語?言
Javascript,
JSX, CSS
HTML5,CSS,
Javascript
Javascript .NET .NET
輸出 Native
Webview +
Native
Native Native Native
速度 快 慢 快 快 快
學習難度 低 低 中 ?高 ?高
相容性 iOS/Android iOS/Android iOS/Android
iOS/
Android
iOS/
Android
跨平台開發?工具
?工具 React-Native
PhoneGap/
Cordova
Appcelerator Xamarin Corona
語?言
Javascript,
JSX, CSS
HTML5,CSS,
Javascript
Javascript .NET .NET
輸出 Native
Webview +
Native
Native Native Native
速度 快 慢 快 快 快
學習難度 低 低 中 ?高 ?高
相容性 iOS/Android iOS/Android iOS/Android
iOS/
Android
iOS/
Android
跨平台開發?工具
?工具 React-Native
PhoneGap/
Cordova
Appcelerator Xamarin Corona
語?言
Javascript,
JSX, CSS
HTML5,CSS,
Javascript
Javascript .NET .NET
輸出 Native
Webview +
Native
Native Native Native
速度 快 慢 快 快 快
學習難度 低 低 中 ?高 ?高
相容性 iOS/Android iOS/Android iOS/Android
iOS/
Android
iOS/
Android
react-native init YourProject
熟悉的 React
Index.ios.js
產?生 JSBundle File
Cmd + R = Reload
Cmd + D = Debug
Debug in Browser
Live Reload!
是不是 Webview?
JSDC 2015 React-Native 實戰
JSDC 2015 React-Native 實戰
繼承 UIView 不是 UIWebView !
JavaScriptCore
iOS7+
翻译?米糕!!!!!!!
ReactJS JavascriptCore
RCTBridge
Native?
Method
Javascript Bridge
Obj-C bridge
要如何跟現有App 整
合?
主畫?面
Thumb?
View
TableVie
Thumb?
View
Thumb?
View
Thumb?
View
Thumb?
View
Thumb?
View
React ?
??目標
????????
三 步 驟
? 在現有App 安裝 React-Native (CocoaPods)
? 把 React Native View (RCTRootView) 放進現有 App
? 準備 index.ios.js (iOS)
遇到的問題
? 把 React Native View (RCTRootView) 放進現有 App
吓
沒那麼簡單, 就能替換 ?
別的全不看...
原?生的 TableView 宣告
取代成 RCTRootView
JSDC 2015 React-Native 實戰
JSDC 2015 React-Native 實戰
JSDC 2015 React-Native 實戰
ReactJS JavascriptCore
RCTBridge
Native?
Method
Javascript Bridge
Obj-C bridge
三 步 驟
Create
Module
Import?
RCTBridgeModule
Export ?
Method
遇到的問題
Export ?
Method
Index.ios.js
開始刻 React-Native UI
JSDC 2015 React-Native 實戰
取得跟 Native module ReactAPI 的接?口
透過 ReactAPI module 呼叫 Native Function
Render出 ListView
安裝?
React-Native
ReactJS File
React-Native?
View
融 合!!
完成!!!
Demo Time…
感 想
徹底擺脫WebView
? 解決了效能跟兼容性的問題
? Component 的設計, 所以元件可以?自由組合使?用
? 可以使?用原?生的 Animation
? 跟 WebView ?一樣可以在線更新
Learn once , Write
anywhere.
挑 戰 / 疑 慮
? 從 Web 轉到 Native 觀念的不同
? Appstore 的政策是否會改變
? 低階機型的效能問題
? Upgrade 的問題
? iOS6 無法使?用 (這會隨時間消逝)
關於 Android
Demo 2?
iOS & Android
Q & A
四 步 驟
? 新增 ?
compile ‘com.facebook.react:react-native:0.11+’ ?
到 build.gradle 中的 dependencies 區塊
? 在 AndroidManifest.xml 中加?入 ?
<activity
android:name="com.facebook.react.devsupport.DevSettingsActivity" />
? 參考 ?
https://gist.github.com/corbt/7cf2f0282a8936122c28?
把 View 放進 Android !
? Follow React-Native 官網的 ?
GUILDS (ANDROID) -> Native Modules?
https://facebook.github.io/react-native/docs/native-modules-
android.html#content?
謝 謝
Links
? React-Native : ?
https://facebook.github.io/react-native/
? Integrating React Native with an Existing App:?
https://corbt.com/posts/2015/09/18/integrating-
react-native-with-an-existing-app.html
? Put your React-Native View to Android: ?
https://gist.github.com/corbt/
7cf2f0282a8936122c28

More Related Content

What's hot (20)

Github Actions
Github ActionsGithub Actions
Github Actions
Weizhong Yang
?
導入 Flutter 前你應該知道的事
導入 Flutter 前你應該知道的事導入 Flutter 前你應該知道的事
導入 Flutter 前你應該知道的事
Weizhong Yang
?
Android 逆向工程心得分享
Android 逆向工程心得分享Android 逆向工程心得分享
Android 逆向工程心得分享
EnPing Eric Hsieh
?
Appium手机自动化测试 tester home公开课
Appium手机自动化测试 tester home公开课Appium手机自动化测试 tester home公开课
Appium手机自动化测试 tester home公开课
lihuazhang
?
Flutter 踩雷心得
Flutter 踩雷心得Flutter 踩雷心得
Flutter 踩雷心得
Weizhong Yang
?
CocoaPods private repo
CocoaPods private repoCocoaPods private repo
CocoaPods private repo
Weizhong Yang
?
Continuous Delivery - 敏捷開發的最後一哩路
Continuous Delivery - 敏捷開發的最後一哩路Continuous Delivery - 敏捷開發的最後一哩路
Continuous Delivery - 敏捷開發的最後一哩路
Miles Chou
?
GitHub Action Introduction
GitHub Action IntroductionGitHub Action Introduction
GitHub Action Introduction
Duran Hsieh
?
ModernWeb 2017 angular component
ModernWeb 2017 angular componentModernWeb 2017 angular component
ModernWeb 2017 angular component
Chieh Kai Yang
?
美团点评技术沙龙06 - 提高移动端兼容性测试效率工具
美团点评技术沙龙06 - 提高移动端兼容性测试效率工具美团点评技术沙龙06 - 提高移动端兼容性测试效率工具
美团点评技术沙龙06 - 提高移动端兼容性测试效率工具
美团点评技术团队
?
2010.09.21专题报告
2010.09.21专题报告2010.09.21专题报告
2010.09.21专题报告
黄振庭
?
[2018 .NET Conf].NET Core與Azure DevOps應用於企業開發
[2018 .NET Conf].NET Core與Azure DevOps應用於企業開發[2018 .NET Conf].NET Core與Azure DevOps應用於企業開發
[2018 .NET Conf].NET Core與Azure DevOps應用於企業開發
Edward Kuo
?
DevOps Taiwan CICD Pipeline Tools
DevOps Taiwan CICD Pipeline ToolsDevOps Taiwan CICD Pipeline Tools
DevOps Taiwan CICD Pipeline Tools
scott liao
?
Rancher 快速打造叢集的解決方案
Rancher 快速打造叢集的解決方案Rancher 快速打造叢集的解決方案
Rancher 快速打造叢集的解決方案
Miles Chou
?
第十一堂 學習編譯與上架
第十一堂 學習編譯與上架第十一堂 學習編譯與上架
第十一堂 學習編譯與上架
力中 柯
?
01 DevOps and Azure DevOps overview
01 DevOps and Azure DevOps overview01 DevOps and Azure DevOps overview
01 DevOps and Azure DevOps overview
Alan Tsai
?
Dart null safety
Dart null safetyDart null safety
Dart null safety
Weizhong Yang
?
2019/7/27 先別開 Branch 了,你聽過 Feature Toggle 嗎?
2019/7/27 先別開 Branch 了,你聽過 Feature Toggle 嗎?2019/7/27 先別開 Branch 了,你聽過 Feature Toggle 嗎?
2019/7/27 先別開 Branch 了,你聽過 Feature Toggle 嗎?
Miles Chou
?
摩登開發團隊的DevOps之道 (@DevOpsTaiwan)
摩登開發團隊的DevOps之道 (@DevOpsTaiwan)摩登開發團隊的DevOps之道 (@DevOpsTaiwan)
摩登開發團隊的DevOps之道 (@DevOpsTaiwan)
Chen Cheng-Wei
?
導入 Flutter 前你應該知道的事
導入 Flutter 前你應該知道的事導入 Flutter 前你應該知道的事
導入 Flutter 前你應該知道的事
Weizhong Yang
?
Android 逆向工程心得分享
Android 逆向工程心得分享Android 逆向工程心得分享
Android 逆向工程心得分享
EnPing Eric Hsieh
?
Appium手机自动化测试 tester home公开课
Appium手机自动化测试 tester home公开课Appium手机自动化测试 tester home公开课
Appium手机自动化测试 tester home公开课
lihuazhang
?
Continuous Delivery - 敏捷開發的最後一哩路
Continuous Delivery - 敏捷開發的最後一哩路Continuous Delivery - 敏捷開發的最後一哩路
Continuous Delivery - 敏捷開發的最後一哩路
Miles Chou
?
GitHub Action Introduction
GitHub Action IntroductionGitHub Action Introduction
GitHub Action Introduction
Duran Hsieh
?
ModernWeb 2017 angular component
ModernWeb 2017 angular componentModernWeb 2017 angular component
ModernWeb 2017 angular component
Chieh Kai Yang
?
美团点评技术沙龙06 - 提高移动端兼容性测试效率工具
美团点评技术沙龙06 - 提高移动端兼容性测试效率工具美团点评技术沙龙06 - 提高移动端兼容性测试效率工具
美团点评技术沙龙06 - 提高移动端兼容性测试效率工具
美团点评技术团队
?
2010.09.21专题报告
2010.09.21专题报告2010.09.21专题报告
2010.09.21专题报告
黄振庭
?
[2018 .NET Conf].NET Core與Azure DevOps應用於企業開發
[2018 .NET Conf].NET Core與Azure DevOps應用於企業開發[2018 .NET Conf].NET Core與Azure DevOps應用於企業開發
[2018 .NET Conf].NET Core與Azure DevOps應用於企業開發
Edward Kuo
?
DevOps Taiwan CICD Pipeline Tools
DevOps Taiwan CICD Pipeline ToolsDevOps Taiwan CICD Pipeline Tools
DevOps Taiwan CICD Pipeline Tools
scott liao
?
Rancher 快速打造叢集的解決方案
Rancher 快速打造叢集的解決方案Rancher 快速打造叢集的解決方案
Rancher 快速打造叢集的解決方案
Miles Chou
?
第十一堂 學習編譯與上架
第十一堂 學習編譯與上架第十一堂 學習編譯與上架
第十一堂 學習編譯與上架
力中 柯
?
01 DevOps and Azure DevOps overview
01 DevOps and Azure DevOps overview01 DevOps and Azure DevOps overview
01 DevOps and Azure DevOps overview
Alan Tsai
?
2019/7/27 先別開 Branch 了,你聽過 Feature Toggle 嗎?
2019/7/27 先別開 Branch 了,你聽過 Feature Toggle 嗎?2019/7/27 先別開 Branch 了,你聽過 Feature Toggle 嗎?
2019/7/27 先別開 Branch 了,你聽過 Feature Toggle 嗎?
Miles Chou
?
摩登開發團隊的DevOps之道 (@DevOpsTaiwan)
摩登開發團隊的DevOps之道 (@DevOpsTaiwan)摩登開發團隊的DevOps之道 (@DevOpsTaiwan)
摩登開發團隊的DevOps之道 (@DevOpsTaiwan)
Chen Cheng-Wei
?

Viewers also liked (6)

Backbonejs
BackbonejsBackbonejs
Backbonejs
Sam Lee
?
What is FED
What is FEDWhat is FED
What is FED
Sam Lee
?
Modern web2016 reactnativeweb
Modern web2016 reactnativeweb Modern web2016 reactnativeweb
Modern web2016 reactnativeweb
Sam Lee
?
Trend Micro Web's Scaffolding tool
Trend Micro Web's Scaffolding toolTrend Micro Web's Scaffolding tool
Trend Micro Web's Scaffolding tool
Sam Lee
?
React Native for Web
React Native for WebReact Native for Web
React Native for Web
Sam Lee
?
Startup Pitching and Mobile App Startup
Startup Pitching and Mobile App StartupStartup Pitching and Mobile App Startup
Startup Pitching and Mobile App Startup
Kobkrit Viriyayudhakorn
?
What is FED
What is FEDWhat is FED
What is FED
Sam Lee
?
Modern web2016 reactnativeweb
Modern web2016 reactnativeweb Modern web2016 reactnativeweb
Modern web2016 reactnativeweb
Sam Lee
?
Trend Micro Web's Scaffolding tool
Trend Micro Web's Scaffolding toolTrend Micro Web's Scaffolding tool
Trend Micro Web's Scaffolding tool
Sam Lee
?
React Native for Web
React Native for WebReact Native for Web
React Native for Web
Sam Lee
?

Similar to JSDC 2015 React-Native 實戰 (20)

React Native & V2HOT
React Native & V2HOTReact Native & V2HOT
React Native & V2HOT
Xcat Liu
?
Study4 love.2016.2.20.ionic
Study4 love.2016.2.20.ionicStudy4 love.2016.2.20.ionic
Study4 love.2016.2.20.ionic
Kyle Shen
?
20141212 html5 及微軟跨平台佈局 long
20141212 html5 及微軟跨平台佈局   long20141212 html5 及微軟跨平台佈局   long
20141212 html5 及微軟跨平台佈局 long
Meng-Ru (Raymond) Tsai
?
Hello reactJS 0~1 Bulid my first web app
Hello reactJS 0~1 Bulid my first web appHello reactJS 0~1 Bulid my first web app
Hello reactJS 0~1 Bulid my first web app
hungjie19
?
W3CTech美团react专场-React Native 初探
W3CTech美团react专场-React Native 初探W3CTech美团react专场-React Native 初探
W3CTech美团react专场-React Native 初探
美团点评技术团队
?
HTML5 生态系统和应用架构模型
HTML5 生态系统和应用架构模型HTML5 生态系统和应用架构模型
HTML5 生态系统和应用架构模型
Tom Fan
?
介紹前端 Web 技術在跨平台開發上的應用
介紹前端 Web 技術在跨平台開發上的應用介紹前端 Web 技術在跨平台開發上的應用
介紹前端 Web 技術在跨平台開發上的應用
Jerry Lin
?
一步一步开发Html5 mobile apps
一步一步开发Html5 mobile apps一步一步开发Html5 mobile apps
一步一步开发Html5 mobile apps
Adam Lu
?
開放原始碼 Ch3.1 mobile - oss - oss行動領域-1 (ver1.0)
開放原始碼 Ch3.1  mobile - oss - oss行動領域-1 (ver1.0) 開放原始碼 Ch3.1  mobile - oss - oss行動領域-1 (ver1.0)
開放原始碼 Ch3.1 mobile - oss - oss行動領域-1 (ver1.0)
My own sweet home!
?
搁别补肠迟基础教学
搁别补肠迟基础教学搁别补肠迟基础教学
搁别补肠迟基础教学
昇倫 蔡
?
滨顿贵2013大会分享——《使用新浪移动云开发全平台应用》
滨顿贵2013大会分享——《使用新浪移动云开发全平台应用》滨顿贵2013大会分享——《使用新浪移动云开发全平台应用》
滨顿贵2013大会分享——《使用新浪移动云开发全平台应用》
easychen
?
础苍诲谤辞颈诲快速发布&补尘辫;持续集成
础苍诲谤辞颈诲快速发布&补尘辫;持续集成础苍诲谤辞颈诲快速发布&补尘辫;持续集成
础苍诲谤辞颈诲快速发布&补尘辫;持续集成
whykill
?
Take Advantage of UIWebView for iOS Native App Developers
Take Advantage of UIWebView for iOS Native App DevelopersTake Advantage of UIWebView for iOS Native App Developers
Take Advantage of UIWebView for iOS Native App Developers
Ryan Chung
?
給 iOS 工程師的 Vue.js 開發
給 iOS 工程師的 Vue.js 開發給 iOS 工程師的 Vue.js 開發
給 iOS 工程師的 Vue.js 開發
Weizhong Yang
?
从无阻塞并行脚本加载(尝补产.箩蝉)到浏览器消息模型
从无阻塞并行脚本加载(尝补产.箩蝉)到浏览器消息模型从无阻塞并行脚本加载(尝补产.箩蝉)到浏览器消息模型
从无阻塞并行脚本加载(尝补产.箩蝉)到浏览器消息模型
裕波 周
?
【项目分享】赶集移动Web App开发总结
【项目分享】赶集移动Web App开发总结 【项目分享】赶集移动Web App开发总结
【项目分享】赶集移动Web App开发总结
yangdj
?
Full stack-development with node js
Full stack-development with node jsFull stack-development with node js
Full stack-development with node js
Xuefeng Zhang
?
初窺 Flutter 開發.pdf
初窺 Flutter 開發.pdf初窺 Flutter 開發.pdf
初窺 Flutter 開發.pdf
gdscnycu
?
移动互联网时代的Mobile app设计和开发
移动互联网时代的Mobile app设计和开发移动互联网时代的Mobile app设计和开发
移动互联网时代的Mobile app设计和开发
fangdeng
?
MobileWebAppFramework_V5_design
MobileWebAppFramework_V5_designMobileWebAppFramework_V5_design
MobileWebAppFramework_V5_design
Jackson Tian
?
React Native & V2HOT
React Native & V2HOTReact Native & V2HOT
React Native & V2HOT
Xcat Liu
?
Study4 love.2016.2.20.ionic
Study4 love.2016.2.20.ionicStudy4 love.2016.2.20.ionic
Study4 love.2016.2.20.ionic
Kyle Shen
?
20141212 html5 及微軟跨平台佈局 long
20141212 html5 及微軟跨平台佈局   long20141212 html5 及微軟跨平台佈局   long
20141212 html5 及微軟跨平台佈局 long
Meng-Ru (Raymond) Tsai
?
Hello reactJS 0~1 Bulid my first web app
Hello reactJS 0~1 Bulid my first web appHello reactJS 0~1 Bulid my first web app
Hello reactJS 0~1 Bulid my first web app
hungjie19
?
W3CTech美团react专场-React Native 初探
W3CTech美团react专场-React Native 初探W3CTech美团react专场-React Native 初探
W3CTech美团react专场-React Native 初探
美团点评技术团队
?
HTML5 生态系统和应用架构模型
HTML5 生态系统和应用架构模型HTML5 生态系统和应用架构模型
HTML5 生态系统和应用架构模型
Tom Fan
?
介紹前端 Web 技術在跨平台開發上的應用
介紹前端 Web 技術在跨平台開發上的應用介紹前端 Web 技術在跨平台開發上的應用
介紹前端 Web 技術在跨平台開發上的應用
Jerry Lin
?
一步一步开发Html5 mobile apps
一步一步开发Html5 mobile apps一步一步开发Html5 mobile apps
一步一步开发Html5 mobile apps
Adam Lu
?
開放原始碼 Ch3.1 mobile - oss - oss行動領域-1 (ver1.0)
開放原始碼 Ch3.1  mobile - oss - oss行動領域-1 (ver1.0) 開放原始碼 Ch3.1  mobile - oss - oss行動領域-1 (ver1.0)
開放原始碼 Ch3.1 mobile - oss - oss行動領域-1 (ver1.0)
My own sweet home!
?
搁别补肠迟基础教学
搁别补肠迟基础教学搁别补肠迟基础教学
搁别补肠迟基础教学
昇倫 蔡
?
滨顿贵2013大会分享——《使用新浪移动云开发全平台应用》
滨顿贵2013大会分享——《使用新浪移动云开发全平台应用》滨顿贵2013大会分享——《使用新浪移动云开发全平台应用》
滨顿贵2013大会分享——《使用新浪移动云开发全平台应用》
easychen
?
础苍诲谤辞颈诲快速发布&补尘辫;持续集成
础苍诲谤辞颈诲快速发布&补尘辫;持续集成础苍诲谤辞颈诲快速发布&补尘辫;持续集成
础苍诲谤辞颈诲快速发布&补尘辫;持续集成
whykill
?
Take Advantage of UIWebView for iOS Native App Developers
Take Advantage of UIWebView for iOS Native App DevelopersTake Advantage of UIWebView for iOS Native App Developers
Take Advantage of UIWebView for iOS Native App Developers
Ryan Chung
?
給 iOS 工程師的 Vue.js 開發
給 iOS 工程師的 Vue.js 開發給 iOS 工程師的 Vue.js 開發
給 iOS 工程師的 Vue.js 開發
Weizhong Yang
?
从无阻塞并行脚本加载(尝补产.箩蝉)到浏览器消息模型
从无阻塞并行脚本加载(尝补产.箩蝉)到浏览器消息模型从无阻塞并行脚本加载(尝补产.箩蝉)到浏览器消息模型
从无阻塞并行脚本加载(尝补产.箩蝉)到浏览器消息模型
裕波 周
?
【项目分享】赶集移动Web App开发总结
【项目分享】赶集移动Web App开发总结 【项目分享】赶集移动Web App开发总结
【项目分享】赶集移动Web App开发总结
yangdj
?
Full stack-development with node js
Full stack-development with node jsFull stack-development with node js
Full stack-development with node js
Xuefeng Zhang
?
初窺 Flutter 開發.pdf
初窺 Flutter 開發.pdf初窺 Flutter 開發.pdf
初窺 Flutter 開發.pdf
gdscnycu
?
移动互联网时代的Mobile app设计和开发
移动互联网时代的Mobile app设计和开发移动互联网时代的Mobile app设计和开发
移动互联网时代的Mobile app设计和开发
fangdeng
?
MobileWebAppFramework_V5_design
MobileWebAppFramework_V5_designMobileWebAppFramework_V5_design
MobileWebAppFramework_V5_design
Jackson Tian
?

JSDC 2015 React-Native 實戰