zoukankan      html  css  js  c++  java
  • [整理]javascript压缩、格式化

    1.使用packer来压缩JS文件

    packer工具在线版:http://dean.edwards.name/packer/

    通过packer对js打包压缩的同时,执行Base62 encode编码后,代码变得难以阅读。

    如:

    eval(function(p,a,c,k,e,r){e=String;if(!''.replace(/^/,String)){while(c--)r[c]=k[c]||c;k=[function(e){return r[e]}];e=function(){return'\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\b'+e(c)+'\b','g'),k[c]);return p}('0(1);',2,2,'alert|123'.split('|'),0,{}))
    

    2.还原packer压缩的JS源码

    有时候,我们需要把packer压缩后的js还原成原始的可阅读的js代码,方法有很多种,毕竟,压缩后的js最终还是要在浏览器上执行的。

    (1)使用浏览器内置的开发工具

    http://www.cnblogs.com/52cik/p/js-unpacker.html,已说明使用方法。

    (2)直接修改已打包压缩的js源文件,返回JS源文件

    eval(function (p, a, c, k, e, d) {
                e = function (c) { return (c < a ? '' : e(parseInt(c / a))) + ((c = c % a) > 35 ? String.fromCharCode(c + 29) : c.toString(36)) }; if (!''.replace(/^/, String)) { while (c--) d[e(c)] = k[c] || e(c); k = [function (e) { return d[e] } ]; e = function () { return '\w+' }; c = 1 };
                while (c--)
                    if (k[c])
                        p = p.replace(new RegExp('\b' + e(c) + '\b', 'g'), k[c]);
                /*return p*/
                /*begin 添加如下代码,直接显示p*/
                document.getElementById('textareaID').innerText = p;
                /*end*/
            } ('1(0);', 62, 2, '123|alert'.split('|'), 0, {}))
    

     (3)通过Eval执行压缩的代码,得到JS源码

    有一点必须知道,压缩后的js最终还是要在浏览器上执行的,浏览器肯定认识的,那么我们可以借助eval来获取JS源码。

            function decode() {
                var code = document.getElementById('code').value;
                code = code.replace(/^eval/, '');
                document.getElementById('code').value = eval(code);
            } 
    

    3.格式化JS

    获得JS源码后,需要格式化,方便阅读。

    http://www.css88.com/tool/js_beautify/

    另:本文的附件中有相关js工具。

    4.其他在线工具:

     http://tool.chinaz.com/js.aspx(JS混淆加密压缩)

     http://tool.oschina.net/jscompress

    5.附件(JS压缩&格式化工具)

    JS压缩&格式化工具

  • 相关阅读:
    dev gridcontrol设置复选框列,和按数据选择行
    Django——三种方式上传文件/数据 (form ajax json)
    Django——ajax简单使用
    Django——ajax介绍,django内置序列化器
    阿里云oss 上传文件的两种方式(本地路径上传远程链接上传)
    easywechat 网页授权登录
    19。删除链表倒数第N个节点
    142环形链表II
    141环形链表
    701二叉搜索树中的插入操作
  • 原文地址:https://www.cnblogs.com/Benoly/p/3765563.html
Copyright © 2011-2022 走看看