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 相关文章推荐
javascript  Error 对象 错误处理
May 18 Javascript
读jQuery之十 事件模块概述
Jun 27 Javascript
jQuery图片轮播的具体实现
Sep 11 Javascript
JS将光标聚焦在文本最后的实现代码
Mar 28 Javascript
jQuery $.extend()用法总结
Jun 15 Javascript
jquery实现模拟百分比进度条渐变效果代码
Oct 29 Javascript
浅析JavaScript中的变量复制、参数传递和作用域链
Jan 13 Javascript
浅析Ajax语法
Dec 05 Javascript
微信小程序实现跑马灯效果完整代码(附效果图)
May 30 Javascript
浅谈HTTP 缓存的那些事儿
Oct 17 Javascript
微信小程序实现联动选择器
Feb 15 Javascript
微信小程序导航栏跟随滑动效果的实现代码
May 14 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+mysql事务rollback&commit示例
2010/02/08 PHP
php类中private属性继承问题分析
2012/11/01 PHP
使用Sphinx对索引进行搜索
2013/06/25 PHP
javascript实现的像java、c#之类的sleep暂停的函数代码
2010/03/04 Javascript
在多个页面使用同一个HTML片段《续》
2011/03/04 Javascript
JavaScript版DateAdd和DateDiff函数代码
2012/03/01 Javascript
Jquery为a标签的href赋值实现代码
2013/05/03 Javascript
window.location.href中url中数据量太大时的解决方法
2013/12/23 Javascript
鼠标左键单击冲突的问题解决方法(防止冒泡)
2014/05/14 Javascript
JavaScript实现自动对页面上敏感词进行屏蔽的方法
2015/07/27 Javascript
AngularJS 最常用的功能汇总
2016/02/17 Javascript
js+flash实现的5图变换效果广告代码(附演示与demo源码下载)
2016/04/01 Javascript
js正则表达式replace替换变量方法
2016/05/21 Javascript
Angularjs使用指令做表单校验的方法
2017/03/31 Javascript
详解Vue 方法与事件处理器
2017/06/20 Javascript
基于Swiper实现移动端页面图片轮播效果
2017/12/28 Javascript
详解通过源码解析Node.js中cluster模块的主要功能实现
2018/05/16 Javascript
jQuery实现简单复制json对象和json对象集合操作示例
2018/07/09 jQuery
VueJs里利用CryptoJs实现加密及解密的方法示例
2019/04/29 Javascript
微信小程序实现点击卡片 翻转效果
2019/09/04 Javascript
python冒泡排序算法的实现代码
2013/11/21 Python
编写自定义的Django模板加载器的简单示例
2015/07/21 Python
Python实现网络端口转发和重定向的方法
2016/09/19 Python
TensorFlow 实战之实现卷积神经网络的实例讲解
2018/02/26 Python
Python实现最常见加密方式详解
2019/07/13 Python
Python Collatz序列实现过程解析
2019/10/12 Python
解决Keras的自定义lambda层去reshape张量时model保存出错问题
2020/07/01 Python
基于python的opencv图像处理实现对斑马线的检测示例
2020/11/29 Python
Book Depository亚太地区:一家领先的国际图书零售商
2019/05/05 全球购物
阿里巴巴美国:Alibaba美国
2019/11/24 全球购物
酒店管理毕业生自荐信
2013/10/24 职场文书
学校勤俭节约倡议书
2015/04/29 职场文书
2015年小学一年级班主任工作总结
2015/05/21 职场文书
小学感恩主题班会
2015/08/12 职场文书
八年级数学教学反思
2016/02/17 职场文书
详解Mysql 函数调用优化
2021/04/07 MySQL