目前放出來的是ios版本,後續還會放出android版本,在加上之前的reactjs,那一份代碼搞定三個平臺並非不可能,於是我也下了個react-native來體驗一把。
-
react-native目前只放出了ios版本,那爲了體驗,你必須有os x系統,並且安裝了xcode.
-
另外官方推薦使用homebrew來安裝nodejs,watchman,flow等相關工具,那我們首先安裝homebrew:
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
-
安裝完homebrew,我們分別安裝nodejs,watchman,flow,分別輸入如下命令:
brew install node
brew install watchman
brew install flow
-
接着我們安裝 react-native本身:
npm install -g react-native-cli
-
然後我們就可以建立一個demo工程,這裏我照着官方的示例建了
AwesomeProject 這麼一個工程,輸入如下命令建立工程:
react-native init AwesomeProject
-
然後我們用xcode打開 AwesomeProject/AwesomeProject.xcodeproj,運行cammad+r,可以看到模擬器出來一個app效果:
-
這時候同時彈出了一個終端窗口:
-
我們可以看到react-native是通過nodejs啓動了一個 8081端口的server來進行實時調試,這時候如果你修改了index.ios.js的代碼,然後在xcode裏執行cmd+r,xcode會從8081端口拉取最新的代碼執行,並且更新模擬器相應修改,是不是很爽?
接下來我們看看代碼結構:
寫過ios的人都知道,Appdelegate.h,Appdelegate.m是ios原生代碼的入口程序,打開Appdelegate.m,我們看到這樣一行代碼:
jsCodeLocation = [NSURL URLWithString:@"http://localhost:8081/index.ios.bundle"];
從字面理解,我們應該知道react-native是從本地端口拉取index.ios.js來執行一下了。爲了驗證是否是這樣,我們改一下index.ios.js的名字爲test.ios.js,然後在Appdelegate.m裏把index.ios.bundle改成test.ios.bundle,重新cmd+r,執行沒有問題,這就驗證了我們的假設。
8.最後我們看看index.os.js的內容,這裏幾乎就是reactjs的寫法,大家如果想了解不妨去react官網http://facebook.github.io/react 看下。這裏就不詳細說了。
總之,facebook的這個react-native想像空間還是蠻大的,一個是降低了開發native app的難度(一大波前端js程序員可以寫),