- 本文為 Marno 原創,轉載必須保留出處!
- 公眾號【 aMarno 】,關注後回覆 RN 加入交流群
- React Native 優秀開源專案大全:www.marno.cn
一、面臨問題
從某種程度上而言,目前為止 RN 只是給擁有 Mac 電腦的開發者提供了跨平臺開發的能力, 因為現在還不能使用 Windows 建立 iOS 的 RN 應用。還有一個比較普遍的問題是,有一些 iOS 程式設計師不會配置 Android 的編譯環境,而一些 Android 程式設計師又搞不懂 XCode,至於其他沒接觸過移動開發的人來說,就更惱火了。有些人可能本來也只是想體驗一下,結果覺得配環境這麼麻煩就直接放棄了。
所以為了能讓更多人感受 RN 的魅力,早在幾個月前 react-community 就給出了一個不錯的解決方案,可以讓一個完全沒接觸過 RN 的人,從配環境開始5分鐘實現 Hello Wolrd
的編寫(就是這麼快)。而且在前幾天剛結束的 React Conf 2017 大會上也提到了這個,通過這個方案我們可以實現:
- 不用再去配置煩人的 iOS、Android 編譯環境
- 可以用 Windows 開發 iOS 版的 RN 應用。
二、解決方案
解決這個問題需要藉助兩個工具:1. create-react-native-app(下文簡稱CRNA); 2. Expo(原名Exponent)。
第一個是電腦上用來建立 RN 應用的工具,第二個是手機上安裝的應用(Android、iOS 都有)。iOS 到 AppStore 搜 Expo 進行下載, Android 到 google play 下載,或者到 APKPure 下載,具體可以百度下。Expo 同時還提供了一個 XDE 的開發工具用來做 RN 開發,體驗了一下感覺不是很好用。如果感興趣可以到官網下載體驗(官網地址:docs.expo.io/versions/v1… )。
下面就正式開始介紹一下這兩個工具的使用,使用 CRNA 建立 RN 應用只是不用安裝 iOS 和 Android 的編譯環境了,但是 node 還是必須的,然後通過下面的 node 命令安裝 CRNA 這個工具。
$ npm install -g create-react-native-app複製程式碼
安裝好之後就不再使用 react-native init XXX
的命令來新建應用了,直接使用下面的命令進行建立並啟動。使用 CRNA 建立的專案,你在資料夾裡看不到 iOS 和 Android 工程目錄,它只包含了 JS 部分的程式碼。
$ create-react-native-app MarnoRN
$ cd my-app/
$ npm start複製程式碼
正常情況下,會如下圖一樣執行並建立好一個 RN 應用,我們通過 npm start
啟動該應用後,會生成一個二維碼。這樣的操作方式就感覺和微信小程式有些類似了。
接下來使用 Expo 掃描這個二維碼就可以開啟你編寫的 RN 應用了。並且只要在 Expo 中開啟過一次,就會在 App 中保留一個入口。
使用 Expo 我們可以很快速的將自己的 RN 應用和別人分享,只要把二維碼或者應用連結發給別人就行,不過前提是別人也同樣安裝了 Expo 。我們也可以把自己的 App 上傳到 Expo 中,讓更多的人搜尋就可以使用。上傳操作命令如下:
$ npm i -g exp
$ exp publish複製程式碼
通過 CRNA 這樣的方式,不僅完全跳過了配置 Android 和 iOS 編譯環境的步驟;還突破了硬體的限制,不管你的電腦是 windows 還是 mac ,也不用管你的手機是 iPhone 還是 Android,都可以進行所有平臺的程式碼編寫和真機測試 。並且在 Expo 中還可以搜尋別人上傳的應用(恩!感覺這套路和小程式是一樣樣的)。
但是如果最終你要打包 App 釋出到應用市場,那還是需要有 iOS 和 Android 編譯環境,要只是用來體驗一下,或者用於 RN 的學習,那這種方式應該是可以解決你的問題了,可以讓你更專注的進行學習 ,而不會因為覺得安裝編譯環境繁瑣就放棄了。當然 CRNA 還有一些其他功能,大家可以自行到 github 看原文文件。如果在使用過程中有什麼問題,可以直接給作者提 issue 哈。
這個只是 React Conf 2017 大會上一個比較短的內容,大會還介紹了一些其他的東西,比如 Mobx 和 Redux 的對比、 React VR 的使用、最新版 nuclide 的使用(感覺比之前好用了)等等,滿滿 2 天的會議,Youtube 上有 35 個相關的視訊,我上週末看了差不多有一半了,受益不少。如果感興趣的可以自行去觀看,視訊地址在這裡:t.cn/RiFxmB7 請自備梯子,或者在我公眾號回覆 v p n 用我推薦的這個梯子也行。我經常到 youtube 看視訊就用這個,看 1080p 也不怎麼卡,哈哈~不過前提是你的網速要好!
![](https://lc-gold-cdn.xitu.io/e0cdf356e095e6b5edab.png?imageView2/0/w/1280/h/960/ignore-error/1)