以前一直使用的hta在開發工具,最近轉到node-webkit上了,對比一下兩者的優劣勢。hta單個文件,體積較小,但有兼容性的問題(兼容ie六、七、8就好了,也還好),node-webkit使用webkit內核,能夠直接使用html五、css3的相關特性,好比圓角、漸變等,比較方便,界面炫一些,但在windows下最大的問題就是體積較大。css
還有就是node-webkit在windows下進行資源的copy時,容易報error但它是一個空的Error對象,裏面並無errCode和它的信號相關信息,hta沒有這個問題很穩定。不過讀寫文件和網絡請求處理上面來說,仍是node.js方便,一行代碼就能解決戰鬥,因此儘管體積偏大,我仍是傾向於node-webkit進行開發。html
下面來總結一下遇到的坑:html5
一、編碼問題node
一個是使用child_process調用dos相關的命令時,獲得的輸出有中文所有就亂碼了,例如調用devenv.com編譯項目,除英文字符外其它幾乎都是亂碼,很很差判斷到底編譯項目成功仍是失敗了css3
二是,使用Notepad2默認建立的txt文件,它的編碼竟然是utf8+,帶BOM的,太坑了,獲取文件內容時它的頭部竟然帶一個「?」,結果程序一跑,alert也沒發現啥問題,ctrl + c、ctrl + v出來的時候才發現裏面帶一個?web
二、exec方法的回調函數中,須要對error進行進一步的判斷,僅判斷error是否爲null容易誤判,由於實際我比較複製後的文件跟源文件夾大小和文件數量是一致的。json
process.exec(command_str, function(error, stdout, stderr) {
console.log("copy PALACE_CARD_M_RES error : ", error);
if (error && error.code) {//code、signal
showMessage("文件複製失敗," + JSON.stringify(error));
return ;
}
showMessage("PALACE_CARD_M_RES文件夾複製成功");
//todo..
});
request = request.defaults({jar: true});
四、svn相關注意事項windows
svn須要先update,而後再add,最後纔是commit,這三步都是程序在進行處理,但順序不能亂,否則就game over了。其中若是你所使用的svn服務器是須要添加註釋的,在使用程序自動處理時別忘記了-m參數,否則也是提交失敗的~ ~,而且你還拿不到出錯信息(就一個errCode和信號id還有是否被kill掉的相關信息)瀏覽器
五、node-webkit安裝xml2json模塊還安裝不上,沒辦法改用xml2js了。這個沒找到同步方法,先監聽它的end方法而後再作處理,比較蛋疼服務器
六、使用上傳組件input file時,須要注意它的屬性,根據本身的須要使用
<input type="file" multiple />
<input type="file" accept=".doc,.docx,.xml,application/msword">
<input type="file" webkitdirectory />
<input type="file" nwdirectory />
<input type="file" nwsaveas />
<input type="file" nwsaveas="filename.txt" />
其中ebkitdirectory跟nwdirectory效果是同樣的,其它幾項相信看到描述也大概知道什麼意見了
暫時記錄這麼多,下次再用它開發工具應該不會再遇到這麼多坑了…