使用node.js实现对javascript代码合并,压缩

综述:实现多个js文件合并,压缩,以达到性能优化的目的,以件量预测页面为例,提高约40%加载速度

 1.合并功能代码

var fs=require('fs');
var fileder="F:/eos-ops/ops-weber/webolder/WebRoot";//需要监听的文件路径
fs.readdir(fileder,function (ev,file) { //不需要判断是否有内容
    //1.只有有一个文件发生了变化,我们就需要对这个文件夹下的文件进行读取,然后合并
    fs.readdir(fileder,function (err,dataList) {
        var arr=[];
        var  js=[      
            {path:"/html/common/tmpres/js/EventEmitter.min.js"}, //自定义事件监听库 
             (https://github.com/Olical/EventEmitter)
            {path:"/html/common/tmpres/js/moment.js"}, //时间转换插件
            {path:"/html/common/tmpres/js/daterangepicker.js"}, // 日期选择器插件
            {path:"/html/EOS_OPS_PROJECT/pickerDateRange/js/monthPicker.js"},  
        ];

    js.forEach(function (f) {//回调函数中的f对应每一个文件名
        var info=fs.statSync(fileder+f.path);//fs.stat() 检查一个文件是否存在
        if(info.mode==33206){
            arr.push(fileder+f.path);
        }
    });
        //2.读取数组中的文件并合并
        var content='';
        arr.forEach(function (f) {
            console.log(f);
            var c= fs.readFileSync(f);
             content+=c.toString()+'\n';
        });
        fs.writeFile('./output/out2.js',content)  //将合并后的内容生成到指定位置
    })
});

2.合并代码并实现压缩代码

var fs  = require('fs');
var jsp = require("./uglify-js").parser;
var pro = require("./uglify-js").uglify;
// 批量读取文件,压缩之
function buildOne(fileIn, fileOut) {
    if (fileIn.length > 0) {
        var finalCode = [];
        var origCode = '';
        var ast = '';
        for (var i = 0,len = fileIn.length; i < len; i++) {
            origCode = fs.readFileSync(fileIn[i], 'utf8');
	        ast = jsp.parse(origCode); 
		    ast = pro.ast_mangle(ast); 
		    ast = pro.ast_squeeze(ast);
            finalCode.push(pro.gen_code(ast), ';');
        };
    }
    fs.writeFileSync(fileOut,finalCode.join(''),'utf8');
}
//压缩首页js
var documentationArrOut=[
             "F:/eos-ops-core-01381347/ops-weber/webolder/WebRoot/html/common/tmpres/js/EventEmitter.min.js", //自定义事件监听库(https://github.com/Olical/EventEmitter)
             "F:/eos-ops-core-01381347/ops-weber/webolder/WebRoot/html/common/tmpres/js/moment.js", //时间转换插件
             "F:/eos-ops-core-01381347/ops-weber/webolder/WebRoot/html/common/tmpres/js/daterangepicker.js", // 日期选择器插件
       ];
buildOne(documentationArrOut,'./test/out2.js');
console.log("compiling over");

 

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值