之前一直使用的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. NTP服务放大攻击的解决办法

    什么是NTP服务? 网络时间协议NTP(Network Time Protocol)是用于互联网中时间同步的标准互联网协议.NTP服务器通过NTP服务向网络上的计算机或其他设备提供标准的授时服务,以保 ...

  2. Top 10 Best Free Netflow Analyzers and Collectors for Windows

    https://www.pcwdld.com/best-free-netflow-analyzers-and-collectors-for-windows https://blog.csdn.net/ ...

  3. 【LOJ】#2181. 「SDOI2015」排序

    题解 还以为是啥毒瘤题 然后是个搜索题 复杂度算起来挺大 然后跑起来就连0.1ms不到= = 就是从大到小进行每种操作,搜出来一种操作就乘上一个操作数的阶乘就行 如果现在进行的操作操作\(2^i\)那 ...

  4. [java] 数据处理

    背景: 有一组30天内的温度与时间的数据,格式如下: 详细情况:共30天的8k+项数据,每天内有260+项,每个记录温度的时间精确到秒 任务就是想根据这样的数据找到规律,来完成给定具体的时间预测出此时 ...

  5. PocketMoney

    PocketMoney( Money.pas/cpp/c)Description学校为了表彰tsoi的优异成绩, m个领导每人都决定给tsoi的一些人发一些小红包.于是n个Tsoier排成一排,等待着 ...

  6. css3 matrix 2D矩阵和canvas transform 2D矩阵

    一看到“2D矩阵”这个高大上的名词,有的同学可能会有种畏惧感,“矩阵”,看起来好高深的样子,我还是看点简单的吧.其实本文就很简单,你只需要有一点点css3 transform的基础就好. 没有前戏,直 ...

  7. C# Activex调用USB摄像头--附带源码

    前言 最近在整理一些自己写过的东西,也算是重新熟悉一下并且优化一下吧. 需求:获取本地USB摄像头视频显示,并且获取图片数据给底层做人脸识别. 记得当时直接采用H5已经做好了,调试好了....结果放上 ...

  8. html (第四本书第五章参考)

    上机1 <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8 ...

  9. Django 性能测试

    唐纳德·克努特(Donald Knuth)曾经说过:“不成熟的优化方案是万恶之源.”然而,任何一个承受高负载的成熟项目都不可避免地需要进行优化.在本文中,我想谈谈优化Web项目代码的五种常用方法.虽然 ...

  10. 【BZOJ-4184 】 Shallot 线段树按时间分治 + 线性基

    4184: shallot Time Limit: 30 Sec  Memory Limit: 128 MBSubmit: 356  Solved: 180[Submit][Status][Discu ...