对于混淆后的使用很简单,就直接引入就可以了,不用做其他的改变。混淆后其实还是js,只不过把变量名精简了,所以文件会小很多,而浏览器还是能识别的
一般压缩都经过混淆,如果你看到变量名都是A,B,C,D之类的无规则的命名,那就是被混淆过的,一般来说也很难阅读,就算你 还原了格式。如果是没有混淆的,你可以试试用js的格式化工具来重新格式化一下的,比如:
/* 美化:格式化代码,使之容易阅读 */
/* 净化:去掉代码中多余的注释、换行、空格等 */
/* 压缩:将代码压缩为更小体积,便于传输 */
/* 解压:将压缩后的代码转换为人可以阅读的格式 */
/* 混淆:将代码的中变量名简短化以减小体积,但可读性差,经混淆后的代码无法还原 */
/* 如果有用,请别忘了推荐给你的朋友: */
/* javascript在线美化、净化、压缩、解压:http://tool.lu/js */
/* 以下是演示代码 */
var Inote = {}
Inote.JSTool = function(options) {
this.options = options || {}
}
Inote.JSTool.prototype = {
_name: 'Javascript工具',
_history: {
'v1.0': ['2011-01-18', 'javascript工具上线'],
'v1.1': ['2012-03-23', '增加混淆功能'],
'v1.2': ['2012-07-21', '升级美化功能引擎'],
'v1.3': ['2014-03-01', '升级解密功能,支持eval,window.eval,window["eval"]等的解密'],
'v1.4': ['2014-08-05', '升级混淆功能引擎'],
'v1.5': ['2014-08-09', '升级js压缩引擎'],
'v1.6': ['2015-04-11', '升级js混淆引擎']
},
options: {},
getName: function() {return this._name},
getHistory: function() {
return this._history}
}
var jstool = new Inote.JSTool()
如果你是全局安装的,可以直接在需要混淆文件的目录下,
按住shift键右击鼠标选择在此处打开命令窗口如图
2.打开窗口后直接在窗口执行
uglifyjs main.js demo.js -o foo.min.js --source-map foo.min.js.map --source-map-root http://onbook.me -p 5 -c -m --wrap --export-all混淆文件main.js和demo.js生成foo.min.js和foo.min.js.map并指定map的来源网站
3.另一种使用方式是,把UglifyJS2包放到程序中,通过API对JS文件或JS代码进行压缩。首先,新建一个NPM项目文件package.json,然后在是下载UglifyJS2依赖包。
新建文件package.json{
"name": "nodejs-uglifyjs2",
"version": "0.0.1",
"description": "uglifyjs2",
"author": "Conan Zhang ",
"dependencies": {
}
}
4.执行npm install uglify-js --save下载UglifyJS2依赖包
5.安装完成后
新建test.js开始测试var UglifyJS = require('uglify-js')
//代码压缩
var result = UglifyJS.minify("var b = function () {}", {fromString: true})
console.log("\n===========================")
console.log(result)
//文件压缩
result = UglifyJS.minify(["demo.js"])
console.log("\n===========================")
console.log(result.code)
//多文件压缩,指定source map和网站来源
result = UglifyJS.minify(["main.js","demo.js"],{
outSourceMap: "out.js.map",
sourceRoot: "http://onbook.me",
mangle:true
})
console.log("\n===========================")
console.log(result.code)
console.log(result.map)