天天看點

Nw.js開發

注:文章暫不适合初學者,初學者請繞行至js學習。有基礎者請繼續往下看。

通過一個多月的研究學習node.js,終于開發了一款新的系統模式。

這是一個終端系統,整個開發過程拿出來給大家分享。

先做一個系統的簡要說明吧:

該産品采取軟硬結合的手段,封裝常用硬體裝置,支援實時列印和預約列印兩種模式。

簡單說就是使用者通過自己的PC的浏覽器,登入系統,進行預約和填寫資訊,然後在終端進行登入和列印操作。當然也可以不預約直接去終端機列印。

前期:

由于時間緊迫,在短時間内要有一個示範系統給客戶看效果,前期開發采用了B/S架構,終端機使用C++做了個IE外殼。

問題:

         使用IE調用OCX的方式去調用硬體,并且使用IE外殼包裝,帶來了系統不穩定的問題。頁面和硬體的調用都顯得很遲鈍。系統比較脆弱。

解決方法:

         打算使用nw.js寫一個新的C/S架構的exe。頁面使用靜态的處理。但是周邊沒有一個會的,沒辦法,隻能重頭學起,邊學邊用了。

那就先搭開發環境吧;

搭環境:

1.    下載下傳node.js。官方網站:https://nodejs.org/en/  

這裡做個簡要說明吧,很明顯頁面上有兩個最新版本。是不是有點蒙圈?下面是我引用廖老師(廖雪峰)的微網誌裡的一段話:

    從本章開始,我們就正式開啟JavaScript的後端開發之旅。

Node.js是目前非常火熱的技術,但是它的誕生經曆卻很奇特。

衆所周知,在Netscape設計出JavaScript後的短短幾個月,JavaScript事實上已經是前端開發的唯一标準。

後來,微軟通過IE擊敗了Netscape後一統桌面,結果幾年時間,浏覽器毫無進步。(2001年推出的古老的IE 6到今天仍然有人在使用!)

沒有競争就沒有發展。微軟認為IE6浏覽器已經非常完善,幾乎沒有可改進之處,然後解散了IE6開發團隊!而Google卻認為支援現代Web應用的新一代浏覽器才剛剛起步,尤其是浏覽器負責運作JavaScript的引擎性能還可提升10倍。

先是Mozilla借助已壯烈犧牲的Netscape遺産在2002年推出了Firefox浏覽器,緊接着Apple于2003年在開源的KHTML浏覽器的基礎上推出了WebKit核心的Safari浏覽器,不過僅限于Mac平台。

随後,Google也開始建立自家的浏覽器。他們也看中了WebKit核心,于是基于WebKit核心推出了Chrome浏覽器。

Chrome浏覽器是跨Windows和Mac平台的,并且,Google認為要運作現代Web應用,浏覽器必須有一個性能非常強勁的JavaScript引擎,于是Google自己開發了一個高性能JavaScript引擎,名字叫V8,以BSD許可證開源。

現代浏覽器大戰讓微軟的IE浏覽器遠遠地落後了,因為他們解散了最有經驗、戰鬥力最強的浏覽器團隊!回過頭再追趕卻發現,支援HTML5的WebKit已經成為手機端的标準了,IE浏覽器從此與主流移動端裝置絕緣。

浏覽器大戰和Node有何關系?

話說有個叫Ryan Dahl的歪果仁,他的工作是用C/C++寫高性能Web服務。對于高性能,異步IO、事件驅動是基本原則,但是用C/C++寫就太痛苦了。于是這位仁兄開始設想用進階語言開發Web服務。他評估了很多種進階語言,發現很多語言雖然同時提供了同步IO和異步IO,但是開發人員一旦用了同步IO,他們就再也懶得寫異步IO了,是以,最終,Ryan瞄向了JavaScript。

因為JavaScript是單線程執行,根本不能進行同步IO操作,是以,JavaScript的這一“缺陷”導緻了它隻能使用異步IO。

標明了開發語言,還要有運作時引擎。這位仁兄曾考慮過自己寫一個,不過明智地放棄了,因為V8就是開源的JavaScript引擎。讓Google投資去優化V8,咱隻負責改造一下拿來用,還不用付錢,這個買賣很劃算。

于是在2009年,Ryan正式推出了基于JavaScript語言和V8引擎的開源Web伺服器項目,命名為Node.js。雖然名字很土,但是,Node第一次把JavaScript帶入到後端伺服器開發,加上世界上已經有無數的JavaScript開發人員,是以Node一下子就火了起來。

在Node上運作的JavaScript相比其他後端開發語言有何優勢?

最大的優勢是借助JavaScript天生的事件驅動機制加V8高性能引擎,使編寫高性能Web服務輕而易舉。

其次,JavaScript語言本身是完善的函數式語言,在前端開發時,開發人員往往寫得比較随意,讓人感覺JavaScript就是個“玩具語言”。但是,在Node環境下,通過子產品化的JavaScript代碼,加上函數式程式設計,并且無需考慮浏覽器相容性問題,直接使用最新的ECMAScript6标準,可以完全滿足工程上的需求。

我還聽說過io.js,這又是什麼鬼?

因為Node.js是開源項目,雖然由社群推動,但幕後一直由Joyent公司資助。由于一群開發者對Joyent公司的政策不滿,于2014年從Node.js項目fork出了io.js項目,決定單獨發展,但兩者實際上是相容的。

然而中國有句古話,叫做“分久必合,合久必分”。分家後沒多久,Joyent公司表示要和解,于是,io.js項目又決定回歸Node.js。

具體做法是将來io.js将首先添加新的特性,如果大家測試用得爽,就把新特性加入Node.js。io.js是“嘗鮮版”,而Node.js是線上穩定版,相當于Fedora Linux和RHEL的關系。

本章教程的所有代碼都在Node.js上調試通過。如果你要嘗試io.js也是可以的,不過兩者如果遇到一些差別請自行檢視io.js的文檔。

廖老師解釋的已經很清楚了。這裡的兩個版本,一個是嘗鮮版,一個是穩定版。我們一般都還是使用穩定版的。

未完,待續!!!

繼續閱讀