我的 React Native 技能樹點(diǎn)亮計劃 の React Native 開發(fā) IDE 選型和配置

作者簡介:ASCE1885, 《Android 高級進(jìn)階》作者。

  • 微信公眾號:asce1885
  • 小密圈:Android高級進(jìn)階,詳情見這篇文章
  • Github,簡書,微博,CSDN 知乎
    本文首發(fā)于 InfoQ 移動技術(shù)公眾號:移動開發(fā)前線
    由于潛在的商業(yè)目的,未經(jīng)許可不開放全文轉(zhuǎn)載許可,謝謝!
gold.png-2324.9kB
gold.png-2324.9kB

React Native 發(fā)布一年多了,有不少公司已經(jīng)在線上產(chǎn)品中或小范圍試水,或大范圍應(yīng)用,很多公司或開發(fā)者都在為 React Native 的生態(tài)系統(tǒng)作出自己的貢獻(xiàn)。React Native 的開發(fā)基本上是 Javascript + 系統(tǒng)原生開發(fā)語言(Java,Objective-C,Swift),原生語言的開發(fā)所用的 IDE 沒有多余的選擇,Android 平臺只能使用 Android Studio(不要告訴我你還在使用 Eclipse),iOS 平臺只能使用 XCode,而開發(fā) Javascript 的 IDE 選擇就多了,從 FaceBook 官方推薦的 Atom+Nuclide,到與 Android Studio 同系列的 Javascript IDE WebStorm,再到功能強(qiáng)大的 Sublime Text 3,以及微軟推出的 Visual Studio Code 和 decosoftware 專門為 React Native 打造的開源 IDE Deco,甚至 Vim,NodePad++ 等等,都可以用來開發(fā) React Native,唯一的前提能夠支持識別 Javascript 語法,識別 JSX 和 React Native API 的智能提醒。接下來我們就來介紹最常用的五款 IDE 的配置和選型。

Atom[1]+Nuclide[2]

Atom 是由 Github 打造的下一代編程開發(fā)利器,支持 Windows、Mac OS X、Linux 三大桌面平臺,免費(fèi)且開源。Atom 支持各種編程語言的代碼高亮,同時具備強(qiáng)大的代碼補(bǔ)全功能,能夠極大的提高編程效率,Atom 本質(zhì)上是一個文本編輯器,而不是一個 IDE,因此在用來開發(fā) React Native 時需要配合 Nuclide 一起使用。

image_1al7a82ds18sk1hq91h2tipn14d71t.png-426.3kB
image_1al7a82ds18sk1hq91h2tipn14d71t.png-426.3kB

Nuclide 是 Facebook 基于 Atom 的基礎(chǔ)上開發(fā)的一個插件 IDE,可以用來開發(fā) React Native,iOS 和 Web 應(yīng)用,目前不支持 Windows 平臺,只支持 Mac OS X 和 Linux。

image_1al7avfd1p72il9piv2qs9di2a.png-134.4kB
image_1al7avfd1p72il9piv2qs9di2a.png-134.4kB

Nuclide 內(nèi)置了對 React Native 的支持,包括代碼自動補(bǔ)全,代碼診斷等,下圖是代碼補(bǔ)全的截圖:

image_1al7b2vv61gfl1a6d4f075h1fno2n.png-101.1kB
image_1al7b2vv61gfl1a6d4f075h1fno2n.png-101.1kB

Nuclide 是 Facebook 官方提供的 React Native IDE,對 React Native 的支持應(yīng)該是最好的,因此,推薦大家首選這個,如果在你的電腦運(yùn)行起來不會卡頓的話。Nuclide 的安裝很簡單,在確保 Atom 安裝之后,在命令行中執(zhí)行 apm install nuclide 即可。在使用 Nuclide 之前,建議好好看下官網(wǎng)的說明[3]。

WebStorm[4]

WebStorm 是著名的 JetBrains[5] 公司開發(fā)的號稱最智能的 Javascript 集成開發(fā)環(huán)境,可以用于復(fù)雜的客戶端應(yīng)用開發(fā)以及基于 Node.js[6] 的服務(wù)端開發(fā)。如果你之前使用 Android Studio 開發(fā)過 Android 應(yīng)用的話,你一定會覺得 WebStorm 的界面似曾相識,沒錯,因?yàn)?WebStorm 和 Android Studio 都是 JetBrains 的杰作。WebStorm 支持 Windows、Mac OS X、Linux 三大桌面平臺,不過和 Android Studio 可以免費(fèi)使用不同,WebStorm 是需要付費(fèi)使用的,只有 30 天的試用期。

image_1al2crrfmp94opl1087tic1kl9.png-266.6kB
image_1al2crrfmp94opl1087tic1kl9.png-266.6kB

由于 React Native 是基于 React 的,而 React 使用的是 JSX 語法,因此,使用 WebStorm 開發(fā) React Native 之前,我們首先需要設(shè)置支持的 Javascript 語法,點(diǎn)擊 WebStorm-Preferences,在打開的對話框中選擇 Javascript language versionJSX Harmony 即可在代碼編輯器中識別 JSX,如下圖所示:

image_1al4p5lld1eevdsv1mf21g6m1oii9.png-160.5kB
image_1al4p5lld1eevdsv1mf21g6m1oii9.png-160.5kB

當(dāng)然,到這一步,只能使得編輯器識別 JSX 語法的 Javascript 代碼,不會導(dǎo)致代碼標(biāo)紅,但對于 React Native 的 API 名稱,組件名稱等并不會智能提醒和自動補(bǔ)全,因?yàn)槟壳?WebStorm 只支持 React 語法,還不支持 React Native 語法。為了解決這個問題,我們可以使用一個開源的插件:ReactNative-LiveTemplate[7],按照 Github 上面的說明安裝插件并重啟 WebStorm 之后生效,這時在編輯器中輸入 React Native 的組件或者 API 的首字母,會自動聯(lián)想出相應(yīng)的組件,如下所示,方便了很多。如果在使用過程中覺得這個插件有不完善的地方,你還可以在 Github 上面提交你的 Pull Request,貢獻(xiàn)自己的一份力量。

image_1al4ptcak3vt35s1p9d4a3gi5m.png-99.3kB
image_1al4ptcak3vt35s1p9d4a3gi5m.png-99.3kB

Sublime Text 3[8]

Sublime Text 3 是一款廣泛使用的代碼編輯器,支持 Windows、Mac OS X、Linux 三大桌面平臺,它是付費(fèi)應(yīng)用,但目前可以無限期的試用。它支持多種編程語言的語法高亮、擁有優(yōu)秀的代碼自動完成功能,還擁有代碼片段(Snippet
)的功能,可以將常用的代碼片段保存起來,在需要時隨時調(diào)用,極大的提高編程效率。

image_1al7c3v7i329tmc1lo91v4b1qg34.png-65.3kB
image_1al7c3v7i329tmc1lo91v4b1qg34.png-65.3kB

Sublime Text 3 強(qiáng)大功能的支撐在于它的插件機(jī)制,通過 Package Control 功能,開發(fā)者可以安裝各種需要的插件,默認(rèn)情況下,Sublime Text 3 沒有集成 Package Control,我們需要自己安裝。Package Control 有命令安裝和手動安裝兩種方式,建議優(yōu)先選擇命令安裝,可以參考官網(wǎng)安裝指南[9]。本文我們介紹命令安裝方式,在 Sublime Text 3 中通過 View->Show Console 打開命令行,執(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)

上面的命令會創(chuàng)建安裝所需的包目錄,并下載 Package Control.sublime-package 到目錄中。安裝完成后,可以在 Preferences 菜單下找到 Package Settings 和 Package Control 兩個子菜單。

在 Sublime Text 3 中,React Native 開發(fā)相關(guān)的插件主要有:

  • babel-sublime[10]:支持 Javascript,ES6 和 JSX 語法高亮
  • react-native-snippets[11]:支持 React Native 代碼片段

在 Package Control 對話框中選擇 Package Control:Install Packages 并在彈出的對話框中輸入 Babel,即可找到 babel-sublime:

image_1al738d691avg1ftf1b7ck4i1eie9.png-52.7kB
image_1al738d691avg1ftf1b7ck4i1eie9.png-52.7kB

安裝完成之后,需要啟用它,如下圖所示菜單操作即可:

image_1al74khdk1ack11aflo6stf19p2m.png-420.1kB
image_1al74khdk1ack11aflo6stf19p2m.png-420.1kB

react-native-snippets 插件同樣通過 Package Control 進(jìn)行安裝,在 Install Package 對話框中搜索 react-native-snippets 安裝即可:

image_1al768abv2kf1miak917hsv0p13.png-81.4kB
image_1al768abv2kf1miak917hsv0p13.png-81.4kB

安裝完成之后,在代碼編輯器中輸入代碼片段的縮寫,例如我們新建一個名為 UserDetail.js 的文件,在其中輸入 rncc 來創(chuàng)建一個 React Native 的類,智能提醒如下所示:

image_1al799aiune9k691hha1vli16be1g.png-54.8kB
image_1al799aiune9k691hha1vli16be1g.png-54.8kB

按下 Enter 鍵,插件自動生成如下樣板代碼,節(jié)省了很多手動輸入所需花費(fèi)的時間:

'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,其他常見的代碼片段如下所示,更多內(nèi)容參見插件的 Github 首頁。

image_1al7mdbf7r9n5uu4rg5h1dr73h.png-83.1kB
image_1al7mdbf7r9n5uu4rg5h1dr73h.png-83.1kB

Visual Studio Code[12]

Visual Studio Code 是微軟推出的一個輕量級的開源 Web 集成開發(fā)環(huán)境,支持超過 30 種語言的開發(fā),同時支持 Windows、Mac OS X、Linux 三大桌面平臺。

image_1ardliff01st41t5u19op1pgif129.png-153.7kB
image_1ardliff01st41t5u19op1pgif129.png-153.7kB

對于開發(fā) React Native 而言,微軟提供了專門的插件:vscode-react-native[13],按照官網(wǎng)的說明進(jìn)行插件的安裝即可。這個插件使得開發(fā)者可以在 VS Code 中調(diào)試 React Native 代碼,快速執(zhí)行 react-native 命令,以及對 React Native 的 API 具備智能提醒功能,如下所示:

react-features.gif-898.1kB
react-features.gif-898.1kB

Deco[14]

Deco 是不久前剛發(fā)布的一個開源的專門為 React Native 打造的 IDE,目前只支持 Mac OS X 平臺。它封裝了 React Native 開發(fā)中經(jīng)常會使用到的功能,例如集成 npm install 功能,集成 iPhone 和 iPad 模擬器,新建工程時快速生成 AwesomeProject,開發(fā)者不再需要通過執(zhí)行 react-native init AwesomeProject 命令來生成了,關(guān)鍵是如果網(wǎng)絡(luò)不好的話,免去了漫長的等待。

image_1al4vjmbf5cb1141eqq11se8qo13.png-93.4kB
image_1al4vjmbf5cb1141eqq11se8qo13.png-93.4kB

Deco 區(qū)別于其他 IDE 最顯著的特性是支持常用控件的拖拽生成代碼和可視化編輯,這些控件既有 React Native 原生控件,也有一些知名的開源控件,當(dāng)然,目前 Deco 集成的數(shù)量還比較少,如下圖所示,我們拖拽一個名為 Lightbox 的開源控件,如果是第一次使用,Deco 會執(zhí)行 npm install react-native-lightbox 命令首先下載安裝這個控件,然后在代碼編輯區(qū)自動生成代碼,同時在右邊的屬性編輯區(qū)中會有對應(yīng)的屬性值,修改屬性編輯區(qū)的屬性值,會實(shí)時反應(yīng)到代碼中。

image_1al6cr8411qte7uq1343eod51u9.png-242.6kB
image_1al6cr8411qte7uq1343eod51u9.png-242.6kB

更直觀的感受可以自己下載 Deco 執(zhí)行一下,或者到官網(wǎng)觀看一個 30 秒的演示視頻[14]。

總結(jié)

本文介紹了目前開發(fā) React Native 的幾款可選的主流 IDE,大家可以根據(jù)自己的具體情況進(jìn)行選擇,當(dāng)然,團(tuán)隊(duì)開發(fā)中建議使用統(tǒng)一的 IDE。選擇哪一款 IDE,首先取決于你們團(tuán)隊(duì)的硬件配置以及對付費(fèi)軟件使用的態(tài)度,然后才是 IDE 的功能特性。

  • 如果你的團(tuán)隊(duì)都是使用 MacBook Pro 進(jìn)行開發(fā),那么上面五款 IDE 都可以使用,如果團(tuán)隊(duì)中既有 Windows 電腦,也有 Mac 電腦,那么 Atom+Nuclide 和 Deco 就使用不了了。
  • 如果你們團(tuán)隊(duì)能夠負(fù)擔(dān)起付費(fèi)應(yīng)用,那么 WebStorm 是不錯的選擇,特別對于之前是 Android 開發(fā)的同學(xué)來說,可以實(shí)現(xiàn) Android Studio 和 WebStorm 的無縫銜接。
  • 如果上面兩個條件都不滿足,那么就只剩下 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開發(fā)IDE安裝及配置》[17]
《新編碼神器Atom使用紀(jì)要》[18]
《Visual Studio Code Guide[中文版]》[19]
《Sublime Text 3 搭建 React.js 開發(fā)環(huán)境》[20]
《用Sublime 3作為React Native的開發(fā)IDE》[21]


  1. https://atom.io/ ?

  2. https://nuclide.io/ ?

  3. https://nuclide.io/docs/quick-start/getting-started/ ?

  4. https://www.jetbrains.com/webstorm/ ?

  5. https://www.jetbrains.com/ ?

  6. https://nodejs.org/en/ ?

  7. https://github.com/virtoolswebplayer/ReactNative-LiveTemplate ?

  8. https://www.sublimetext.com/3 ?

  9. https://packagecontrol.io/installation#st3 ?

  10. https://github.com/babel/babel-sublime ?

  11. https://github.com/Shrugs/react-native-snippets ?

  12. https://www.visualstudio.com/en-us/products/code-vs.aspx ?

  13. https://github.com/Microsoft/vscode-react-native ?

  14. https://www.decosoftware.com/ ? ?

  15. http://geek.csdn.net/news/detail/80215 ?

  16. http://geek.csdn.net/news/detail/80212 ?

  17. http://www.lcode.org/%E3%80%90react-native%E5%BC%80%E5%8F%91%E3%80%91react-native%E5%BC%80%E5%8F%91ide%E5%AE%89%E8%A3%85%E5%8F%8A%E9%85%8D%E7%BD%AE/ ?

  18. http://www.jeffjade.com/2016/03/03/2016-03-02-how-to-use-atom/ ?

  19. http://i5ting.github.io/vsc/ ?

  20. https://segmentfault.com/a/1190000003698071 ?

  21. http://www.lxweimin.com/p/2ddfff095e90 ?

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容