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帮助之CSS尺寸(五)outerHeight、outerWidth
Nov 14 Javascript
js给onclick赋值传参数的两种方法
Nov 25 Javascript
JS网页图片按比例自适应缩放实现方法
Jan 15 Javascript
页面加载完成后再执行JS的jquery写法以及区别说明
Feb 22 Javascript
JavaScript中的数组特性介绍
Dec 30 Javascript
JQuery核心函数是什么及使用方法介绍
May 03 Javascript
JavaScript提高网站性能优化的建议(二)
Jul 24 Javascript
浅析ES6的八进制与二进制整数字面量
Aug 30 Javascript
JS检测window.open打开的窗口是否关闭
Jun 25 Javascript
VUE2.0+ElementUI2.0表格el-table实现表头扩展el-tooltip
Nov 30 Javascript
layui(1.0.9)文件上传upload,前后端的实例代码
Sep 26 Javascript
vue使用video插件vue-video-player的示例
Oct 03 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的性能
2013/10/30 PHP
php中url函数介绍及使用示例
2014/02/13 PHP
php gd等比例缩放压缩图片函数
2016/06/12 PHP
PHP微信API接口类
2016/08/22 PHP
php连接MSsql server的五种方法总结
2018/03/04 PHP
php微信公众号开发之现金红包
2018/04/16 PHP
PHP程序守护进程化实现方法详解
2020/07/16 PHP
js用正则表达式来验证表单(比较齐全的资源)
2013/11/17 Javascript
IE与FireFox的JavaScript兼容问题解决办法
2013/12/31 Javascript
JavaScript实现两个Table固定表头根据页面大小自行调整
2014/01/03 Javascript
JavaScript实现找出数组中最长的连续数字序列
2014/09/03 Javascript
js实现touch移动触屏滑动事件
2015/04/17 Javascript
AngularJS进行性能调优的7个建议
2015/12/28 Javascript
asp.net+jquery.form实现图片异步上传的方法(附jquery.form.js下载)
2016/05/05 Javascript
jQuery图片渐变特效的简单实现
2016/06/25 Javascript
浅谈js多维数组和hash数组定义和使用
2016/07/27 Javascript
简单分析javascript中的函数
2016/09/10 Javascript
解析JavaScript数组方法reduce
2016/12/12 Javascript
完美解决JS文件页面加载时的阻塞问题
2016/12/18 Javascript
Bootstrap列表组学习使用
2017/02/09 Javascript
javascript中函数的写法实例代码详解
2018/10/28 Javascript
Python实现的一个找零钱的小程序代码分享
2014/08/25 Python
基于Python实现对PDF文件的OCR识别
2016/08/05 Python
python 3.6.2 安装配置方法图文教程
2018/09/18 Python
python中dict使用方法详解
2019/07/17 Python
django admin组件使用方法详解
2019/07/19 Python
Python一键安装全部依赖包的方法
2019/08/12 Python
python模式 工厂模式原理及实例详解
2020/02/11 Python
英国的知名精品百货公司:House of Fraser(福来德)
2016/08/14 全球购物
国际领先的在线时尚服装和配饰店:DressLily
2019/03/03 全球购物
初二物理教学反思
2014/01/29 职场文书
公司会计岗位职责
2014/02/13 职场文书
行政管理毕业生自荐信
2014/02/24 职场文书
预备党员自我评价范文
2015/03/04 职场文书
党员转正申请报告
2015/05/15 职场文书
三年级作文之小小梦想
2019/12/06 职场文书