使用UglifyJS合并/压缩JavaScript的方法


Posted in Javascript onMarch 07, 2012

build.js中的代码会去调用UglifyJS的接口函数以执行压缩任务。

1,去github下载最新的UglifyJS。两种方式下载,如果安装了git,进入git控制台使用如下命令
git clone git://github.com/mishoo/UglifyJS.git

或者使用http方式下载,点击zip下载。解压后其目录结构如下

使用UglifyJS合并/压缩JavaScript的方法

 

2,新建一个项目(文件夹)myApp,将uglify-js.js和lib目录拷贝到自己的项目中。如下

使用UglifyJS合并/压缩JavaScript的方法

3,在myApp中新建一个compress.js,内容如下

var fs = require('fs'); 
var jsp = require("./uglify-js").parser; 
var pro = require("./uglify-js").uglify; var origCode = "var abc = function(){ var one = 5; return one;}"; 
var ast = jsp.parse(origCode); // parse code and get the initial AST 
ast = pro.ast_mangle(ast); // get a new AST with mangled names 
ast = pro.ast_squeeze(ast); // get an AST with compression optimizations 
var finalCode = pro.gen_code(ast); // compressed code here 
console.log(finalCode);

这段代码的大概意思是取fs模块,它是node的文件模块。 接着取UglifyJS的两个模块。后面就是UglifyJS的压缩流程了。

4,打开命令行,执行compress.js

使用UglifyJS合并/压缩JavaScript的方法

控制台输出了压缩后的代码。好了,就这么简单。
5,既然在node环境下,当然可以写一个函数直接读取源文件,压缩后输出到指定的目录。将以上代码封装到一个函数中,如下

// 读取一个文件,压缩之 
function buildOne(flieIn, fileOut) { 
var origCode = fs.readFileSync(flieIn, 'utf8'); 
var ast = jsp.parse(origCode); 
ast = pro.ast_mangle(ast); 
ast = pro.ast_squeeze(ast); var finalCode = pro.gen_code(ast); 
fs.writeFileSync(fileOut, finalCode, 'utf8'); 
}

将我写的ajax-1.0.js压缩,输出到myApp目录中
buildOne('ajax-1.0.js', 'ajax-min.js');

示例代码UglifyJS_test
Javascript 相关文章推荐
JQUERY 对象与DOM对象之两者相互间的转换
Apr 27 Javascript
javascript中clone对象详解
Dec 03 Javascript
JavaScript中的Web worker多线程API研究
Dec 06 Javascript
javascript实现密码强度显示
Mar 18 Javascript
javascript使用闭包模拟对象的私有属性和方法
Oct 05 Javascript
jQuery给表格添加分页效果
Mar 02 Javascript
JavaScript实现旋转轮播图
Aug 18 Javascript
ES6 迭代器(Iterator)和 for.of循环使用方法学习(总结)
Feb 08 Javascript
使用vue-aplayer插件时出现的问题的解决
Mar 02 Javascript
vue axios登录请求拦截器
Apr 02 Javascript
小程序封装路由文件和路由方法(5种全解析)
May 26 Javascript
iview form清除校验状态的实现
Sep 19 Javascript
Uglifyjs(JS代码优化工具)入门 安装使用
Apr 13 #Javascript
node.js 一个简单的页面输出实现代码
Mar 07 #Javascript
服务器端的JavaScript脚本 Node.js 使用入门
Mar 07 #Javascript
JavaScript高级程序设计 读书笔记之十一 内置对象Global
Mar 07 #Javascript
拥抱模块化的JavaScript
Mar 07 #Javascript
那些年,我还在学习jquery 学习笔记
Mar 05 #Javascript
什么是DOM(Document Object Model)文档对象模型
Mar 05 #Javascript
You might like
程序员编程十条戒律
2009/07/09 PHP
PHP得到某段时间区间的时间戳 php定时任务
2012/04/12 PHP
php7新特性的理解和比较总结
2019/04/14 PHP
用JSON做数据传输格式中的一些问题总结
2011/12/21 Javascript
Node.js生成HttpStatusCode辅助类发布到npm
2013/04/09 Javascript
关于JavaScript与HTML的交互事件
2013/04/12 Javascript
jQuery中attr()方法用法实例
2015/01/05 Javascript
jQuery实现form表单基于ajax无刷新提交方法详解
2015/12/08 Javascript
使用jQuery制作Web页面遮罩层插件的实例教程
2016/05/26 Javascript
从零开始学习Node.js系列教程六:EventEmitter发送和接收事件的方法示例
2017/04/13 Javascript
angularjs定时任务的设置与清除示例
2017/06/02 Javascript
JavaScript实现学生在线做题计时器功能
2018/12/05 Javascript
微信小程序rich-text富文本用法实例分析
2019/05/20 Javascript
关于JS模块化的知识点分享
2019/10/16 Javascript
jQuery实现购物车全功能
2021/01/11 jQuery
python with statement 进行文件操作指南
2014/08/22 Python
python 打印对象的所有属性值的方法
2016/09/11 Python
python爬虫headers设置后无效的解决方法
2017/10/21 Python
python中不能连接超时的问题及解决方法
2018/06/10 Python
pyspark.sql.DataFrame与pandas.DataFrame之间的相互转换实例
2018/08/02 Python
Python入门Anaconda和Pycharm的安装和配置详解
2019/07/16 Python
深入了解Django中间件及其方法
2019/07/26 Python
Python3.6实现根据电影名称(支持电视剧名称),获取下载链接的方法
2019/08/26 Python
Python实现计算长方形面积(带参数函数demo)
2020/01/18 Python
Python3 利用face_recognition实现人脸识别的方法
2020/03/13 Python
Python使用tkinter实现摇骰子小游戏功能的代码
2020/07/02 Python
巴西女装购物网站:Eclectic
2018/04/24 全球购物
捷克家电和家具购物网站:OKAY.cz
2020/07/23 全球购物
软件测试工程师笔试题带答案
2015/03/27 面试题
高中毕业生自我鉴定
2013/11/03 职场文书
教师个人自我评价范文
2014/04/13 职场文书
投资合作协议书
2014/04/17 职场文书
查摆问题对照检查材料
2014/08/28 职场文书
2014年宣传部个人工作总结
2014/12/06 职场文书
小学副班长竞选稿
2015/11/21 职场文书
2019年二手房买卖合同范本
2019/10/14 职场文书