Node的便民技巧-- 压缩代码 下载图片 

压缩代码

相信很多前端的同学都会在上线前压缩JS代码,现在的Gulp Webpack Grunt......都能轻松实现。但问题来了,这些都不会,难道就要面对几十个JS文件一遍遍来回“复制-压缩-创建-粘贴”,这样太不人性化了。  

于是可以借助Node + uglify-js 轻松实现。(前提你会点node操作)

1.首先看一下目录:

  |--uglifyJS

    |--js

      |--test1.js

      |--test2.js

           |--uglify.js   //这个就是本文的重点编辑

2.打开uglifyJS文件夹

npm install uglify-js

3.编辑uglify.js

   3.1 首先说一下思路和实现的东西

   1、将需要压缩的文件放在一个JS文件夹下

   2、把名字存储在一个数组下

   3、为这组数组添加JS文件夹相对路径与.js后缀(其实这一步可以在上面的数组里一起完成)

   4、遍历一下数组,将每一个路径进行  var result = UglifyJS.minify(**每一个文件路径** ,**压缩选项**

   5、将得到的result.code 利用fs的writeFileSync  写进 fs.writeFileSync(**文件名**, result.code, 'utf-8' , function(err){})

   3.2 其实真的很简单,以下是全部代码

iOS培训,Swift培训,苹果开发培训,移动开发培训

 UglifyJS = require('uglify-js' fs = require('fs' JS = ['test1' , 'test2' AddJS =  newJS == './js/'+x+'.js' JSOptions = min_options =,  , 
        properties   : , 
        dead_code    : , 
        drop_debugger: , 
        conditionals : , 
        evaluate     : , 
        booleans     : , 
        loops        : , 
        unused       : , 
        hoist_funs   : , 
        hoist_vars   : , 
        if_return    : , 
        join_vars    : , 
        cascade      : , 
        drop_console : , 
        comparisons  : , 
        unsafe       :  
    }'utf-8' ,  (err) 'success' Uglify = = options ||= (options.type || 'sign'= (options.outName || './js/out.min.js' data =(options.type == 'sign'( i   result =
             min = data[i].replace('.js' ,''+'.min.js'= = 'out.js.map' result ='sign', 
    outName : './js/out.min.js'
});

iOS培训,Swift培训,苹果开发培训,移动开发培训

简单的测试下,JS文件夹下 出来min.js压缩文件了。

iOS培训,Swift培训,苹果开发培训,移动开发培训

 

下载图片

看到Github https://api.github.com/emojis  上有 emoji 各种表情,想着一个个“打开连接-图片另存为” ,要是一两个还好,好家伙,居然有800多个,瘆得慌。

iOS培训,Swift培训,苹果开发培训,移动开发培训

iOS培训,Swift培训,苹果开发培训,移动开发培训

于是想着利用node的http + fs 实现读取地址

实现思路 

1.首先创建文件夹

2.通过json对象将地址一个个传给https 进行处理

3.将得到的数据data 存起来,利用writeFile写进数据

4.打开文件夹 一切都在了

iOS培训,Swift培训,苹果开发培训,移动开发培训

/**
 * Created by QRLon 2016/8/13 0013. */var http = require('http');var https = require('https');var fs = require('fs');//重新定义创建文件夹function mkdirSync(url , mode , cb){    var path = require('path'),
        arr = url.split('/');
    mode = mode || 0777;
    cb = cb || function(){};    if(arr[0]==='.'){
        arr.shift();
    }    if(arr[0] == '..'){
        arr.splice(0, 2, arr[0]+"/"+arr[1])
    }    function inner(cur){        if(!fs.existsSync(cur)){ //不存在就创建一个            fs.mkdirSync(cur , mode)
        }        if(arr.length){
            inner(cur + "/" + arr.shift());
        }else{
            cb();
        }
    }
    arr.length && inner(arr.shift());
}//创建文件夹mkdirSync('./data','',function(e){    if(e){
        console.log('出错了');
    }else{
        console.log("创建成功")
    }
})
mkdirSync('./img','',function(e){    if(e){
        console.log('出错了');
    }else{
        console.log("创建成功")
    }
})var url = 'http://a33d82f76271fa5e5ac8.b0.upaiyun.com/apicloud/818900b273d2591478a6f3fd8a9ef0ac.txt';

http.get(url , function(res){    var data ='';
    res.setEncoding('utf-8'); //定义文件编码
    res.on('data' , function(chunk){
        data += chunk;
    });

    res.on('end',function(){
        fs.writeFile('./data/data.json', data ,'utf-8' ,function(err) {            if (err) throw err;
            console.log ('文件写入成功');
        });        var JSONData = JSON.parse(data)
        console.log(JSONData)        for(var x in JSONData){
            emjin(x ,JSONData[x]);
        }
    })
})function emjin(x , url){
    https.get(url , function(res){        var imgData = '';
        res.setEncoding('binary'); //注意这里需要设置为二进制 不然后面打不开图片
        res.on('data' , function(chunk){
            imgData += chunk;
        });
        res.on('end' , function(){
            fs.writeFile('./img/'+x+'.png' , imgData , 'binary' , function(err){                if (err) throw err;
                console.log('success');
            })
        })
    })
}

iOS培训,Swift培训,苹果开发培训,移动开发培训

本来用 https://api.github.com/emojis  这个就可以 但是因为Http之前的问题(怪我没学好Http服务)

iOS培训,Swift培训,苹果开发培训,移动开发培训

所以把内容复制了剪切


网友评论

更多精彩分享

万码学堂联系方式-Java培训机构,青岛Java培训,青岛计算机培训,软件编程培训,seo优化培训,网络推广培训,网络营销培训,SEM培训,网络优化,在线营销培训,Java培训万码学堂联系方式