之前一直使用的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出来的时候才发现里面带一个?

 

2、exec方法的回调函数中,需要对error进行进一步的判断,仅判断error是否为null容易误判,因为实际我比较复制后的文件跟源文件夹大小和文件数量是一致的。

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..
});
 
不然,仅用if(error) {}进行判定, 很容易程序中断,后续函数无法继续运行。我这个是在copy大约35M左右的文件夹内容时遇到的,可能是时间过长导致的,待验证…
 
 
3、使用request模块时,注意需要保存cookie;
比如我先登录OA,然后调用OA的接口,如果不保存cookie那么调用就会失败。而hat就是一个浏览器进程,所以它不存在这个问题。使用下面的代码解决它:
request = request.defaults({jar: true});

 

4、svn相关注意事项

svn需要先update,然后再add,最后才是commit,这三步都是程序在进行处理,但顺序不能乱,不然就game over了。其中如果你所使用的svn服务器是需要添加注释的,在使用程序自动处理时别忘记了-m参数,不然也是提交失败的~ ~,并且你还拿不到出错信息(就一个errCode和信号id还有是否被kill掉的相关信息)

 

5、node-webkit安装xml2json模块还安装不上,没办法改用xml2js了。这个没找到同步方法,先监听它的end方法然后再做处理,比较蛋疼

 

6、使用上传组件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效果是一样的,其它几项相信看到描述也大概知道什么意见了

 

暂时记录这么多,下次再用它开发工具应该不会再遇到这么多坑了…

使用node-webkit实现打包工具的小结的更多相关文章

  1. rollup node.js 打包工具

    最近在做一个提供给浏览器和node同时使用的js的url模板工具类,在用什么打包工具上纠结了一段时间,正好有一天在知乎上看到了关于rollup的介绍,在自己试了试之后,就决定用rollup.js来打包 ...

  2. 细说前端自动化打包工具--webpack

    背景 记得2004年的时候,互联网开发就是做网页,那时也没有前端和后端的区分,有时一个网站就是一些纯静态的html,通过链接组织在一起.用过Dreamweaver的都知道,做网页就像用word编辑文档 ...

  3. 模块化管理工具兼打包工具 webpack

    webpack 是一个[模块化管理工具]兼[打包工具] 是一个工具(和seajs,requirejs管理前端模块的方式是不一样) 在webpack一个文件就是一个模块! seajs,requirejs ...

  4. Android自动打包工具aapt详解

    概念 在Android.mk中有LOCAL_AAPT_FLAGS配置项,在gradle中也有aaptOptions,那么aapt到底是干什么的呢? aapt即Android Asset Packagi ...

  5. Vue(基础七)_webpack打包工具用法(上)

    一.前言 1.webpack原理 二.主要内容 1.webpack原理: (1)官网图:我们的项目有多个js, css文件的时候还需要考虑先引入哪一个后引入哪一个,因为这些js文件是相互依赖的,web ...

  6. 打包工具的核心原理(转自:https://juejin.im/entry/5b223ebd518825748b569bda)

    打包工具就是负责把一些分散的小模块,按照一定的规则整合成一个大模块的工具.与此同时,打包工具也会处理好模块之间的依赖关系,最终这个大模块将可以被运行在合适的平台中. 打包工具会从一个入口文件开始,分析 ...

  7. 原创全新打包工具Parcel零配置VueJS开发脚手架

    parcel-vue 一个基于Parcel打包工具的 VueJS急速开发脚手架解决方案,强烈建议使用node8.0以上 项目地址: https://github.com/w3c-king/p... 初 ...

  8. # webpack 打包工具(vue)

    vue-webpack 打包工具 我的github iSAM2016 不是教程,是自我总结 目录 webpack.base.conf.js webpack.dev.conf.js webpack.pr ...

  9. 打包工具webpack和热加载深入学习

    本次小编呢,为大家带来一篇深入了解打包工具 webpack. 我们今天使用的是 webpack3.8.1版本的,我们学习使用 3.8.1更稳定些,并学习自己如何配置文件,最新版本不需要自己配置文件,但 ...

随机推荐

  1. hdu 5443 (2015长春网赛G题 求区间最值)

    求区间最值,数据范围也很小,因为只会线段树,所以套了线段树模板=.= Sample Input3110011 151 2 3 4 551 21 32 43 43 531 999999 141 11 2 ...

  2. 关于日期转换的知识点(SimpleDateFormat)

    这篇文章不是系统的学习,是阅读一些文章,然后总结汇总的. 一:SimpleDateFormat类 1.介绍 SimpleDateFormat 是一个以国别敏感的方式格式化和分析数据的具体类. 它允许格 ...

  3. rabbitmq学习(九) —— 关于消息队列的选型

    转自http://cmsblogs.com/?p=3846 在IM这种讲究高并发.高消息吞吐的互联网场景下,MQ消息中间件是个很重要的基础设施,它在IM系统的服务端架构中担当消息中转.消息削峰.消息交 ...

  4. Python之路,入门学习(一)

    一.变量\字符编码 声明变量 #_*_coding:utf-8_*_ name = "Alex Li" 上述代码声明了一个变量,变量名为: name,变量name的值为:" ...

  5. eclipse launching workspace太慢的解决方法

    这几天eclipse调试Android项目的时候反应超慢,右下显示launching workspace就不怎么动了,今天终于卡的受不了了,在网上搜了写方法,设置了下总算好点了,现在把方法贴出来,跟大 ...

  6. DrawFrameControl 绘制标准控件

    BOOL DrawFrameControl( HDC hDC,        // 设备环境句柄    LPRECT lpRect,  // 矩形区域    UINT nType,     // 控件 ...

  7. 马士兵hadoop第三课:java开发hdfs

    马士兵hadoop第一课:虚拟机搭建和安装hadoop及启动 马士兵hadoop第二课:hdfs集群集中管理和hadoop文件操作 马士兵hadoop第三课:java开发hdfs 马士兵hadoop第 ...

  8. 【DevOps】谁说大象不能跳舞?

    作者:范军 (Frank Fan) 新浪微博:@frankfan7   微信:frankfan7 很多企业,尤其是大企业在产品开发和运维上存在着一些普遍问题,比如开发周期长.人员合作程度不高.开发和运 ...

  9. NSLineBreakMode 的区别

    typedef enum {     UILineBreakModeWordWrap = 0,     UILineBreakModeCharacterWrap,     UILineBreakMod ...

  10. C# 地磅串口编程

    C# 地磅串口编程 http://www.cnblogs.com/cancer_xu/archive/2012/09/14/WeighBridge-Com.html http://www.cnblog ...