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

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..
});
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实现打包工具的小结的更多相关文章
- rollup node.js 打包工具
最近在做一个提供给浏览器和node同时使用的js的url模板工具类,在用什么打包工具上纠结了一段时间,正好有一天在知乎上看到了关于rollup的介绍,在自己试了试之后,就决定用rollup.js来打包 ...
- 细说前端自动化打包工具--webpack
背景 记得2004年的时候,互联网开发就是做网页,那时也没有前端和后端的区分,有时一个网站就是一些纯静态的html,通过链接组织在一起.用过Dreamweaver的都知道,做网页就像用word编辑文档 ...
- 模块化管理工具兼打包工具 webpack
webpack 是一个[模块化管理工具]兼[打包工具] 是一个工具(和seajs,requirejs管理前端模块的方式是不一样) 在webpack一个文件就是一个模块! seajs,requirejs ...
- Android自动打包工具aapt详解
概念 在Android.mk中有LOCAL_AAPT_FLAGS配置项,在gradle中也有aaptOptions,那么aapt到底是干什么的呢? aapt即Android Asset Packagi ...
- Vue(基础七)_webpack打包工具用法(上)
一.前言 1.webpack原理 二.主要内容 1.webpack原理: (1)官网图:我们的项目有多个js, css文件的时候还需要考虑先引入哪一个后引入哪一个,因为这些js文件是相互依赖的,web ...
- 打包工具的核心原理(转自:https://juejin.im/entry/5b223ebd518825748b569bda)
打包工具就是负责把一些分散的小模块,按照一定的规则整合成一个大模块的工具.与此同时,打包工具也会处理好模块之间的依赖关系,最终这个大模块将可以被运行在合适的平台中. 打包工具会从一个入口文件开始,分析 ...
- 原创全新打包工具Parcel零配置VueJS开发脚手架
parcel-vue 一个基于Parcel打包工具的 VueJS急速开发脚手架解决方案,强烈建议使用node8.0以上 项目地址: https://github.com/w3c-king/p... 初 ...
- # webpack 打包工具(vue)
vue-webpack 打包工具 我的github iSAM2016 不是教程,是自我总结 目录 webpack.base.conf.js webpack.dev.conf.js webpack.pr ...
- 打包工具webpack和热加载深入学习
本次小编呢,为大家带来一篇深入了解打包工具 webpack. 我们今天使用的是 webpack3.8.1版本的,我们学习使用 3.8.1更稳定些,并学习自己如何配置文件,最新版本不需要自己配置文件,但 ...
随机推荐
- NTP服务放大攻击的解决办法
什么是NTP服务? 网络时间协议NTP(Network Time Protocol)是用于互联网中时间同步的标准互联网协议.NTP服务器通过NTP服务向网络上的计算机或其他设备提供标准的授时服务,以保 ...
- 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/ ...
- 【LOJ】#2181. 「SDOI2015」排序
题解 还以为是啥毒瘤题 然后是个搜索题 复杂度算起来挺大 然后跑起来就连0.1ms不到= = 就是从大到小进行每种操作,搜出来一种操作就乘上一个操作数的阶乘就行 如果现在进行的操作操作\(2^i\)那 ...
- [java] 数据处理
背景: 有一组30天内的温度与时间的数据,格式如下: 详细情况:共30天的8k+项数据,每天内有260+项,每个记录温度的时间精确到秒 任务就是想根据这样的数据找到规律,来完成给定具体的时间预测出此时 ...
- PocketMoney
PocketMoney( Money.pas/cpp/c)Description学校为了表彰tsoi的优异成绩, m个领导每人都决定给tsoi的一些人发一些小红包.于是n个Tsoier排成一排,等待着 ...
- css3 matrix 2D矩阵和canvas transform 2D矩阵
一看到“2D矩阵”这个高大上的名词,有的同学可能会有种畏惧感,“矩阵”,看起来好高深的样子,我还是看点简单的吧.其实本文就很简单,你只需要有一点点css3 transform的基础就好. 没有前戏,直 ...
- C# Activex调用USB摄像头--附带源码
前言 最近在整理一些自己写过的东西,也算是重新熟悉一下并且优化一下吧. 需求:获取本地USB摄像头视频显示,并且获取图片数据给底层做人脸识别. 记得当时直接采用H5已经做好了,调试好了....结果放上 ...
- html (第四本书第五章参考)
上机1 <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8 ...
- Django 性能测试
唐纳德·克努特(Donald Knuth)曾经说过:“不成熟的优化方案是万恶之源.”然而,任何一个承受高负载的成熟项目都不可避免地需要进行优化.在本文中,我想谈谈优化Web项目代码的五种常用方法.虽然 ...
- 【BZOJ-4184 】 Shallot 线段树按时间分治 + 线性基
4184: shallot Time Limit: 30 Sec Memory Limit: 128 MBSubmit: 356 Solved: 180[Submit][Status][Discu ...