React Native搭建iOS開發(fā)環(huán)境
一、寫在前面
1. 什么是React-Native?
React-Native是:Facebook 在2015年初React.js技術(shù)研討大會上公布的一個開源項目。支持用開源的JavaScript庫React.js來開發(fā)iOS和Android原生App。初期僅支持iOS平臺,同年9月份,該開源項目同時支持Android平臺。
React Native的原理是:在JavaScript中用React抽象操作系統(tǒng)原生的UI組件,代替DOM元素來渲染,比如以<View>取代<div>,以<Image>替代<img>等。
2.React-Native有啥優(yōu)缺點(diǎn)?
優(yōu)點(diǎn)是:能夠用JavaScript腳本就可以寫出App的界面,對從事Web開發(fā)的同事們轉(zhuǎn)行做幾個簡單的移動App是個福利。不用為了寫個移動App小程序而專門去學(xué)習(xí)Objective-C和Swift。
和其他的移動Web框架相比:
Native不用WebView,徹底擺脫了WebView讓人不爽的交互和性能問題;
Native的原生控件有更好的體驗;
Native有更好的手勢識別;
Native有更適合的線程模型;
缺點(diǎn)是:還在試用階段,潛在的問題尚不得而知:兼容性問題,性能問題等。還沒大量普及,學(xué)習(xí)資料尚且不多,供愛折騰的朋友嘗嘗鮮?! ?br />
3.要學(xué)些什么?
想必,大家已經(jīng)按耐不住,會發(fā)問,使用React-Native開發(fā)要學(xué)習(xí)些什么呢?
Html+CSS+JavaScript的基本功肯定是少不了;
Node.js的基本概念學(xué)習(xí)。API文檔:https://nodejs.org/dist/v4.2.2/docs/api/
JSX: JavaScript語法的一個擴(kuò)展,類似XML結(jié)構(gòu)。https://facebook.github.io/react/docs/jsx-in-depth.html
FLUX: Facebook公司的一個創(chuàng)建用戶客戶端web程序的框架。https://facebook.github.io/flux/docs/overview.html
二、React Native基礎(chǔ)環(huán)境搭建
1、安裝Homebrew
打開終端輸入:
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
2、安裝nvm方法
通過腳本安裝方式,在終端執(zhí)行:
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.30.1/install.sh | bash
激活nvm,在安裝腳本執(zhí)行完之后,在終端執(zhí)行:
. ~/.nvm/nvm.sh
3、默認(rèn)安裝最新版本的Node.js并且設(shè)置好命令行的環(huán)境變量
nvm install node && nvm alias default node
可以輸入node命令啟動Node.js環(huán)境
4、安裝watchman
在終端輸入:
brew install watchman
到此處React Native基礎(chǔ)環(huán)境搭建基本完成,推薦經(jīng)常運(yùn)行brew update && brew upgrade
命令保持你的程序是最新的。
三、iOS開發(fā)環(huán)境
1、iOS開發(fā)環(huán)境: (默認(rèn)讀者已經(jīng)安裝Xcode7.0或以上版本,沒有可自行前往AppStore下載)
使用npm(node包管理工具)安裝react-native-cli(此處應(yīng)注意權(quán)限問題,如果遇到權(quán)限問題,請在下面的命令前加上sudo)
npm install -g react-native-cli
初始化工程(下面的語句中千萬不要加sudo,后果自負(fù))
react-native init ReactNativeProject(工程名)
在初始化的過程中,如果進(jìn)度緩慢,推薦你將npm倉庫源換成國內(nèi)鏡像:(翻墻用戶請忽略) 在終端輸入:
npm config set registry https://registry.npm.taobao.org npm config set disturl https://npm.taobao.org/dist
2、使用Xcode運(yùn)行調(diào)試程序
查找ReactNativeProject文件目錄
按住快捷鍵Command+Shift+G
,在彈出的“前往文件夾”對話框中輸入路徑/Users/yangshebing/ReactNativeProject
(yangshebing表示電腦用戶名,請自行更改),點(diǎn)擊前往。在文件目中的ios文件夾下找到“ReactNativeProject.xcodeproj”工程文件。如圖所示:
運(yùn)行ReactNativeProject工程
使用Xcode打開“ReactNativeProject.xcodeproj”工程文件,按住快捷鍵"Command+R"運(yùn)行此項目,運(yùn)行成功后便可在模擬器上看到效果。
編輯index.ios.js文件修改界面
筆者編輯index.ios.js文件工具是Vim,每當(dāng)編輯完index.ios.js文件并保存之后,在模擬器(Simulator)中,按Command+R
可刷新界面查看改變后的效果。
下面我們也試著稍微修改一下index.ios.js文件:
/** * Sample React Native App * https://github.com/facebook/react-native */ 'use strict'; import React, { AppRegistry, Component, StyleSheet, //添加Image全局變量 Image, Text, View } from 'react-native'; class ReactNativeProject extends Component { render() { return ( <View style={styles.container}> //添加文本展示 <Text style={styles.welcome}> 美女 </Text> //添加圖片展示 <Image source= //這里需要指定圖片的大小 style={styles.picture} /> </View> ); } } const styles = StyleSheet.create({ container: { flex: 1, justifyContent: 'center', alignItems: 'center', backgroundColor: '#F5FCFF', }, //這里可以設(shè)置文本的字體,對齊方式等 welcome: { fontSize: 20, textAlign: 'center', margin: 10, }, //新增圖片style,設(shè)置圖片大小 picture: { width: 80, height: 150, }, }); AppRegistry.registerComponent('ReactNativeProject', () => ReactNativeProject);
刷新后運(yùn)行效果如下圖所示:
真機(jī)運(yùn)行調(diào)試項目
在ReactNativeProject工程中找到AppDelegate.m文件,將localhost
替換成自己電腦的IP地址。
// jsCodeLocation = [NSURL URLWithString:@"http://localhost:8081/index.ios.bundle?platform=ios&dev=true"]; jsCodeLocation = [NSURL URLWithString:@http://192.168.31.168:8081/index.ios.bundle?platform=ios&dev=true];
替換完成之后再次運(yùn)行程序,這個時候可以通過搖晃設(shè)備喚出開發(fā)菜單。
禁用開發(fā)菜單
在打包提交市場前,需要禁用開發(fā)菜單。禁用開發(fā)菜單方法如下: 打開工程,選擇Product → Scheme → Edit Scheme或使用快捷鍵“Command + <”,在彈出的窗口中選擇左邊的Run菜單項。更改“Build Configuration” 設(shè)置項為“Release”。
總結(jié)
好了,看到這里,如果你已經(jīng)成功配置了React-Native的環(huán)境,并且新建并成功運(yùn)行了第一個程序了。那么,就先恭喜了,我們甚至沒有寫一行代碼,就已經(jīng)成功運(yùn)行了第一個React-Native的程序,是不是還挺簡單的。正所謂,良好的開端是成功的一半。如果有問題大家可以留言交流。
相關(guān)文章
iOS ScrollView嵌套tableView聯(lián)動滾動的思路與最佳實踐
這篇文章主要給大家介紹了關(guān)于ScrollView嵌套tableView聯(lián)動滾動的思路與最佳實踐,文中通過示例代碼介紹的非常詳細(xì),對各位iOS開發(fā)者們具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-10-10iOS中如何判斷當(dāng)前網(wǎng)絡(luò)環(huán)境是2G/3G/4G/5G/WiFi
這篇文章主要給大家介紹了關(guān)于iOS中如何判斷當(dāng)前網(wǎng)絡(luò)環(huán)境是2G/3G/4G/5G/WiFi的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對各位iOS開發(fā)者們具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07