評測:七款JavaScript IDE迎接全面審查
譯文著眼于JavaScript編程工作,WebStorm與Visual Studio Code在集成工具的豐富程度與功能性方面拔得頭籌。
JavaScript目前已經(jīng)被用于開發(fā)各種不同類型的應(yīng)用程序方案。在大多數(shù)情況下,JavaScript往往與HTML 5及CSS配合使用以開發(fā)Web前端。然而JavaScript同時也在移動應(yīng)用程序的構(gòu)建當(dāng)中發(fā)揮著重要作用,而且依托于Node.js服務(wù)器而在后端領(lǐng)域擁有相當(dāng)活躍的表現(xiàn)。幸運(yùn)的是,眾多JavaScript開發(fā)工具——包括編輯器與IDE——正陸續(xù)涌現(xiàn),旨在幫助大家解決開發(fā)工作中的各種新型挑戰(zhàn)。
在之前的討論中,我們已經(jīng)共同審視了當(dāng)前可用的各款JavaScript編輯器方案。而在今天的文章中,我們將把著眼轉(zhuǎn)向IDE。正如大家所見,其中一部分確實(shí)非常出色,但另一部分——甚至相當(dāng)令人熟知并擁有良好的聲譽(yù)——卻表現(xiàn)得并不太好,可以說并不值得大家在它們身上浪費(fèi)時間。為了給這些方案留點(diǎn)面子,我沒有將其尷尬的評估得分、可憐的一點(diǎn)優(yōu)勢以及令人發(fā)指的缺陷逐一列出,但仍會將其納入討論范疇。
接下來的問題是,我們?yōu)槭裁匆褂肐DE而不是編輯器?主要原因在于,IDE能夠調(diào)試并在某些條件下實(shí)現(xiàn)代碼分析。IDE同時也支持各類應(yīng)用程序生命周期管理(簡稱ALM)系統(tǒng),能夠?qū)⒅T如Git、GitHub、Mercurial、Subversion以及Perforce版本控制方案等機(jī)制集成進(jìn)來。不過隨著越來越多的編輯器工具開始與這些系統(tǒng)相對接,ALM支持恐怕將不再成為區(qū)分編輯器與IDE的主要差異化因素。
Aptana Studio
Aptana Studio 3是一套可自由加以定義且(大部分)開源的Eclipse安裝版本,能夠運(yùn)行于Mac OS X、Windows以及Linux環(huán)境之下,且擁有較JSDT(即JavaScript開發(fā)工具)更為出色的JavaScript與JavaScript庫編輯能力。除此之外,它以Eclipse插件形式向用戶交付。
幾年之前,我曾經(jīng)在自己的JavaScript與Ruby on Rails開發(fā)工作中大量使用Aptana,但最近一段時間Aptana項(xiàng)目的發(fā)展步伐明顯放慢,這主要是因?yàn)锳ptana正逐漸成為Appcelerator Titanium Studio(相關(guān)內(nèi)容將在后文中介紹)的底層技術(shù)。目前Apatana GitHub項(xiàng)目主要由兩位提交者及十五位貢獻(xiàn)者負(fù)責(zé)支持。
Aptana能夠支持HTML 5、CSS 3、JavaScript、Ruby、Rails、PHP以及Python,同時面向Git與GitHub。大家能夠通過添加Eclipse插件的方式為其納入更多對其它ALM的支持能力。我已經(jīng)在自己的計(jì)算機(jī)上使用Git庫,但卻無法從Aptana當(dāng)中找到任何Git功能。照理來說我在通過Git或者GitHub進(jìn)行了庫導(dǎo)入之后,這項(xiàng)功能應(yīng)該就被開啟了——但實(shí)際上卻什么都沒發(fā)生。其它IDE則都能夠識別出.git目錄的存在并自動啟動自己的Git支持功能。
Aptana 3當(dāng)中包含一系列TextMate以及幾套新型.ruble綁定方案。它還擁有出色的JavaScript高亮顯示與不錯的JavaScript代碼自動補(bǔ)全功能。我清清楚楚地記得當(dāng)初的Aptana 2擁有jQuery支持能力,但在現(xiàn)在我所使用的Aptana 3當(dāng)中,輸入$.并不會呼出補(bǔ)全菜單。
Aptana雖然還是不錯,但我現(xiàn)在更傾向于使用其它編輯器及IDE方案,例如在進(jìn)行JavaScript開發(fā)時使用WebStorm、在進(jìn)行Ruby編程時使用Komodo,并利用Sublime Text進(jìn)行通用性文本編輯。
#p#
Eclipse配合JSDT
我很少會對某款I(lǐng)DE主動作出負(fù)面評價,不過在JavaScript開發(fā)工作當(dāng)中,Eclipse確實(shí)招來了我的不少抱怨之聲。
遙想當(dāng)初Java Swing剛剛面世且令人振奮之時,我曾經(jīng)樂于利用Eclipse處理Java開發(fā)工作。甚至直到去年,我還在使用Eclipse進(jìn)行Android開發(fā),而且使用體驗(yàn)也還算不錯。但在上手了Eclipse配合JSDT之后,我發(fā)現(xiàn)自己總是一而再、再而三地被失望所吞沒。
從積極的方面看,Eclipse擁有相當(dāng)出色的成熟度水平。我們能夠想到的任意開源項(xiàng)目、編程語言或者主流ALM產(chǎn)品都能通過插件形式介入其中。
然而,Eclipse與JSDT這一組合在速度與精確水平上無法與本文中已經(jīng)以及將要出現(xiàn)的任何一款JavaScript相媲美——它仍然會不斷顯示出由已通過JSHint的有效代碼所引發(fā)的誤報(bào)錯誤。
如果大家必須利用Eclipse進(jìn)行JavaScript開發(fā)——舉例來說,我們需要通過JSP代碼來生成JavaScript代碼,而Eclipse又是所在企業(yè)選定的授權(quán)方案——相信各位完全有能力解決上述問題。但從個人角度來講,我是不愿意這么干的。
也就是說,Eclipse可以搭配正確的插件來實(shí)現(xiàn)預(yù)期目標(biāo)——例如配合Aptana Studio。
Eclipse IDE for Java EE Developers當(dāng)中將JavaScript開發(fā)支持能力作為其Web Tools Platform的組成部分。不過奇怪的是,JavaScript代碼檢查功能經(jīng)常會對某些得到廣泛應(yīng)用的jQuery Core生產(chǎn)版本進(jìn)行語法錯誤誤報(bào)。據(jù)稱該項(xiàng)目開發(fā)團(tuán)隊(duì)正在著手修復(fù),并承諾在未來的版本中減少此類誤報(bào)情況的發(fā)生,但在過去十八個月當(dāng)中、我們?nèi)匀粵]能得到任何有價值的進(jìn)程與成果。
#p#
Komodo IDE
自2001年Komodo IDE誕生以來,我個人曾經(jīng)是它的熱心用戶兼忠實(shí)粉絲。盡管Sublime Text以及WebStorm等新型產(chǎn)品能夠在某些方面將其超越,但不可否認(rèn)、Komodo IDE仍然是一款出色的編輯器與IDE。
Komodo IDE提供高級JavaScript編輯、語法高亮、導(dǎo)航以及調(diào)試等功能,但卻不包含JavaScript代碼檢查機(jī)制。有鑒于此,大家可以始終在shell當(dāng)中運(yùn)行JSHint。
Komodo支持十幾種編程與標(biāo)記語言,并重點(diǎn)面向Perl、Python、PHP、Ruby、Tcl以及XSLT。憑借著自身廣泛的編程及標(biāo)記語言支持能力,包括重構(gòu)、調(diào)試及解析機(jī)制,Komodo IDE成為開源語言領(lǐng)域內(nèi)端到端開發(fā)工作中的一大理想選項(xiàng)。
Komodo擁有一套代碼重構(gòu)模塊,能夠面向其提供代碼智能特性的全部語言起效,具體包括PHP、Perl、Python、Ruby、JavaScript以及Node.js。遺憾的是,這套方案存在著“最小公分母”特性限制了其對變量與類成員進(jìn)行重命名以及將代碼提取至方法的能力。很明顯,這些都是最為常見的實(shí)用性需求。
Komodo IDE擁有雙列編輯與多內(nèi)容選定功能。這使其具備了幾乎可與Sublime Text以及TextMate相比肩的大量內(nèi)容編輯效果。我們在比較過程當(dāng)中發(fā)現(xiàn),Komodo更多傾向于IDE定位,而Sublime Text的速度表現(xiàn)則更為出色。而且著眼于性能水平方面,Komodo新版本的速度水平較舊版本實(shí)現(xiàn)了顯著改進(jìn),特別是在屏幕繪制、搜索以及語法檢查等方面。
Komodo IDE擁有幾項(xiàng)大多數(shù)其它競爭產(chǎn)品所缺乏的功能。其一是其HTTP Inspector,它在調(diào)試Ajax回調(diào)時表現(xiàn)出色。另一條則是其Rx(即正則表達(dá)式,或者regex)工具包,我們能夠利用它順利為JavaScript、Perl、PHP、Python以及Ruby構(gòu)建正則表達(dá)式并進(jìn)行測試。
Komodo IDE提供先進(jìn)JavaScript編輯、語法高亮以及導(dǎo)航機(jī)制,但卻不包含常用的JavaScript代碼檢查機(jī)制(我們需要運(yùn)行JSHint來彌補(bǔ)這一不足)。Komodo支持十幾種編程與標(biāo)記語言,重點(diǎn)面向Perl、Python、PHP、Ruby、Tcl以及XSLT,且其中包含調(diào)試、重構(gòu)、源代碼控制集成以及單元測試等功能。
協(xié)作能力是Komodo IDE的另一大差異優(yōu)勢——大家不妨將其理解為利用Google Docs進(jìn)行編碼。我們可以為文件組建立會話,將聯(lián)系人作為協(xié)作者添加至?xí)挳?dāng)中,而后同時對同一文件進(jìn)行處理——開發(fā)內(nèi)容會以近實(shí)時方式實(shí)現(xiàn)同步。
協(xié)作機(jī)制雖然不能完全取代源代碼控制,但它卻確實(shí)算得上一種有益的補(bǔ)充。Komodo IDE利用CVS、Subversion、Perforce、Git、Mercurial以及Bazaar實(shí)現(xiàn)源代碼控制集成,但只支持最基本的版本控制操作。分支版本等較為高級的操作必須通過獨(dú)立的源代碼控制客戶端才能實(shí)現(xiàn)。
盡管Komodo并不具備自己的JavaScript文件格式化工具,但我們卻能夠利用各類最佳開源方案的優(yōu)勢實(shí)現(xiàn)這一任務(wù)。著眼于現(xiàn)成方案,JavaScript文件的默認(rèn)格式化工具為JS Beautifier,不過大家可以在下拉菜單中找到另外九種選項(xiàng)。
Komodo IDE并不支持對客戶端JavaScript進(jìn)行調(diào)試,但卻能夠以本地及遠(yuǎn)程方式實(shí)現(xiàn)Node.js調(diào)試。除此之外,它還可以調(diào)試Per、Python、PHP、Ruby、Tcl以及XSLT代碼。當(dāng)然,大家亦能夠利用火狐瀏覽器的Firebug或者Chrome瀏覽器實(shí)現(xiàn)調(diào)試。
Komodo IDE擁有一套DOM查看工具,允許大家以可折疊樹樹狀圖的方式查看XML與HTML文件。它還允許我們運(yùn)行XPath搜索以實(shí)現(xiàn)此類樹狀圖的內(nèi)容過濾。
Komodo的代碼分析與單元測試模塊并不支持JavaScript代碼。不過JavaScript與Node.js都被包含在了Komodo的代碼智能模塊當(dāng)中,其能夠?qū)崿F(xiàn)代碼瀏覽、自動補(bǔ)全以及調(diào)用提示。
Komodo IDE可以通過FTP、SFTP、FTPS或者SCP實(shí)現(xiàn)文件組發(fā)布。Komodo還能夠同步文件內(nèi)容并檢測出可能導(dǎo)致大家覆蓋他人變更內(nèi)容的潛在發(fā)布沖突。
總體而言,Komodo是一款良好但還稱不上出色的JavaScript IDE,同時也是一款良好但談不到卓越的JavaScript編輯器。不過它仍然有機(jī)會切實(shí)滿足大家的實(shí)際需求——特別是在我們需要處理Perl、Python、PHP、Ruby、Tcl或者XSLT代碼的情況下。
#p#
NetBeans IDE
NetBeans對于客戶端JavaScript、HTML 5以及CSS 3擁有良好的支持能力,而且支持利用Cordova/PhoneGap框架構(gòu)建基于JavaScript的移動應(yīng)用程序。盡管NetBeans并不是本次評測當(dāng)中速度表現(xiàn)最強(qiáng)的IDE方案,但它卻足以成為最快方案之一,而且基于開源許可免費(fèi)發(fā)布。當(dāng)然,在面對服務(wù)器端JavaScript編程時,大家恐怕需要找找其它方案才行。
NetBeans JavaScript編輯器提供語法高亮、自動補(bǔ)全以及代碼折疊等大家希望擁有的功能。其JavaScript編輯功能同樣也作用于被嵌入至PHP、JSP以及HTML文件內(nèi)的JavaScript代碼。jQuery支持能力也內(nèi)置于編輯器當(dāng)中。盡管NetBeans 8在更新當(dāng)中實(shí)現(xiàn)了RequireJS支持并為Node.js提供一款社區(qū)插件,但利用它處理Node.js項(xiàng)目或者JavaScript代碼庫項(xiàng)目仍然會帶來令人沮喪的使用體驗(yàn)。
代碼分析機(jī)制會在我們編輯內(nèi)容的同時在后臺中同時運(yùn)行,從而提供各類警告與提示信息。調(diào)試機(jī)制能夠作用于嵌入WebKit瀏覽器以及安裝有NetBeans Connector的Chrome瀏覽器當(dāng)中。該調(diào)試工具能夠應(yīng)對DOM、行、事件以及XMLHttpRequest斷點(diǎn),同時能夠顯示變量、審查以及調(diào)用堆棧。另有一套集成化瀏覽器日志窗口用于顯示瀏覽器異常、錯誤以及警告信息。
NetBeans能夠利用JsTestDriver配置并執(zhí)行單元測試——順帶一提,JsTestDriver為單一JAR(即Java歸檔)文件,大家可以免費(fèi)進(jìn)行下載。如果大家在Services窗口中進(jìn)行JsTestDriver進(jìn)行配置時指定了安裝有NetBeans Connector的Chrome作為JsTestDriver瀏覽器,那么單元測試調(diào)試功能將自動啟用。
當(dāng)大家利用NetBeans Connetor在Chrome瀏覽器內(nèi)進(jìn)行Web應(yīng)用程序調(diào)試時,或者利用Chrome開發(fā)者工具編輯CSS代碼時,所作出的變更將被NetBeans捕捉到并保存到對應(yīng)CSS文件當(dāng)中。不過如果我們的CSS文件是由SASS或者LESS風(fēng)格的表格所生成,那么各位必須以手動方式更新該源表格,因?yàn)榇祟怌SS文件僅僅屬于編譯后的輸出結(jié)果。
在嵌入式WebKit瀏覽器以及安裝有NetBeans Connector的Chrome瀏覽器當(dāng)中,大家可以利用NetBeans網(wǎng)絡(luò)監(jiān)控工具查看請求頭、響應(yīng)以及用于REST通信的調(diào)用堆棧。對于WebSocket通信而言,頭與文本框都將得以顯示??傮w而言,NetBeans在與Chrome配合時能夠帶來略優(yōu)于火狐與Firebug組合的調(diào)試功能使用體驗(yàn)。
NetBeans IDE除支持JavaScript之外,亦面向Java、C/C++、XML、HTML 5、PHP、Groovy、Javadoc、JSP以及Cordova/PhoneGap。JavaScript的具體支持能力包括語法高亮、自動補(bǔ)全、代碼折疊、代碼分析、調(diào)試以及單元測試等。
NetBeans當(dāng)中集成了面向Git、Subversion、Mercurial以及CVS的源代碼控制機(jī)制。Git支持能力同時由一套圖形化Diff查看工具以及IDE內(nèi)置的擱置系統(tǒng)所支撐。NetBeans能夠?qū)it文件狀態(tài)進(jìn)行彩色代碼顯示,從而允許大家查看每個文件的版本遞進(jìn)歷史,同時提供每個版本受控文件內(nèi)每行代碼的版本遞進(jìn)與作者信息。除此之外,NetBeans還擁有面向Subversion、Mercurial以及CVS的類似集成機(jī)制,不過我個人只測試過Git。
NetBeans當(dāng)中集成了Jira與Bugzilla問題追蹤功能。在NetBeans任務(wù)窗口當(dāng)中,大家可以搜索任務(wù)、搜索保存結(jié)果、更新任務(wù)并在已注冊的任務(wù)庫當(dāng)中解決任務(wù)。遺憾的是,我所開發(fā)的開源項(xiàng)目采用Trac進(jìn)行jQuery Core測試,而非Jira或者Bugzilla。NetBeans同時也能夠利用Kenai基礎(chǔ)設(shè)施進(jìn)行站點(diǎn)團(tuán)隊(duì)服務(wù)器集成——基本上為kenai.com與java.net。
NetBeans 8加入了RequireJS的支持能力,通過來自控制器視圖的超鏈接實(shí)現(xiàn)AngularJS導(dǎo)航機(jī)制,并且強(qiáng)化了AngularJS代碼補(bǔ)全功能。除此之外,NetBeans還在Knockout模板當(dāng)中加入了代碼補(bǔ)全支持,其新編輯器還支持創(chuàng)建jQuery部件與插件,并在Nashorn當(dāng)中執(zhí)行JavaScript代碼調(diào)試。
不過NetBeans并沒能真正跟隨JavaScript借助Node.js以及Express等在服務(wù)器端起效的發(fā)展腳步。根據(jù)目前我的使用感受,盡管已經(jīng)能夠配置Java應(yīng)用程序與EJB模塊,NetBeans仍然缺少JavaScript配置功能。此外,雖然NetBeans能夠重構(gòu)Java與PHP代碼,但它無法重構(gòu)JavaScript代碼。
總體而言,NetBeans在客戶端JavaScript、HTML 5以及CSS 3開發(fā)領(lǐng)域算得上一套有競爭力的方案選項(xiàng),特別是在大家同時需要在服務(wù)器端處理Java、PHP或者C++開發(fā)工作的情況下——但不包含在服務(wù)器端進(jìn)行JavaScript開發(fā)的情況。如果大家沒有使用WebStorm的預(yù)算,那么NetBeans確實(shí)能夠起到相當(dāng)不錯的替代作用——除了其孱弱的Node.js支持能力。
#p#
Visual Studio 2013配備NTVS與Web Essentials
在我的Visual Studio 2013全面評測報(bào)告當(dāng)中,我曾經(jīng)對該產(chǎn)品進(jìn)行徹底闡述,但其中并沒有將JavaScript作為主要著眼點(diǎn)。今天,我們將把注意力轉(zhuǎn)向新的重點(diǎn)。
綜合評分板 功能 (30%) 性能水平 (30%) 易用性(20%) 說明文檔 (10%) 性價比(10%) 整體評分
總體而言,Visual Studio 2013是一套非常出色的JavaScript IDE,但它同時又是一套更加優(yōu)秀的.Net IDE,而且它在面對JavaScript開發(fā)工作時還無法與WebStorm相比肩。盡管Visual Studio 2013也是一款不錯的JavaScript編輯器,但它的C#編輯器方案效果更好,而且在JavaScript方面也無法同Sublime Text媲美。
由于JavaScript是一種與平臺無關(guān)的編程語言,Visual Studio單純支持Windows系統(tǒng)的特性就變成了一種顯著局限——這迫使Mac與Linux系統(tǒng)用戶只能利用Windows虛擬機(jī)加以運(yùn)用。(我撰寫這篇文章所用的就是一臺iMac設(shè)備,而Visual Studio 2013則運(yùn)行在Parallels當(dāng)中的Windows 8.1虛擬機(jī)之內(nèi)。)
正如大家在以下截圖中所見,Visual Studio 2013在面向JavaScript開發(fā)時能夠提供良好的語法彩色顯示與代碼折疊功能,同時具備JavaScript代碼導(dǎo)航機(jī)制:右鍵點(diǎn)擊某個函數(shù)或者成員名稱,我們能夠輕松跳轉(zhuǎn)至其定義或者找到所有參考項(xiàng)。當(dāng)大家查看過定義內(nèi)容之后,只需按下界面上方的后退按鈕即可返回原先的窗口。不過我們能夠在.Net語言中使用的Peek Definition功能尚不適用于JavaScript開發(fā)。
大家可以輕松選定合適的代碼并插入對應(yīng)片段,其中包括HTML或者URL字符串變量編碼。除了JavaScript、HTML以及CSS之外,大家也可以利用Visual Studio編輯Markdown文件并查看渲染后的Markdown效果,并將其與CoffeeScript配合使用。至少其中的一部分功能可以通過免費(fèi)的Web Essentials插件獲得,且同時能夠?qū)崿F(xiàn)Minify與JSHint集成。
除此之外,大家當(dāng)然也能夠利用一款免費(fèi)插件實(shí)現(xiàn).Net語言、C++以及Python的編碼工作。在長時間使用Visual Studio并熟悉了其特性之后,大家能夠直接通過該IDE處理數(shù)據(jù)庫相關(guān)工作。Visual Studio在與SQL Server數(shù)據(jù)庫協(xié)作方面的表現(xiàn)非常突出。大家能夠利用Visual Studio來替代SQL Server Management Studio來處理開發(fā)工作當(dāng)中需要涉及的各類主要操作,從而回避由后者帶來的復(fù)雜性。
根據(jù)具體環(huán)境的不同,Visual Studio 2013的JavaScript代碼補(bǔ)全機(jī)制既可能極具針對性與實(shí)用性,也可能缺乏針對性且毫無用處可言。幸運(yùn)的是,Visual Studio現(xiàn)在會在不具備背景信息的情況下給出警告并顯示相關(guān)問題。大家甚至能夠通過輸入幾個字母來重新定義原本缺失的針對性補(bǔ)全列表。
相較于Visual Studio的早期版本,Visual Studio 2013擁有更為出色的JavaScript支持能力,而且為JavaScript項(xiàng)目帶來了重要的ALM改進(jìn)。正如大家在上圖左側(cè)所見,語法彩色顯示與代碼折疊都擁有良好的實(shí)際效果。而在上圖右上見,我們可以看到JavaScript代碼能夠被作為Web項(xiàng)目來處理。
Visual Studio長久以來一直擁有良好的JavaScript代碼調(diào)試能力,但卻在很大程度上受到IE瀏覽器的限制。Visual Studio 2013則幾乎能夠在任意瀏覽器上進(jìn)行調(diào)試,大家可以從中任意進(jìn)行選擇,具體包括移動設(shè)備以及移動虛擬機(jī)中的瀏覽器方案。Visual Studio 2013還擁有兩套自有瀏覽器:IE的內(nèi)部Web瀏覽器精簡版本以及Page Inspector,其能夠?yàn)槲覀兲峁╀秩竞蟮捻撁嫘Ч约八性醇皹邮?。雖然Page Inspector在運(yùn)行過程中可能需要耗費(fèi)大量時間并以逆向工程方式將自身設(shè)置為一套頁面,不過一旦大家使用這套方案,我們將不必再面對煩人的Visual Studio、瀏覽器以及瀏覽器開發(fā)工具。
Visual Studio 2013的性能表現(xiàn)通常相當(dāng)出色,當(dāng)然前提是我們?yōu)槠涮峁┏湓5膬?nèi)存與CPU處理能力,不過它在設(shè)計(jì)思路上傾向于要求大量資源。正如我在原先的全面評測中所說,Visual Studio 2013的啟動性能較早期版本有了很大提升。反正我個人是不想再像過去那樣進(jìn)行了啟動操作之后泡杯茶慢慢等。
Visual Studio 2013在進(jìn)行應(yīng)用程序診斷時擁有強(qiáng)大的性能表現(xiàn),不過它在面對通常運(yùn)行在瀏覽器深層的二進(jìn)制JavaScript代碼時的性能水平則沒那么突出。它擁有出色的JavaScript函數(shù)計(jì)時、HTML UI響應(yīng)以及JavaScript內(nèi)在管理工具,但這些方案只能被應(yīng)用到基于JavaScript的Windows Store項(xiàng)目當(dāng)中、而非那些偶爾使用JavaScript代碼的Web項(xiàng)目之內(nèi)。
Node.js Tools for Visual Studio(簡稱NTVS)與Web Essentials(前面已經(jīng)提到)插件的加入讓Visual Studio 2013獲得了……支持Node以及Web技術(shù)的能力。NTVS加入了Node.js應(yīng)用程序編輯、IntelliSense、配置、Npm集成、TyperScript支持、本地與遠(yuǎn)程調(diào)試(支持Windows、Mac OS以及Linux)以及在Azure網(wǎng)站與Azure Cloud Services上進(jìn)行調(diào)試的能力。Web Essentials則加入了更多面向CSS、HTML、JavaScript、TypeScript、CoffeeScript以及LESS的支持能力。其中包括以自己偏好的方式運(yùn)行JSHint,允許用戶在關(guān)聯(lián)菜單中縮小JavaScript文件、在保存時對CoffeeScript進(jìn)行自動編譯以及對所生成的JavaScript代碼進(jìn)行比對顯示等。
Visual Studio 2013集成ALM的決定非常值得稱道,但與本次評測所提到的多數(shù)其它IDE不同,它要求使用者在檢查項(xiàng)目的時候才使用該IDE、從而完成相關(guān)功能。大部分其它工具能夠自動識別并使用現(xiàn)有Git代碼庫。也許有辦法讓Visual Studio 2013實(shí)現(xiàn)同樣的能力,但我個人還沒有找到。
總體而言,如果我需要利用Visual Studio 2013作為自己的惟一一套JavaScript IDE方案,那我恐怕會欣然接受——特別是在主要立足于Windows計(jì)算機(jī)或者涉及微軟技術(shù)方案的項(xiàng)目當(dāng)中。然而,對于我個人經(jīng)常需要面對的JavaScript開發(fā)任務(wù),在目前我主要使用的計(jì)算機(jī)平臺之上,WebStorm以及Sublime Text等新型多平臺工具才是更理想也更能提高生產(chǎn)效率的選項(xiàng)。
#p#
Visual Studio Code
Visual Studio Code是一款新型輕量化編輯器與IDE,由微軟公司打造。它擁有一部分來自Visual Studio的組件,并融合了開源Atom “Electron” shell,在C#方面擁有對ASP.Net 5開發(fā)的優(yōu)秀支持效果,在TypeScript與JavaScript方面也具備理想的Node.js開發(fā)支持效果。除此之外,作為微軟僅在Windows平臺上支持Visual Studio方案這一固有格局的重要一步,VSCode同樣能夠運(yùn)行在Mac OS X與Linux系統(tǒng)之上。下面這幅截圖就取自O(shè)S X系統(tǒng)平臺。
VSCode目前正處于預(yù)覽階段,但其已經(jīng)擁有非常卓越的JavaScript代碼補(bǔ)全能力,而這要?dú)w功于TypeScript編譯器的加入。VSCode能夠在后臺將我們的JavaScript代碼發(fā)送至TypeScript編譯器,從而推斷類型并構(gòu)建一套符號表; 大家可以在接近屏幕圖像底部的框體內(nèi)查看相關(guān)結(jié)果,這部分內(nèi)容用于顯示hasOwnProperty方法信息。
同樣的符號表還能夠作用于IntelliSense,從而幫助大家在輸入一條表達(dá)式的過程中獲得用于實(shí)現(xiàn)代碼補(bǔ)全的彈出選項(xiàng)列表。在這里,我們能夠找到自動括號結(jié)束、自動單詞補(bǔ)全選項(xiàng)、輸入.后自動提供方法列表以及在某一方法內(nèi)自動提供參數(shù)列表。大家還能夠?qū)碜訢efinitelyTyped的引用內(nèi)容添加到d.ts文件當(dāng)中,而VSCode將在識別出其中的常見問題后幫助我們將其修正,例如不慎使用了內(nèi)置于Node.js中的變量__dirname。
Git支持能力同樣十分優(yōu)秀且非常易于使用,不過Git同時也是其能夠支持的惟一ALM方案。Visual Studio Code調(diào)試工具能夠?yàn)镹ode.js(以及ASP.Net)開發(fā)流程提供優(yōu)異的調(diào)試體驗(yàn)。VSCode還針對HTML、CSS、LESS、SASS以及JSON擁有出色的工具選項(xiàng),其基于支持IE F12開發(fā)者工具的同類技術(shù)基礎(chǔ)。除此之外,它還能夠以可定制方式與Gulp及Jake等外部任務(wù)運(yùn)行工具相集成。
在本次Build 2015大會上,Scott Hanselman在OS X與Ubuntu平臺上運(yùn)行Visual Studio Code的演示環(huán)節(jié)贏得了在場觀眾的熱烈掌聲。目前該版本為預(yù)覽版; 我們希望它能夠繼續(xù)在保有微軟方案功能特征的同時維持住現(xiàn)有的速度與輕量級優(yōu)勢。我個人對于Visual Studio Code的發(fā)展前景充滿期待,它也作出了很多令人心動的承諾。
Visual Studio Code是一款面向Node.js與ASP.Net的全新輕量級IDE,其同時結(jié)合了TypeScript編譯器、“Roslyn”.Net編譯器等微軟技術(shù)方案并引入了Atom所使用的同一套“Electron”shell。Visual Studio Code可用于Windows、Mac OS X以及Linux平臺。
#p#
WebStorm
Jetpains公司推出的WebStorm雖然在本次評測的各款方案中價格較高,但卻是一款專注于HTML、CSS及JavaScript前端開發(fā)工作的高端Web開發(fā)IDE。Jetpains公司同時也在銷售面向Java、PHP、Ruby以及Python等語言的IDE方案,這些方案皆共享同一套核心引擎。
作為一款面向Web項(xiàng)目開發(fā)工作的編輯器,WebStorm的實(shí)際表現(xiàn)不輸于本次列入評測的任何一套方案。它不僅能為大家?guī)眍A(yù)期中需要的一切,同時還提供大量意外驚喜。意料之中的功能包括語法彩色顯示與有限代碼補(bǔ)全。而意料之外的則包括面向不同混合語言實(shí)例的精確代碼補(bǔ)全,例如JavaScript所生成的HTML代碼。有些代碼編輯可能會將這類HTML代碼作為單純的字符串,但WebStorm卻能夠?qū)⑵渥R別為嵌入式HTML并進(jìn)行下一層解析。WebStorm的JavaScript代碼補(bǔ)全功能適用于關(guān)鍵字、標(biāo)簽、變量、參數(shù)以及基于DOM的函數(shù),它同時還支持多種針對特定瀏覽器的熱門方法。
對我個人來說,當(dāng)進(jìn)行代碼審查時查看與導(dǎo)航功能就顯得非常重要了——無論面向的是他人編寫的代碼、我自己原先寫出的代碼還是尚存疑的新代碼。WebStorm能夠輕松將用戶導(dǎo)航至聲明及符號,并可以找到高亮顯示各類符號、標(biāo)簽及文件的使用情況。
JavaScript不單自身在不斷演進(jìn),其同時在不同類型的瀏覽器及其它環(huán)境中也擁有多種差異化實(shí)現(xiàn)方式。WebStorm允許大家設(shè)定自己偏好的JavaScript版本——最低可低至JavaScript 5.1,最高則可達(dá)到ECMAScript 6。此外,它還能夠根據(jù)當(dāng)前選定的版本提供針對瀏覽器的兼容水平。
誠然,JavaScript是一種相當(dāng)冗長的動態(tài)類型解釋型語言。為了向其中加入更理想的類型檢查機(jī)制,有些朋友傾向于編寫TypeScript。WebStorm支持TypeScript 1.4版本以及TyperScript 1.5中的部分關(guān)鍵性功能,而且還內(nèi)置了一套TypeScript編譯器。為了編寫出更為緊湊的代碼,有些朋友喜歡編寫CoffeeScript。WebStorm同樣支持CoffeeScript,而且加入了源映射的調(diào)試支持能力,用以支持對被翻譯為JavaScript的TypeScript、CoffeeScript或者ECMAScript 6代碼的追蹤。
WebStorm中所內(nèi)置的代碼檢查機(jī)制涵蓋多種常見的JavaScript問題,甚至包含了對Dart、EJS、HTML、Internationalization、LESS、SASS、XML、XPath以及XSLT的檢查能力。WebStorm內(nèi)置有JSHint(jQuery團(tuán)隊(duì)推薦使用),同時支持JSLint。
針對其它產(chǎn)品進(jìn)行Node.js配置往往需要在命令shell當(dāng)中面對惱人的會話。WebStorm能夠自動完成Node.js與Npm的安裝、升級以及源代碼配置。WebStorm同時允許大家對Node.js應(yīng)用程序進(jìn)行自動調(diào)試及配置,并自動補(bǔ)全CommonJS類成員。
除了對Node.js應(yīng)用程序進(jìn)行調(diào)試之外,WebStorm還能夠調(diào)試運(yùn)行在Mozilla火狐或者谷歌Chrome瀏覽器當(dāng)中的JavaScript代碼。它能夠在HTML文件以及JavaScript文件當(dāng)中為我們提供斷點(diǎn),同時允許大家自行定義斷點(diǎn)屬性。調(diào)試工具UI中會顯示我們的框架、變量以及審查視圖,并提供JavaScript表達(dá)式的運(yùn)行時評估(以及谷歌Chrome瀏覽器中的元素標(biāo)簽)。
Jetpains公司的WebStorm是一款面向HTML、CSS、JavaScript與XML的IDE,它擁有多項(xiàng)目支持能力(如上圖左側(cè)所示)以及包含GitHub在內(nèi)的版本控制系統(tǒng)。WebStorm不僅是一款優(yōu)秀的編輯器,同時也能夠?qū)崿F(xiàn)代碼檢查(如上圖右上面板所示)并為用戶提供項(xiàng)目的面向?qū)ο笠晥D。
在調(diào)試過程中,一項(xiàng)名為LiveEdit的功能允許大家變更代碼內(nèi)容并將對應(yīng)變更立即傳遞到當(dāng)前正在運(yùn)行調(diào)試會話的瀏覽器當(dāng)中。這不僅節(jié)約了時間,也將幫助我們避免多種常見難題,例如嘗試找出自己的變更為什么沒有效果時、卻發(fā)現(xiàn)只是單純忘記了刷新瀏覽器。
對于單元測試工作,WebStorm綁定了JsTestDriver插件。這款插件最初屬于一個谷歌項(xiàng)目,但Jetpains目前負(fù)責(zé)其開發(fā)貢獻(xiàn)任務(wù)。除此之外,WebStorm還能夠與Karma測試運(yùn)行工具相集成。無論采用哪種測試方法,WebStorm都會追蹤代碼覆蓋率。
重構(gòu)一直是一項(xiàng)重要但卻讓大部分軟件開發(fā)人員望而卻步的任務(wù),這主要是因?yàn)樵谝允謩臃绞竭M(jìn)行重構(gòu)時、我們往往會帶來新的錯誤。然而,盡管我們?nèi)匀恍枰私馊绾我允謩臃绞竭M(jìn)行代碼重構(gòu)并需要在重構(gòu)過程中做出一系列決定,這款編輯器的強(qiáng)大能力已經(jīng)足以通過非常便捷的方式進(jìn)行自動重構(gòu)。JavaScript庫當(dāng)中沒有什么太過花哨的重構(gòu)工作可做,特別是相較于Java或者C++庫,不過WebStorm自動實(shí)現(xiàn)所有重構(gòu)類型的能力仍然極具現(xiàn)實(shí)意義:重命名; 提取變量、參數(shù)與方法; 代碼嵌入; 變更簽名; 移動; 最后復(fù)制——整個流程一氣呵成。
WebStorm能夠通過FTP、SFTP、FTPS部署至本地或安裝文件夾以及其它對應(yīng)位置。WebStorm能夠根據(jù)需要對目錄及文件進(jìn)行下載、上傳、同步與比對,如果大家愿意、它也能夠自動完成上傳工作。
WebStorm集成有全部主流版本控制系統(tǒng),具體包括Subversion、Mercurial、Git(包括GitHub)、Perforce、CVS以及TFS。它擁有屬于自己的擱置系統(tǒng),大家可以利用這一機(jī)制來將當(dāng)前工作樹狀優(yōu)先級整理為版本控制更新,并將其作為所使用版本控制系統(tǒng)內(nèi)擱置系統(tǒng)(例如Git stash)的替代方案。WebStorm還會追蹤用戶的本地變更歷史記錄,并以內(nèi)聯(lián)方式將變更內(nèi)容與相關(guān)選項(xiàng)一同顯示以簡化恢復(fù)流程,這樣大家就不會遭遇工作成果丟失或者多次提交所引發(fā)的代碼損壞問題了——除非大家非常非常刻意地想要導(dǎo)致這類狀況。
在使用WebStorm時,性能基本不是什么問題。其啟動速度要可能要比Sublime Text略慢一些,但這主要是因?yàn)楹笳呋旧蠈儆谝豢罹庉嬈?,而且WebStorm的啟動速度明顯快于其它真正的IDE方案,特別是基于Java的NetBeans以及Eclipse等IDE選項(xiàng)。
從高層角度出發(fā),WebStorm擁有充足的說明文檔資源,能夠幫助大家快速上手并找到多種常見問題的解決辦法。不過在深入進(jìn)行鉆研之后,大家可能會發(fā)現(xiàn)自己需要通過一些陳舊的博文資料來應(yīng)對難題。在某些情況下,我發(fā)現(xiàn)親自進(jìn)行實(shí)驗(yàn)并恢復(fù)文件內(nèi)容的作法要比通過說明來了解具體解決辦法更為可行。
總體而言,WebStorm是我個人選出的最適合JavaScript/HTML 5/CSS嚴(yán)肅開發(fā)者群體的一套解決方案,這款功能全面的IDE絕對能夠令大家滿意。當(dāng)然,如果各位同時也需要編寫大量非JavaScript的服務(wù)器端代碼,那么選擇其它能夠支持服務(wù)器端語言及數(shù)據(jù)庫,同時又能涵蓋JavaScript的IDE可能更為明智。此外,如果大家并不需要使用IDE,那么Sublime Text或者其它擁有良好JavaScript高亮功能的編輯器——例如packets——也是個不錯的選擇。
#p#
JavaScript IDE方案總結(jié)
綜上所述,Aptana是一款重新煥發(fā)出生機(jī)的老牌解決方案,它缺少一部分我認(rèn)為理應(yīng)存在的機(jī)制。Aptana的速度表現(xiàn)由于采用Eclipse作為底層框架而顯得比較捉急。而將Eclipse本體與官方JSDT插件相搭配的結(jié)果同樣無法帶來出色的JavaScript開發(fā)機(jī)制。
Komodo IDE是另一套老牌解決方案,而且如果大家會將JavaScript代碼與PHP、Perl、Python或者Ruby混合使用; 進(jìn)行廣泛的Ajax開發(fā)工作; 或者編寫大量正則表達(dá)式,那么我仍然愿意將其積極推薦給大家。我個人希望它能夠提供面向JavaScript的代碼分析與單元測試功能。
我對于NetBeans持贊賞態(tài)度,而且其完全免費(fèi),不過遺憾的是它缺少良好的Node.js支持能力。Visual Studio 2013 update 4配合NTVS與Web Essentials是一款非常非常出色的JavaScript IDE,但它多少屬于重量級方案而且對于資源的需求量比較大,此外它還只能運(yùn)行在Windows平臺之上。
Visual Studio Code是一款目前正處于預(yù)覽階段的新型輕量級產(chǎn)品,其中結(jié)合了大量來自Visual Studio的固有優(yōu)勢、同時引入了開源Atom “Electron” shell。再有,它能夠運(yùn)行在Mac OS X、Linux以及Windows系統(tǒng)平臺之上。雖然尚處于早期發(fā)展階段,但Visual Studio Code確實(shí)有潛力成為新的JavaScript IDE王者。
然而就目前來看,王者的皇冠仍然要?dú)w屬于WebStorm??紤]到其出色的編輯功能、實(shí)時代碼分析、強(qiáng)大的ALM集成組合以及對于各類領(lǐng)先JavaScript框架的支持能力,WebStorm能夠滿足專業(yè)JavaScript開發(fā)人員對于一款I(lǐng)DE方案的所有需求——此外還提供其它驚喜。
Komodo IDE 9.0.1 / ActiveState
整體概述
Komodo是一款面向各類主流Web語言的專業(yè)級跨平臺IDE,具體包括HTML、CSS以及JavaScript。Komodo當(dāng)中內(nèi)置有JavaScript調(diào)試工具以及先進(jìn)JavaScript編輯功能,例如重構(gòu)。它支持面向數(shù)十種編程與標(biāo)記語言的語法高亮顯示能力,且重點(diǎn)面向Perl、Python、PHP、Ruby、Tcl以及XSLT。
每套授權(quán)許可295美元。每年升級與技術(shù)支持服務(wù)要價87美元。從Komodo 7進(jìn)行升級須支付168美元。
優(yōu)點(diǎn)
• 良好的JavaScript代碼編輯、導(dǎo)航與調(diào)試能力。
• 支持對多組選定內(nèi)容同時進(jìn)行編輯。
• 面向JavaScript、其它語言以及jQuery等代碼庫提供自動補(bǔ)全與調(diào)用提示功能。
• 大括號自動插入與匹配大括號高亮提示。
• 集成對Subversion、Mercurial、Git、CVS、Perforce以及Bazaar的支持能力。
• 在空白處顯示變更追蹤結(jié)果。
• Live Markdown預(yù)覽。
• 支持Node.js,包括調(diào)試機(jī)制。
缺點(diǎn)
• 缺少JavaScript代碼檢查機(jī)制。
• 速度表現(xiàn)低于Sublime Text,但高于Eclipse以及NetBeans。
NetBeans IDE 8.0.2 / Oracledirectup
整體概述
盡管NetBeans擁有Web項(xiàng)目的概念,但它并不能真正支持JavaScript庫項(xiàng)目。此外,雖然它現(xiàn)在能夠支持RequireJS并具備多種Node.js與JSLint插件,但它并不能以我們希望的方式支持Node.js項(xiàng)目。
免費(fèi)開源工具
優(yōu)點(diǎn)
• 支持語法高亮顯示、自動補(bǔ)全、代碼折疊與代碼分析功能。
• 能夠?qū)崿F(xiàn)調(diào)試與單元測試。
• 集成有源代碼控制、問題追蹤以及團(tuán)隊(duì)服務(wù)器等機(jī)制。
• 利用Cordova框架實(shí)現(xiàn)移動Web開發(fā)支持能力。
缺點(diǎn)
• 速度表現(xiàn)糟糕,特別是與WebStorm相比較、其啟動速度令人沮喪。
• 對于Node.js以及JavaScript庫項(xiàng)目的支持能力較為有限。
• 相較于Eclipse,可選插件數(shù)量較為有限。
微軟Visual Studio 2013 Update 4 / Microsoftdirectup
整體概述
對于基于Windows系統(tǒng)平臺的開發(fā)工作來說,Visual Studio 2013確實(shí)是一套非常出色的JavaScript IDE,其擁有良好的代碼編輯與導(dǎo)航、語法高亮顯示、代碼折疊、調(diào)試以及JavaScript函數(shù)計(jì)時等功能。對于ALM,特別是Git與TFS,的支持能力亦相當(dāng)值得稱道。
使用成本由Express SKU的免費(fèi)到Ultimate with MSDN版本的13299美元(每年更新價格為4249美元)。
優(yōu)點(diǎn)
• 良好的代碼編輯與導(dǎo)航、語法高亮顯示以及代碼折疊功能。
• 在多種瀏覽器中實(shí)現(xiàn)出色的調(diào)試支持能力。
• 提供JavaScript函數(shù)計(jì)時機(jī)制。
• 能夠?yàn)镚It以及Team Foundation Server提供良好支持。
• Node.js Tools與Web Essentials插件能夠改進(jìn)Node、JavaScript以及其它相關(guān)開發(fā)流程。
缺點(diǎn)
• 不支持OS X或者Linux平臺,在這種情況下用戶只能在虛擬機(jī)中運(yùn)行Windows系統(tǒng)。
• 新的“Peek definition”操作并不支持JavaScript(只適用于C#、Visual Basic以及C++代碼)。
• Visual Studio 2013的Ultimate with MSDN版本價格太過高昂,但Visual Studio 2015企業(yè)版的價格將有所下調(diào)。
WebStorm 10.0.2 / Jetpainsdirectup
整體概述
WebStorm是一款令人贊不絕口的、效率極高且功能齊備的專業(yè)級IDE,主要面向JavaScript、HTML以及CSS開發(fā)工作。它還提供非常合理的價位設(shè)置——強(qiáng)烈推薦給每一位嚴(yán)肅JavaScript開發(fā)人員。
根據(jù)使用方式及組織關(guān)系由免費(fèi)到99美元,其中包含一年升級服務(wù)。在此之后的每年升級價格同樣由免費(fèi)到99美元不等。大家可以將這套環(huán)境運(yùn)行在Windows、OS X或者Linux等平臺之上——且仍然只需一套許可密鑰。此外提供三十天免費(fèi)試用期。
優(yōu)點(diǎn)
• 卓越的IDE方案,密切貼近利用HTML、CSS、JavaScript進(jìn)行的Web開發(fā)工作,同時適用于各類JavaScript框架以及相關(guān)語言。
• 能夠?qū)崿F(xiàn)語法高亮顯示、文件查找以及代碼重構(gòu)。
• 支持CVS、Git、GitHub、Mercurial以及Subversion集成所實(shí)現(xiàn)的版本控制能力。
• 能夠?qū)崟r進(jìn)行代碼分析、錯誤高亮提示以及快速修復(fù)。
• 擁有自己的項(xiàng)目系統(tǒng)并配備特定項(xiàng)目視圖、文件結(jié)構(gòu)視圖,并能夠在不同文件、類、方法以及使用狀態(tài)之間快速切換。
• 包含有FTP部署、JavaScript調(diào)試工具、單元測試運(yùn)行工具并且集成代碼覆蓋機(jī)制。
• 包含有Node.js、Bower、TypeScript、CoffeeScript以及Dart支持能力。
缺點(diǎn)
• 啟動時間比較長。
• 去掉了服務(wù)器層與數(shù)據(jù)庫層支持能力(Jetpais公司旗下另有其它產(chǎn)品能夠?qū)崿F(xiàn)額外服務(wù)器端支持能力,建議大家利用這些方案進(jìn)行Ajax開發(fā)工作)。
原文鏈接:
http://www.infoworld.com/article/2925050/javascript/review-7-javascript-ides-put-to-the-test.html
原文標(biāo)題:Review: 7 JavaScript IDEs put to the test
核子可樂譯