iOS React Native 混合開發整合React Native
序:
有時候我們並不是需要全部使用React Native,我們想和原生混合開發,那我們應該怎麼辦呢。
先看一下我整合完之後的專案目錄:
首先安裝React Native node元件
1、新建一個資料夾如目錄中的RN,這個資料夾用於存放React Native相關內容
2、新建一個package.json用於安裝node_modules。package.json內容如下:
{
"name": "RNHybrid", //記得修改專案的名字
"version": "0.0.1",
"private": true,
"scripts": {
"start": "node node_modules/react-native/local-cli/cli.js start",
"test": "jest"
},
"dependencies": {
"react": "16.0.0-alpha.6",
"react-native": "0.44.0"
},
"devDependencies": {
"babel-jest": "20.0.3",
"babel-preset-react-native": "1.9.2",
"jest": "20.0.4",
"react-test-renderer": "16.0.0-alpha.6"
},
"jest": {
"preset": "react-native"
}
}
3、cd 你的專案路徑,然後執行 nmp install。如下圖:
執行完上面的命令之後,開啟你的專案目錄下,你就會發現node_modules都下載到你新建的資料夾中了,如圖:
4、在新建的目錄下新建index.ios.js,把之前React Native的例子拷過來就可以,記得改下modules的名字
/**
* Sample React Native App
* https://github.com/facebook/react-native
* @flow
*/
import React, { Component } from 'react';
import {
AppRegistry,
StyleSheet,
Text,
View
} from 'react-native';
export default class RNHybrid extends Component {
render() {
return (
<View style={styles.container}>
<Text style={styles.welcome}>
iOS 原生 RN混合開發!
</Text>
</View>
);
}
}
const styles = StyleSheet.create({
container: {
flex: 1,
justifyContent: 'center',
alignItems: 'center',
backgroundColor: '#F5FCFF',
},
welcome: {
fontSize: 20,
textAlign: 'center',
margin: 10,
},
});
AppRegistry.registerComponent('RNHybrid', () => RNHybrid);
Cocospod安裝React Native
既然大家都來看RN了。cocospod就不用講了吧。1、podfile我們要加入的內容
路徑填寫你存放node_modules的路徑即可。
pod 'Yoga', :path => ‘./RN/node_modules/react-native/ReactCommon/yoga'
pod 'React', :path => ‘./RN/node_modules/react-native', :subspecs => [
'Core',
'RCTText',
'RCTNetwork’,
'RCTWebSocket',
]
因為Core依賴於Yoga所以要新增一下,至於專案中需要什麼元件以後可以在subspecs依次新增。
2、然後pod install就行了,比較慢,你可以擼一把了。
3、成功之後,我們來用一下吧,我們可以在原生專案中加入RN介面試試。
NSURL *jsCodeLocation;
jsCodeLocation = [NSURLURLWithString:@"http://localhost:8081/index.ios.bundle?platform=ios&dev=true"];
RCTRootView *rootView = [[RCTRootViewalloc]initWithBundleURL:jsCodeLocation
moduleName:@"RNHybrid"
initialProperties:nil
launchOptions:nil];
rootView.frame =CGRectMake(0,0,[UIScreenmainScreen].bounds.size.width, [UIScreenmainScreen].bounds.size.height);
[self.viewaddSubview:rootView];
下面程式碼大家有疑惑的估計就是這個url從哪來的,下面當你啟動的時候,會告訴你。
4、啟動RN
cd 到你上面新建的資料夾裡,如我專案中的RN資料夾,然後執行react-native start
這時候,你可以看出來,伺服器啟動的埠是8081,也就知道了上面那個url
5、這時候你啟動的時候如果看到下面的畫面:
修改ATS就可以了,會iOS的基本都會,不囉嗦了。
6、在執行下試試吧,結果如圖:
相關文章
- React Native iOS混合開發實戰教程React NativeiOS
- 輕鬆教你React Native 混合開發(iOS篇)React NativeiOS
- React-Native iOS Module開發ReactiOS
- React Native Android混合開發實戰教程React NativeAndroid
- 《React Native高效開發》之create-react-native-appReact NativeAPP
- React Native 整合code pushReact Native
- [React Native]react-native-scrollabReact Native
- React Native 開發規範React Native
- React Native Icon方案:react-native-svgReact NativeSVG
- 在Mac搭建react-native iOS開發環境MacReactiOS開發環境
- 在 Windows 上搭建 React Native IOS 開發環境WindowsReact NativeiOS開發環境
- Android開發學習之路--React-Native混合開發初體驗AndroidReact
- React Native開發之必備React基礎React Native
- React-native 開發小技巧React
- React Native 開發環境搭建React Native開發環境
- react-native開發避坑React
- React Native 使用 react-native-webview 渲染 HTMLReact NativeWebViewHTML
- React Native轉web方案:react-native-webReact NativeWeb
- react native 包學不包會系列--react native開發基礎知識React Native
- react-native配置react-native-image-crop-pickerReact
- React Native選擇器元件-react-native-slidepickerReact Native元件IDE
- Flutter與Native混合開發-FlutterBoost整合應用和開發實踐(iOS)FlutteriOS
- React Native 上手React Native
- react-nativeReact
- 使用duxapp開發 React Native App 事半功倍UXAPPReact Native
- React Native 藍芽4.0 BLE開發React Native藍芽
- ? React-Native 官方示例演示 ( ios & android)ReactiOSAndroid
- 探索 react-native run-ios(android)ReactiOSAndroid
- Flutter & Native 混合開發Flutter
- React Native / React除錯技巧React Native除錯
- 原生專案如何從零開始整合 React NativeReact Native
- react native 包學不包會系列--認識react nativeReact Native
- (零) React Native 專案開發拾遺React Native
- Mac配置React-Native開發環境MacReact開發環境
- React Native+Redux開發實用教程React NativeRedux
- react-native開發常見問題React
- React Native填坑之旅 -- 從Native發事件給JSReact Native事件JS
- React Native整合到現有的原生專案React Native
- React Native 熱更新React Native