不只是Web:十大令人振奮的Node.js項(xiàng)目
譯文除了在Web服務(wù)器領(lǐng)域大展拳腳之外,Node.js同樣也在無(wú)處不在的JavaScript應(yīng)用程序創(chuàng)建當(dāng)中散發(fā)出耀眼的光芒。
Node.js:不只是網(wǎng)站
就在僅僅幾年之前,Node.js初始版本剛剛誕生時(shí)還只是一款谷歌出于嘗試目的、利用Chromium V8打造而成的服務(wù)器端JavaScript引擎;然而時(shí)至今日,它已經(jīng)成為一整套全面開(kāi)花的完整平臺(tái)。PayPal等高流量網(wǎng)站的工程師們?cè)?jīng)撰寫(xiě)出大量經(jīng)驗(yàn)心得,與大家分享Node.js如何令Web框架的創(chuàng)建工作變得更加簡(jiǎn)便易行。
不過(guò)Node.js絕不只是一套Web堆棧——作為一項(xiàng)技術(shù),它在多個(gè)不同層面煥發(fā)出勃勃生機(jī)。我們將通過(guò)今天的文章一同了解利用Node.js打造出的各類(lèi)項(xiàng)目,其中包括服務(wù)器監(jiān)控、流媒體、遠(yuǎn)程控制以及桌面與移動(dòng)應(yīng)用等等。在了解了這么多背景信息后,大家一定也會(huì)發(fā)出這樣的感慨——Node.js的價(jià)值已經(jīng)遠(yuǎn)遠(yuǎn)超出了常見(jiàn)Web服務(wù)器的范疇。
NodeOS
這款由Jacob Groundwater打造的項(xiàng)目在誕生之日起便承載著巨大的野心——希望圍繞Linux核心建立起一套新型環(huán)境。其中Node.js作為“shell”,而Node的mpn則被用于系統(tǒng)包管理器。到目前為止,NodeOS的首個(gè)版本以Docker與Vagrant為創(chuàng)建基礎(chǔ)——好的方面在于這樣能使早期版本在共享、fork以及迭代方面更加便捷;但負(fù)面影響是系統(tǒng)運(yùn)行所涉及的hoops過(guò)多。
不過(guò)總體來(lái)說(shuō),該項(xiàng)目的核心思路仍然頗具吸引力。大家不妨試想一下,Node.js不僅將被用于包管理,而且還負(fù)責(zé)打理腳本、界面以及大部分其它操作系統(tǒng)創(chuàng)建所必需的任務(wù)。
Noduino
希望通過(guò)網(wǎng)頁(yè)控制自己Arduino的硬件技術(shù)人士們有福了,Noduino允許大家經(jīng)由WebSocket或者串連接實(shí)現(xiàn)Arduino訪問(wèn)。該項(xiàng)目目前尚處于起步階段,但驅(qū)動(dòng)主板上的LED模塊、捕捉來(lái)自Arduino的事件(例如按下按鈕)等常見(jiàn)功能都可以正常支持。
Node-WebKit
作為專(zhuān)門(mén)針對(duì)Node.js應(yīng)用程序的運(yùn)行時(shí),Node-WebKit允許大家將應(yīng)用程序打包為精簡(jiǎn)化Chromium副本并將其交付至任何Node.js及Chromium已經(jīng)移植過(guò)的平臺(tái)(目前包括Linux、Mac OS X以及Windows)。打包的過(guò)程可以說(shuō)非常簡(jiǎn)單。我們只需要將Node.js應(yīng)用程序副本進(jìn)行壓縮、再添加一份清單,這就完成了。大家甚至可以通過(guò)Node.js方法及對(duì)象實(shí)現(xiàn)應(yīng)用程序窗口菜單訪問(wèn)與其它平臺(tái)原生操作。
跨平臺(tái)應(yīng)用程序部署從來(lái)不是一件簡(jiǎn)單的工作。如果大家希望能利用Web技術(shù)開(kāi)發(fā)出桌面應(yīng)用程序,那么不妨將Node-WebKit視為其它那些更大、更笨重框架的有益補(bǔ)充。
PDFKit
作為一款針對(duì)Node.js的PDF文檔創(chuàng)建庫(kù),PDFKit允許大家利用一套“HTML 5 canvas類(lèi)API”創(chuàng)建PDF文件,同時(shí)支持矢量圖形創(chuàng)建以及字體嵌入。由于項(xiàng)目尚未徹底成熟,目前不少標(biāo)準(zhǔn)PDF功能(例如文檔安全保護(hù)以及表格創(chuàng)建)仍然處于開(kāi)發(fā)當(dāng)中,不過(guò)文本換行、項(xiàng)目符號(hào)列表、高亮顯示以及注釋信息等功能已經(jīng)正??捎谩P枰嵝汛蠹业氖?,我們最好將PDFKit作為一款從頭開(kāi)始創(chuàng)建PDF文件的工具,而不要將其用于文件轉(zhuǎn)換。如果各位需要對(duì)現(xiàn)有PDF文件進(jìn)行調(diào)整,最好還是使用另一款名為“Scissors”的Node項(xiàng)目。
Log.io
Node.js在快速與Web兩方面具備驚人的優(yōu)勢(shì)——而這兩種特性無(wú)疑是大家最希望在監(jiān)控工具當(dāng)中看到的。作為一款實(shí)時(shí)日志監(jiān)控系統(tǒng),Log.io利用Socket.io庫(kù)直接向大家的瀏覽器發(fā)送活動(dòng)報(bào)告。在這里不存在持久層,受監(jiān)控日志文件中的任何內(nèi)容變動(dòng)都會(huì)立即被轉(zhuǎn)發(fā)給服務(wù)器、然后再傳遞到我們面前。更重要的是,有了第三方處理機(jī)制的輔助,系統(tǒng)只需將格式正確的信息發(fā)送至服務(wù)器監(jiān)聽(tīng)TCP接口即可。
Nodecast或者Leapcast
谷歌的Chromecast還衍生出至少兩款Node.js應(yīng)用程序,它們能夠幫助大家直接將基于移動(dòng)設(shè)備的視頻或者音樂(lè)發(fā)送到PC機(jī)上。只需在PC端運(yùn)行Nodecast或者Leapcast,啟動(dòng)我們的移動(dòng)設(shè)備,選擇一款支持Chromecast的應(yīng)用程序,而后大家即可將移動(dòng)端的內(nèi)容傳輸?shù)诫娔X上。就這兩者而言,Nodecast的復(fù)雜程度要低得多,但其功能也更弱一些。目前它能夠通過(guò)測(cè)試的媒體來(lái)源只有YouTube與谷歌音樂(lè)。請(qǐng)大家別把Nodecast與Nodecast庫(kù)弄混了,后者的作用在于為設(shè)備(例如Chromecast)提供使用撥號(hào)發(fā)現(xiàn)協(xié)議所需要的連接。
Nexe
在眾多看似渺小但卻實(shí)用性極高的Node.js工具當(dāng)中,Nexe正是頗具代表性的一款——它的作用在于為Node.js應(yīng)用創(chuàng)建單獨(dú)存在的可執(zhí)行文件。生成的結(jié)果可以在無(wú)需額外安裝Node.js運(yùn)行時(shí)的前提下直接運(yùn)行,這就幫助非技術(shù)終端用戶(hù)徹底告別了所有與Node.js應(yīng)用程序運(yùn)行存在依賴(lài)關(guān)系的組件。(顯然,如果大家發(fā)布的是一款不涉及圖形用戶(hù)界面的Node.js應(yīng)用,那么Nexe肯定能幫上大忙;不過(guò)對(duì)不起擁有圖形用戶(hù)界面的應(yīng)用,Node-WebKit之類(lèi)的方案才是正確的選擇)。再來(lái)說(shuō)說(shuō)缺點(diǎn):Nexe最大的問(wèn)題在于目前還無(wú)法作用于Windows平臺(tái)(只適用于Linux與Mac OS X),而且它也不支持原生Node.js模塊。
Hyro
在利用Node-WebKit所打造的應(yīng)用程序當(dāng)中,Hyro這款實(shí)時(shí)HTML 5編輯器可謂一枝獨(dú)秀。原始HTML內(nèi)容被顯示在當(dāng)前頁(yè)面的左手邊,而結(jié)果內(nèi)容則被顯示在右手邊。語(yǔ)法高亮功能由CodeMirror提供。Hyro項(xiàng)目的開(kāi)發(fā)者并不打算將其打造成一款成熟的Web IDE,而只是將其塑造為一套專(zhuān)門(mén)針對(duì)HTML或者CSS的輕量級(jí)記事本方案。從這個(gè)角度講,它可以被看作Node.js在適當(dāng)支持應(yīng)用程序卻又不過(guò)度介入方面的典型范例。
Hy0072o
在利用Node-WebKit所打造的應(yīng)用程序當(dāng)中,Hyro這款實(shí)時(shí)HTML 5編輯器可謂一枝獨(dú)秀。原始HTML內(nèi)容被顯示在當(dāng)前頁(yè)面的左手邊,而結(jié)果內(nèi)容則被顯示在右手邊。語(yǔ)法高亮功能由CodeMirror提供。Hyro項(xiàng)目的開(kāi)發(fā)者并不打算將其打造成一款成熟的Web IDE,而只是將其塑造為一套專(zhuān)門(mén)針對(duì)HTML或者CSS的輕量級(jí)記事本方案。從這個(gè)角度講,它可以被看作Node.js在適當(dāng)支持應(yīng)用程序卻又不過(guò)度介入方面的典型范例。
Haroopad
作為另一款將Chromium作為自身UI的Node.js應(yīng)用程序,Haroopad允許大家Markdown類(lèi)型的文本,并將其生成為HTML。編輯與查看在窗口中并排而列并同步滾動(dòng),而且始終保持實(shí)時(shí)更新。文檔也能夠以HTML或者M(jìn)arkdown格式通過(guò)郵件進(jìn)行發(fā)送,通過(guò)這種方式大家可以在完全無(wú)需使用插件的前提下將其發(fā)送至Tumblr或者添加到Evernote當(dāng)中。說(shuō)到這個(gè),我們希望Haroopad的開(kāi)發(fā)人員們能添加一套插件架構(gòu)。像這樣的一款程序存在很大改進(jìn)空間。雖然他們一直在努力拓展多種格式,但目前Haroopad仍然只能支持HTML這一種。
TiddlyWiki5
這也是我個(gè)人最喜愛(ài)的項(xiàng)目。雖然命名顯得不夠簡(jiǎn)潔,但TiddlyWiki的才藝實(shí)力簡(jiǎn)直無(wú)窮無(wú)盡——這是一套維基系統(tǒng),能夠在不連接網(wǎng)絡(luò)或者Web服務(wù)器的情況下通過(guò)單獨(dú)HTML文件或者本地方式運(yùn)行。經(jīng)過(guò)徹底重新設(shè)計(jì)的版本5能夠直接與Node.js相集成,從而實(shí)現(xiàn)大量原本獨(dú)立運(yùn)行模式下根本無(wú)法完成的功能。到發(fā)稿之時(shí),TiddlyWiki 5仍然處于測(cè)試階段,不過(guò)根據(jù)時(shí)間規(guī)劃我們將在今年年底迎來(lái)它的正式版本。
原文鏈接:http://www.infoworld.com/slideshow/131906/beyond-the-web-10-surprising-nodejs-projects-232369#slide1