天天看點

使用node-webkit實作打包工具的小結

之前一直使用的hta在開發工具,最近轉到node-webkit上了,對比一下二者的優劣勢。hta單個檔案,體積較小,但有相容性的問題(相容ie6、7、8就行了,也還好),node-webkit使用webkit核心,可以直接使用html5、css3的相關特性,比如圓角、漸變等,比較友善,界面炫一些,但在windows下最大的問題就是體積較大。

還有就是node-webkit在windows下進行資源的copy時,容易報error但它是一個空的Error對象,裡面并沒有errCode和它的信号相關資訊,hta沒有這個問題很穩定。不過讀寫檔案和網絡請求處理上面來講,還是node.js友善,一行代碼就能解決戰鬥,是以盡管體積偏大,我還是傾向于node-webkit進行開發。

下面來總結一下遇到的坑:

1、編碼問題

一個是使用child_process調用dos相關的指令時,得到的輸出有中文全部就亂碼了,例如調用devenv.com編譯項目,除英文字元外其它幾乎都是亂碼,很不好判斷到底編譯項目成功還是失敗了

二是,使用Notepad2預設建立的txt檔案,它的編碼居然是utf8+,帶BOM的,太坑了,擷取檔案内容時它的頭部居然帶一個“?”,結果程式一跑,alert也沒發現啥問題,ctrl + c、ctrl + v出來的時候才發現裡面帶一個?

使用node-webkit實作打包工具的小結

2、exec方法的回調函數中,需要對error進行進一步的判斷,僅判斷error是否為null容易誤判,因為實際我比較複制後的檔案跟源檔案夾大小和檔案數量是一緻的。

不然,僅用if(error) {}進行判定, 很容易程式中斷,後續函數無法繼續運作。我這個是在copy大約35M左右的檔案夾内容時遇到的,可能是時間過長導緻的,待驗證…

3、使用request子產品時,注意需要儲存cookie;

比如我先登入OA,然後調用OA的接口,如果不儲存cookie那麼調用就會失敗。而hat就是一個浏覽器程序,是以它不存在這個問題。使用下面的代碼解決它:

4、svn相關注意事項

svn需要先update,然後再add,最後才是commit,這三步都是程式在進行處理,但順序不能亂,不然就game over了。其中如果你所使用的svn伺服器是需要添加注釋的,在使用程式自動處理時别忘記了-m參數,不然也是送出失敗的~ ~,并且你還拿不到出錯資訊(就一個errCode和信号id還有是否被kill掉的相關資訊)

5、node-webkit安裝xml2json子產品還安裝不上,沒辦法改用xml2js了。這個沒找到同步方法,先監聽它的end方法然後再做處理,比較蛋疼

6、使用上傳元件input file時,需要注意它的屬性,根據自己的需要使用

其中ebkitdirectory跟nwdirectory效果是一樣的,其它幾項相信看到描述也大概知道什麼意見了

暫時記錄這麼多,下次再用它開發工具應該不會再遇到這麼多坑了…

繼續閱讀