作者簡(jiǎn)介:ASCE1885丛肢, 《Android 高級(jí)進(jìn)階》作者。
- 微信公眾號(hào):asce1885
- 小密圈:Android高級(jí)進(jìn)階剿干,詳情見(jiàn)這篇文章蜂怎。
-
Github,簡(jiǎn)書(shū)置尔,微博杠步,CSDN 知乎
本文首發(fā)于 InfoQ 移動(dòng)技術(shù)公眾號(hào):移動(dòng)開(kāi)發(fā)前線
由于潛在的商業(yè)目的,未經(jīng)許可不開(kāi)放全文轉(zhuǎn)載許可,謝謝幽歼!
![gold.png-2324.9kB](http://static.zybuluo.com/asce1885/6i3t0x6ta3k4qpr7lbsg9bh0/gold.png)
React Native 發(fā)布一年多了朵锣,有不少公司已經(jīng)在線上產(chǎn)品中或小范圍試水,或大范圍應(yīng)用甸私,很多公司或開(kāi)發(fā)者都在為 React Native 的生態(tài)系統(tǒng)作出自己的貢獻(xiàn)诚些。React Native 的開(kāi)發(fā)基本上是 Javascript + 系統(tǒng)原生開(kāi)發(fā)語(yǔ)言(Java,Objective-C皇型,Swift)诬烹,原生語(yǔ)言的開(kāi)發(fā)所用的 IDE 沒(méi)有多余的選擇,Android 平臺(tái)只能使用 Android Studio(不要告訴我你還在使用 Eclipse)弃鸦,iOS 平臺(tái)只能使用 XCode绞吁,而開(kāi)發(fā) Javascript 的 IDE 選擇就多了,從 FaceBook 官方推薦的 Atom+Nuclide唬格,到與 Android Studio 同系列的 Javascript IDE WebStorm掀泳,再到功能強(qiáng)大的 Sublime Text 3,以及微軟推出的 Visual Studio Code 和 decosoftware 專門為 React Native 打造的開(kāi)源 IDE Deco西轩,甚至 Vim员舵,NodePad++ 等等,都可以用來(lái)開(kāi)發(fā) React Native藕畔,唯一的前提能夠支持識(shí)別 Javascript 語(yǔ)法马僻,識(shí)別 JSX 和 React Native API 的智能提醒。接下來(lái)我們就來(lái)介紹最常用的五款 IDE 的配置和選型注服。
Atom[1]+Nuclide[2]
Atom 是由 Github 打造的下一代編程開(kāi)發(fā)利器韭邓,支持 Windows、Mac OS X溶弟、Linux 三大桌面平臺(tái)女淑,免費(fèi)且開(kāi)源。Atom 支持各種編程語(yǔ)言的代碼高亮辜御,同時(shí)具備強(qiáng)大的代碼補(bǔ)全功能鸭你,能夠極大的提高編程效率,Atom 本質(zhì)上是一個(gè)文本編輯器擒权,而不是一個(gè) IDE袱巨,因此在用來(lái)開(kāi)發(fā) React Native 時(shí)需要配合 Nuclide 一起使用。
![image_1al7a82ds18sk1hq91h2tipn14d71t.png-426.3kB](http://static.zybuluo.com/asce1885/ky2lo19cwmdm8useq9tc461r/image_1al7a82ds18sk1hq91h2tipn14d71t.png)
Nuclide 是 Facebook 基于 Atom 的基礎(chǔ)上開(kāi)發(fā)的一個(gè)插件 IDE碳抄,可以用來(lái)開(kāi)發(fā) React Native愉老,iOS 和 Web 應(yīng)用,目前不支持 Windows 平臺(tái)剖效,只支持 Mac OS X 和 Linux嫉入。
![image_1al7avfd1p72il9piv2qs9di2a.png-134.4kB](http://static.zybuluo.com/asce1885/s525tdzoi8vjvqx1m4mffqz2/image_1al7avfd1p72il9piv2qs9di2a.png)
Nuclide 內(nèi)置了對(duì) React Native 的支持焰盗,包括代碼自動(dòng)補(bǔ)全,代碼診斷等咒林,下圖是代碼補(bǔ)全的截圖:
![image_1al7b2vv61gfl1a6d4f075h1fno2n.png-101.1kB](http://static.zybuluo.com/asce1885/gknea6zsw1lpk4zu3qr2oxbb/image_1al7b2vv61gfl1a6d4f075h1fno2n.png)
Nuclide 是 Facebook 官方提供的 React Native IDE姨谷,對(duì) React Native 的支持應(yīng)該是最好的,因此映九,推薦大家首選這個(gè)梦湘,如果在你的電腦運(yùn)行起來(lái)不會(huì)卡頓的話。Nuclide 的安裝很簡(jiǎn)單件甥,在確保 Atom 安裝之后捌议,在命令行中執(zhí)行 apm install nuclide
即可。在使用 Nuclide 之前引有,建議好好看下官網(wǎng)的說(shuō)明[3]瓣颅。
WebStorm[4]
WebStorm 是著名的 JetBrains[5] 公司開(kāi)發(fā)的號(hào)稱最智能的 Javascript 集成開(kāi)發(fā)環(huán)境,可以用于復(fù)雜的客戶端應(yīng)用開(kāi)發(fā)以及基于 Node.js[6] 的服務(wù)端開(kāi)發(fā)譬正。如果你之前使用 Android Studio 開(kāi)發(fā)過(guò) Android 應(yīng)用的話宫补,你一定會(huì)覺(jué)得 WebStorm 的界面似曾相識(shí),沒(méi)錯(cuò)曾我,因?yàn)?WebStorm 和 Android Studio 都是 JetBrains 的杰作粉怕。WebStorm 支持 Windows、Mac OS X抒巢、Linux 三大桌面平臺(tái)贫贝,不過(guò)和 Android Studio 可以免費(fèi)使用不同,WebStorm 是需要付費(fèi)使用的蛉谜,只有 30 天的試用期稚晚。
![image_1al2crrfmp94opl1087tic1kl9.png-266.6kB](http://static.zybuluo.com/asce1885/lmzio9zgrke1ydl72fm0xwik/image_1al2crrfmp94opl1087tic1kl9.png)
由于 React Native 是基于 React 的,而 React 使用的是 JSX 語(yǔ)法型诚,因此客燕,使用 WebStorm 開(kāi)發(fā) React Native 之前,我們首先需要設(shè)置支持的 Javascript 語(yǔ)法狰贯,點(diǎn)擊 WebStorm-Preferences
也搓,在打開(kāi)的對(duì)話框中選擇 Javascript language version
為 JSX Harmony
即可在代碼編輯器中識(shí)別 JSX,如下圖所示:
![image_1al4p5lld1eevdsv1mf21g6m1oii9.png-160.5kB](http://static.zybuluo.com/asce1885/2dpmlzkzj8akdu4s35tu4y8b/image_1al4p5lld1eevdsv1mf21g6m1oii9.png)
當(dāng)然暮现,到這一步还绘,只能使得編輯器識(shí)別 JSX 語(yǔ)法的 Javascript 代碼,不會(huì)導(dǎo)致代碼標(biāo)紅栖袋,但對(duì)于 React Native 的 API 名稱,組件名稱等并不會(huì)智能提醒和自動(dòng)補(bǔ)全抚太,因?yàn)槟壳?WebStorm 只支持 React 語(yǔ)法塘幅,還不支持 React Native 語(yǔ)法昔案。為了解決這個(gè)問(wèn)題,我們可以使用一個(gè)開(kāi)源的插件:ReactNative-LiveTemplate[7]电媳,按照 Github 上面的說(shuō)明安裝插件并重啟 WebStorm 之后生效踏揣,這時(shí)在編輯器中輸入 React Native 的組件或者 API 的首字母,會(huì)自動(dòng)聯(lián)想出相應(yīng)的組件匾乓,如下所示捞稿,方便了很多。如果在使用過(guò)程中覺(jué)得這個(gè)插件有不完善的地方拼缝,你還可以在 Github 上面提交你的 Pull Request娱局,貢獻(xiàn)自己的一份力量。
![image_1al4ptcak3vt35s1p9d4a3gi5m.png-99.3kB](http://static.zybuluo.com/asce1885/mqb07c64u1updklkdzzie7o3/image_1al4ptcak3vt35s1p9d4a3gi5m.png)
Sublime Text 3[8]
Sublime Text 3 是一款廣泛使用的代碼編輯器咧七,支持 Windows衰齐、Mac OS X、Linux 三大桌面平臺(tái)继阻,它是付費(fèi)應(yīng)用耻涛,但目前可以無(wú)限期的試用。它支持多種編程語(yǔ)言的語(yǔ)法高亮瘟檩、擁有優(yōu)秀的代碼自動(dòng)完成功能抹缕,還擁有代碼片段(Snippet
)的功能,可以將常用的代碼片段保存起來(lái)墨辛,在需要時(shí)隨時(shí)調(diào)用歉嗓,極大的提高編程效率。
![image_1al7c3v7i329tmc1lo91v4b1qg34.png-65.3kB](http://static.zybuluo.com/asce1885/izs2gbnqibw0shz7gnqqlnxo/image_1al7c3v7i329tmc1lo91v4b1qg34.png)
Sublime Text 3 強(qiáng)大功能的支撐在于它的插件機(jī)制背蟆,通過(guò) Package Control 功能鉴分,開(kāi)發(fā)者可以安裝各種需要的插件,默認(rèn)情況下带膀,Sublime Text 3 沒(méi)有集成 Package Control志珍,我們需要自己安裝。Package Control 有命令安裝和手動(dòng)安裝兩種方式垛叨,建議優(yōu)先選擇命令安裝伦糯,可以參考官網(wǎng)安裝指南[9]。本文我們介紹命令安裝方式嗽元,在 Sublime Text 3 中通過(guò) View->Show Console
打開(kāi)命令行敛纲,執(zhí)行如下命令:
import urllib.request,os,hashlib; h = '2915d1851351e5ee549c20394736b442' + '8bc59f460fa1548d1514676163dafc88'; pf = 'Package Control.sublime-package'; ipp = sublime.installed_packages_path(); urllib.request.install_opener( urllib.request.build_opener( urllib.request.ProxyHandler()) ); by = urllib.request.urlopen( 'http://packagecontrol.io/' + pf.replace(' ', '%20')).read(); dh = hashlib.sha256(by).hexdigest(); print('Error validating download (got %s instead of %s), please try manual install' % (dh, h)) if dh != h else open(os.path.join( ipp, pf), 'wb' ).write(by)
上面的命令會(huì)創(chuàng)建安裝所需的包目錄,并下載 Package Control.sublime-package
到目錄中剂癌。安裝完成后淤翔,可以在 Preferences 菜單下找到 Package Settings 和 Package Control 兩個(gè)子菜單。
在 Sublime Text 3 中佩谷,React Native 開(kāi)發(fā)相關(guān)的插件主要有:
在 Package Control 對(duì)話框中選擇 Package Control:Install Packages
并在彈出的對(duì)話框中輸入 Babel
监嗜,即可找到 babel-sublime:
![image_1al738d691avg1ftf1b7ck4i1eie9.png-52.7kB](http://static.zybuluo.com/asce1885/b3wpyioku7trpho8xywxlcep/image_1al738d691avg1ftf1b7ck4i1eie9.png)
安裝完成之后,需要啟用它抡谐,如下圖所示菜單操作即可:
![image_1al74khdk1ack11aflo6stf19p2m.png-420.1kB](http://static.zybuluo.com/asce1885/29jos5jhif5ty8trdtyiy4ql/image_1al74khdk1ack11aflo6stf19p2m.png)
react-native-snippets 插件同樣通過(guò) Package Control 進(jìn)行安裝裁奇,在 Install Package 對(duì)話框中搜索 react-native-snippets
安裝即可:
![image_1al768abv2kf1miak917hsv0p13.png-81.4kB](http://static.zybuluo.com/asce1885/noom568rbh54kae1dmq4aj40/image_1al768abv2kf1miak917hsv0p13.png)
安裝完成之后,在代碼編輯器中輸入代碼片段的縮寫(xiě)麦撵,例如我們新建一個(gè)名為 UserDetail.js
的文件刽肠,在其中輸入 rncc
來(lái)創(chuàng)建一個(gè) React Native 的類,智能提醒如下所示:
![image_1al799aiune9k691hha1vli16be1g.png-54.8kB](http://static.zybuluo.com/asce1885/gb3zn1l9kev0izoc4xwawum0/image_1al799aiune9k691hha1vli16be1g.png)
按下 Enter
鍵免胃,插件自動(dòng)生成如下樣板代碼音五,節(jié)省了很多手動(dòng)輸入所需花費(fèi)的時(shí)間:
'use strict';
import React, { Component } from 'react';
import {
StyleSheet,
View,
} from 'react-native';
class UserDetail extends Component {
render() {
return (
<View />
);
}
}
const styles = StyleSheet.create({
});
export default UserDetail;
除了 rncc
,其他常見(jiàn)的代碼片段如下所示杜秸,更多內(nèi)容參見(jiàn)插件的 Github 首頁(yè)放仗。
![image_1al7mdbf7r9n5uu4rg5h1dr73h.png-83.1kB](http://static.zybuluo.com/asce1885/p11m2trtkbvdr8ltjbetycr8/image_1al7mdbf7r9n5uu4rg5h1dr73h.png)
Visual Studio Code[12]
Visual Studio Code 是微軟推出的一個(gè)輕量級(jí)的開(kāi)源 Web 集成開(kāi)發(fā)環(huán)境,支持超過(guò) 30 種語(yǔ)言的開(kāi)發(fā)撬碟,同時(shí)支持 Windows诞挨、Mac OS X、Linux 三大桌面平臺(tái)呢蛤。
![image_1ardliff01st41t5u19op1pgif129.png-153.7kB](http://static.zybuluo.com/asce1885/mco1kvqcq0mxqi1xgl3aoakw/image_1ardliff01st41t5u19op1pgif129.png)
對(duì)于開(kāi)發(fā) React Native 而言惶傻,微軟提供了專門的插件:vscode-react-native[13],按照官網(wǎng)的說(shuō)明進(jìn)行插件的安裝即可其障。這個(gè)插件使得開(kāi)發(fā)者可以在 VS Code 中調(diào)試 React Native 代碼银室,快速執(zhí)行 react-native
命令,以及對(duì) React Native 的 API 具備智能提醒功能励翼,如下所示:
![react-features.gif-898.1kB](http://static.zybuluo.com/asce1885/n75awxq8140gdoiymfbgy06m/react-features.gif)
Deco[14]
Deco 是不久前剛發(fā)布的一個(gè)開(kāi)源的專門為 React Native 打造的 IDE蜈敢,目前只支持 Mac OS X 平臺(tái)。它封裝了 React Native 開(kāi)發(fā)中經(jīng)常會(huì)使用到的功能汽抚,例如集成 npm install
功能抓狭,集成 iPhone 和 iPad 模擬器,新建工程時(shí)快速生成 AwesomeProject
造烁,開(kāi)發(fā)者不再需要通過(guò)執(zhí)行 react-native init AwesomeProject
命令來(lái)生成了否过,關(guān)鍵是如果網(wǎng)絡(luò)不好的話,免去了漫長(zhǎng)的等待惭蟋。
![image_1al4vjmbf5cb1141eqq11se8qo13.png-93.4kB](http://static.zybuluo.com/asce1885/5j4md1t2fhs4u2shj8w4557y/image_1al4vjmbf5cb1141eqq11se8qo13.png)
Deco 區(qū)別于其他 IDE 最顯著的特性是支持常用控件的拖拽生成代碼和可視化編輯苗桂,這些控件既有 React Native 原生控件,也有一些知名的開(kāi)源控件告组,當(dāng)然煤伟,目前 Deco 集成的數(shù)量還比較少,如下圖所示,我們拖拽一個(gè)名為 Lightbox
的開(kāi)源控件持偏,如果是第一次使用驼卖,Deco 會(huì)執(zhí)行 npm install react-native-lightbox
命令首先下載安裝這個(gè)控件氨肌,然后在代碼編輯區(qū)自動(dòng)生成代碼鸿秆,同時(shí)在右邊的屬性編輯區(qū)中會(huì)有對(duì)應(yīng)的屬性值,修改屬性編輯區(qū)的屬性值怎囚,會(huì)實(shí)時(shí)反應(yīng)到代碼中卿叽。
![image_1al6cr8411qte7uq1343eod51u9.png-242.6kB](http://static.zybuluo.com/asce1885/gaj97mr82kdtuqi90tmji9wy/image_1al6cr8411qte7uq1343eod51u9.png)
更直觀的感受可以自己下載 Deco 執(zhí)行一下,或者到官網(wǎng)觀看一個(gè) 30 秒的演示視頻[14]恳守。
總結(jié)
本文介紹了目前開(kāi)發(fā) React Native 的幾款可選的主流 IDE考婴,大家可以根據(jù)自己的具體情況進(jìn)行選擇,當(dāng)然催烘,團(tuán)隊(duì)開(kāi)發(fā)中建議使用統(tǒng)一的 IDE沥阱。選擇哪一款 IDE,首先取決于你們團(tuán)隊(duì)的硬件配置以及對(duì)付費(fèi)軟件使用的態(tài)度伊群,然后才是 IDE 的功能特性考杉。
- 如果你的團(tuán)隊(duì)都是使用 MacBook Pro 進(jìn)行開(kāi)發(fā),那么上面五款 IDE 都可以使用舰始,如果團(tuán)隊(duì)中既有 Windows 電腦崇棠,也有 Mac 電腦,那么 Atom+Nuclide 和 Deco 就使用不了了丸卷。
- 如果你們團(tuán)隊(duì)能夠負(fù)擔(dān)起付費(fèi)應(yīng)用枕稀,那么 WebStorm 是不錯(cuò)的選擇,特別對(duì)于之前是 Android 開(kāi)發(fā)的同學(xué)來(lái)說(shuō)谜嫉,可以實(shí)現(xiàn) Android Studio 和 WebStorm 的無(wú)縫銜接萎坷。
- 如果上面兩個(gè)條件都不滿足,那么就只剩下 Sublime Text 3 和 Visual Studio Code 可選了沐兰。從我們上面的介紹中可以了解到哆档,這兩款也都是非常強(qiáng)大的,如何選擇取決于你自己僧鲁。
拓展閱讀
《VS Code(1.2.0)最新亮點(diǎn)和特性全介紹》[15]
《Atom 1.8和1.9 beta發(fā)布》[16]
《React Native開(kāi)發(fā)IDE安裝及配置》[17]
《新編碼神器Atom使用紀(jì)要》[18]
《Visual Studio Code Guide[中文版]》[19]
《Sublime Text 3 搭建 React.js 開(kāi)發(fā)環(huán)境》[20]
《用Sublime 3作為React Native的開(kāi)發(fā)IDE》[21]