Node.js实现JS文件合并小工具


Posted in Javascript onFebruary 02, 2016

临近春节,项目结束了,没事情做,于是就想学学node.js,之前写了一个是为了实验室项目的需要,用c#写了个js代码压缩合并的小插件,后来想到可以用node重构,于是就练练手吧,下面小编直接给大家上代码了。

代码如下所示:

/*符合CommonJs规范*/
var writePath = 'min.js',/*默认输出到本目录min.js文件里*/
fs = require('fs'),
r1 = /^(.+)$/mg,/*分行*/
r2 = /\s{2,}/g,/*去空格*/
r3 = /([^\\])\/\/.*/g,/*去行注释*/
r4 = /\/\*.*?\*\//g,/*去块注释*/
str = '';
module.exports.run = function(input){
input.forEach(function(item){
/*合并对顺序有需求,所以同步读取文件*/
var data = fs.readFileSync(item, 'utf8'),
lines = data.match(r1);/*行数组*/
/*拼成一串*/
lines.forEach(function(item){
item = item.replace(r3, function($1, $2){return $2;});
str = str + item;
});
});
str = str.replace(r2,' ').replace(r4, ''); 
/*异步写入到目标文件*/
fs.appendFile(writePath, str, {encoding: 'utf8'}, function(err){
if(err) {throw err};
console.log('complete........');
});
};

内容虽少,不过还是想借此适应一下commomJS的模块化编程,所以就分出上面这个模块了^_^,文件名:compress.js。

下面是引用它的代码:

var a = require('./compress.js');/*加载compress模块 ‘./'表示相同目录下查找本地文件*/
var input = process.argv;/*获取控制台输入数组(process引用当前进程)*/
a.run(input.slice(2)/*忽略前数组前两个*/);

文件名:run.js

控制台运行:

$ node run a.js b.js c.js....

即可把a.js b.js c.js (相对路径,也可使用绝对路径,路径定位和其他语言相似)压缩到默认的min.js里了。

当然,这个压缩还不够完善,空格去的不够完全,也没有基于流(还好压缩的JS文件都不大^_^),和专业的压缩插件如:uglify.js没法比?(???)?不过练练手还是可以的......

Javascript 相关文章推荐
jQuery Tools tooltip使用说明
Jul 14 Javascript
ExtJS如何设置与获取radio控件的选取状态
Jan 22 Javascript
Angularjs编写KindEditor,UEidtor,jQuery指令
Jan 28 Javascript
完美实现bootstrap分页查询
Dec 09 Javascript
node.js(express)中使用Jcrop进行图片剪切上传功能
Apr 21 Javascript
讲解vue-router之什么是编程式路由
May 28 Javascript
jQuery实现table表格checkbox全选的方法分析
Jul 04 jQuery
vue+axios 前端实现的常用拦截的代码示例
Aug 23 Javascript
Javascript之高级数组API的使用实例
Mar 08 Javascript
Vue+Element实现动态生成新表单并添加验证功能
May 23 Javascript
小程序根据手机机型设置自定义底部导航距离
Jun 04 Javascript
vue实现图片上传到后台
Jun 29 Javascript
体验jQuery和AngularJS的不同点及AngularJS的迷人之处
Feb 02 #Javascript
JavaScript通过代码调用Flash显示的方法
Feb 02 #Javascript
AngularJS中$interval的用法详解
Feb 02 #Javascript
AngularJS中处理多个promise的方式
Feb 02 #Javascript
AngularJS数据源的多种获取方式汇总
Feb 02 #Javascript
多种JQuery循环滚动文字图片效果代码
Jun 23 #Javascript
三种AngularJS中获取数据源的方式
Feb 02 #Javascript
You might like
PHP 伪静态隐藏传递参数名的四种方法
2010/02/22 PHP
谈谈从phpinfo中能获取哪些值得注意的信息
2017/03/28 PHP
PHP实现负载均衡下的session共用功能
2018/04/17 PHP
PHP与Web页面的交互示例详解一
2020/08/04 PHP
jQuery 1.0.4 - New Wave Javascript(js源文件)
2007/01/15 Javascript
javascript 硬盘序列号+其它硬件信息
2008/12/23 Javascript
jquery text()要注意啦
2009/10/30 Javascript
javascript实现3D切换焦点图
2015/10/16 Javascript
javascript之Array 数组对象详解
2016/06/07 Javascript
利用Angularjs和Bootstrap前端开发案例实战
2016/08/27 Javascript
JavaScript正则替换HTML标签功能示例
2017/03/02 Javascript
js拖动滑块和点击水波纹效果实例代码
2018/10/16 Javascript
python实现划词翻译
2020/04/23 Python
Python简单格式化时间的方法【strftime函数】
2016/09/18 Python
Python表示矩阵的方法分析
2017/05/26 Python
Python列表解析配合if else的方法
2018/06/23 Python
解决Keras 中加入lambda层无法正常载入模型问题
2020/06/16 Python
python中format函数如何使用
2020/06/22 Python
Python中免验证跳转到内容页的实例代码
2020/10/23 Python
法国综合购物网站:RueDuCommerce
2016/09/12 全球购物
欧洲顶级体育电子商务网站:SportsShoes.com
2018/03/27 全球购物
英国在线女鞋目的地:SIMMI
2018/12/27 全球购物
Ellesse英国官网:意大利高级运动品牌
2019/07/23 全球购物
北京鼎普科技股份有限公司软件测试面试题
2012/04/07 面试题
合作协议书怎么写
2014/04/18 职场文书
心理健康日活动总结
2014/05/08 职场文书
学校节能减排倡议书
2014/05/16 职场文书
爱心捐助倡议书
2014/05/19 职场文书
公民授权委托书
2014/10/15 职场文书
学习十八届四中全会精神思想汇报
2014/10/23 职场文书
2014离婚协议书范文(3篇)
2014/11/29 职场文书
介绍信的格式
2015/01/30 职场文书
公司捐书倡议书
2015/04/27 职场文书
催款函范文
2015/06/24 职场文书
小学生法制教育心得体会
2016/01/14 职场文书
nginx搭建图片服务器的过程详解(root和alias的区别)
2021/03/31 Servers