SlideShare uma empresa Scribd logo
1 de 56
Baixar para ler offline
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?
繼承 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
ReactJS JavascriptCore
RCTBridge
Native

Method
Javascript Bridge
Obj-C bridge
三 步 驟
Create
Module
Import

RCTBridgeModule
Export 

Method
遇到的問題
Export 

Method
Index.ios.js
開始刻 React-Native UI
取得跟 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

Mais conteúdo relacionado

Mais procurados

導入 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 repoWeizhong Yang
 
Continuous Delivery - 敏捷開發的最後一哩路
Continuous Delivery - 敏捷開發的最後一哩路Continuous Delivery - 敏捷開發的最後一哩路
Continuous Delivery - 敏捷開發的最後一哩路Miles Chou
 
GitHub Action Introduction
GitHub Action IntroductionGitHub Action Introduction
GitHub Action IntroductionDuran Hsieh
 
ModernWeb 2017 angular component
ModernWeb 2017 angular componentModernWeb 2017 angular component
ModernWeb 2017 angular componentChieh 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 Toolsscott 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 overviewAlan 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
 

Mais procurados (20)

Github Actions
Github ActionsGithub Actions
Github Actions
 
導入 Flutter 前你應該知道的事
導入 Flutter 前你應該知道的事導入 Flutter 前你應該知道的事
導入 Flutter 前你應該知道的事
 
Android 逆向工程心得分享
Android 逆向工程心得分享Android 逆向工程心得分享
Android 逆向工程心得分享
 
Appium手机自动化测试 tester home公开课
Appium手机自动化测试 tester home公开课Appium手机自动化测试 tester home公开课
Appium手机自动化测试 tester home公开课
 
Flutter 踩雷心得
Flutter 踩雷心得Flutter 踩雷心得
Flutter 踩雷心得
 
CocoaPods private repo
CocoaPods private repoCocoaPods private repo
CocoaPods private repo
 
行動技術開發概論
行動技術開發概論行動技術開發概論
行動技術開發概論
 
Continuous Delivery - 敏捷開發的最後一哩路
Continuous Delivery - 敏捷開發的最後一哩路Continuous Delivery - 敏捷開發的最後一哩路
Continuous Delivery - 敏捷開發的最後一哩路
 
GitHub Action Introduction
GitHub Action IntroductionGitHub Action Introduction
GitHub Action Introduction
 
ModernWeb 2017 angular component
ModernWeb 2017 angular componentModernWeb 2017 angular component
ModernWeb 2017 angular component
 
美团点评技术沙龙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應用於企業開發
 
DevOps Taiwan CICD Pipeline Tools
DevOps Taiwan CICD Pipeline ToolsDevOps Taiwan CICD Pipeline Tools
DevOps Taiwan CICD Pipeline Tools
 
Rancher 快速打造叢集的解決方案
Rancher 快速打造叢集的解決方案Rancher 快速打造叢集的解決方案
Rancher 快速打造叢集的解決方案
 
第十一堂 學習編譯與上架
第十一堂 學習編譯與上架第十一堂 學習編譯與上架
第十一堂 學習編譯與上架
 
01 DevOps and Azure DevOps overview
01 DevOps and Azure DevOps overview01 DevOps and Azure DevOps overview
01 DevOps and Azure DevOps overview
 
Dart null safety
Dart null safetyDart null safety
Dart null safety
 
2019/7/27 先別開 Branch 了,你聽過 Feature Toggle 嗎?
2019/7/27 先別開 Branch 了,你聽過 Feature Toggle 嗎?2019/7/27 先別開 Branch 了,你聽過 Feature Toggle 嗎?
2019/7/27 先別開 Branch 了,你聽過 Feature Toggle 嗎?
 
摩登開發團隊的DevOps之道 (@DevOpsTaiwan)
摩登開發團隊的DevOps之道 (@DevOpsTaiwan)摩登開發團隊的DevOps之道 (@DevOpsTaiwan)
摩登開發團隊的DevOps之道 (@DevOpsTaiwan)
 

Destaque

Backbonejs
BackbonejsBackbonejs
BackbonejsSam Lee
 
What is FED
What is FEDWhat is FED
What is FEDSam 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 toolSam Lee
 
React Native for Web
React Native for WebReact Native for Web
React Native for WebSam Lee
 

Destaque (6)

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

Semelhante a JSDC 2015 React-Native 實戰

React Native & V2HOT
React Native & V2HOTReact Native & V2HOT
React Native & V2HOTXcat Liu
 
Study4 love.2016.2.20.ionic
Study4 love.2016.2.20.ionicStudy4 love.2016.2.20.ionic
Study4 love.2016.2.20.ionicKyle Shen
 
20141212 html5 及微軟跨平台佈局 long
20141212 html5 及微軟跨平台佈局   long20141212 html5 及微軟跨平台佈局   long
20141212 html5 及微軟跨平台佈局 longMeng-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 apphungjie19
 
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 appsAdam 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!
 
React基礎教學
React基礎教學React基礎教學
React基礎教學昇倫 蔡
 
IDF2013大会分享——《使用新浪移动云开发全平台应用》
IDF2013大会分享——《使用新浪移动云开发全平台应用》IDF2013大会分享——《使用新浪移动云开发全平台应用》
IDF2013大会分享——《使用新浪移动云开发全平台应用》easychen
 
Android快速发布&持续集成
Android快速发布&持续集成Android快速发布&持续集成
Android快速发布&持续集成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 DevelopersRyan Chung
 
給 iOS 工程師的 Vue.js 開發
給 iOS 工程師的 Vue.js 開發給 iOS 工程師的 Vue.js 開發
給 iOS 工程師的 Vue.js 開發Weizhong Yang
 
从无阻塞并行脚本加载(Lab.js)到浏览器消息模型
从无阻塞并行脚本加载(Lab.js)到浏览器消息模型从无阻塞并行脚本加载(Lab.js)到浏览器消息模型
从无阻塞并行脚本加载(Lab.js)到浏览器消息模型裕波 周
 
【项目分享】赶集移动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 jsXuefeng Zhang
 
初窺 Flutter 開發.pdf
初窺 Flutter 開發.pdf初窺 Flutter 開發.pdf
初窺 Flutter 開發.pdfgdscnycu
 
移动互联网时代的Mobile app设计和开发
移动互联网时代的Mobile app设计和开发移动互联网时代的Mobile app设计和开发
移动互联网时代的Mobile app设计和开发fangdeng
 
MobileWebAppFramework_V5_design
MobileWebAppFramework_V5_designMobileWebAppFramework_V5_design
MobileWebAppFramework_V5_designJackson Tian
 

Semelhante a JSDC 2015 React-Native 實戰 (20)

React Native & V2HOT
React Native & V2HOTReact Native & V2HOT
React Native & V2HOT
 
Study4 love.2016.2.20.ionic
Study4 love.2016.2.20.ionicStudy4 love.2016.2.20.ionic
Study4 love.2016.2.20.ionic
 
20141212 html5 及微軟跨平台佈局 long
20141212 html5 及微軟跨平台佈局   long20141212 html5 及微軟跨平台佈局   long
20141212 html5 及微軟跨平台佈局 long
 
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
 
W3CTech美团react专场-React Native 初探
W3CTech美团react专场-React Native 初探W3CTech美团react专场-React Native 初探
W3CTech美团react专场-React Native 初探
 
HTML5 生态系统和应用架构模型
HTML5 生态系统和应用架构模型HTML5 生态系统和应用架构模型
HTML5 生态系统和应用架构模型
 
介紹前端 Web 技術在跨平台開發上的應用
介紹前端 Web 技術在跨平台開發上的應用介紹前端 Web 技術在跨平台開發上的應用
介紹前端 Web 技術在跨平台開發上的應用
 
一步一步开发Html5 mobile apps
一步一步开发Html5 mobile apps一步一步开发Html5 mobile apps
一步一步开发Html5 mobile apps
 
開放原始碼 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)
 
React基礎教學
React基礎教學React基礎教學
React基礎教學
 
IDF2013大会分享——《使用新浪移动云开发全平台应用》
IDF2013大会分享——《使用新浪移动云开发全平台应用》IDF2013大会分享——《使用新浪移动云开发全平台应用》
IDF2013大会分享——《使用新浪移动云开发全平台应用》
 
Android快速发布&持续集成
Android快速发布&持续集成Android快速发布&持续集成
Android快速发布&持续集成
 
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
 
給 iOS 工程師的 Vue.js 開發
給 iOS 工程師的 Vue.js 開發給 iOS 工程師的 Vue.js 開發
給 iOS 工程師的 Vue.js 開發
 
从无阻塞并行脚本加载(Lab.js)到浏览器消息模型
从无阻塞并行脚本加载(Lab.js)到浏览器消息模型从无阻塞并行脚本加载(Lab.js)到浏览器消息模型
从无阻塞并行脚本加载(Lab.js)到浏览器消息模型
 
【项目分享】赶集移动Web App开发总结
【项目分享】赶集移动Web App开发总结 【项目分享】赶集移动Web App开发总结
【项目分享】赶集移动Web App开发总结
 
Full stack-development with node js
Full stack-development with node jsFull stack-development with node js
Full stack-development with node js
 
初窺 Flutter 開發.pdf
初窺 Flutter 開發.pdf初窺 Flutter 開發.pdf
初窺 Flutter 開發.pdf
 
移动互联网时代的Mobile app设计和开发
移动互联网时代的Mobile app设计和开发移动互联网时代的Mobile app设计和开发
移动互联网时代的Mobile app设计和开发
 
MobileWebAppFramework_V5_design
MobileWebAppFramework_V5_designMobileWebAppFramework_V5_design
MobileWebAppFramework_V5_design
 

JSDC 2015 React-Native 實戰