您的位置:首页 > Web前端 > JavaScript

JavaScript代码压缩-js代码压缩-压缩JS

2011-01-11 14:55 459 查看
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<!--************************************************************************-->
<!--* JavaScript Crunchinator Demo                                         *-->
<!--*                                                                      *-->
<!--* Copyright 2001 by Mike Hall                                          *-->
<!--************************************************************************-->
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>JavaScript代码压缩-js代码压缩-压缩JS</title>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<mce:script type="text/javascript"><!--
var literalStrings;  //临时变量.
function crunch(f) {
var input, output;
var i;
// 获得输入里的代码,处理并显示输出
f.elements.codeOut.value = "";
f.elements.statusMsg.value = "进行中...";
input = f.elements.codeIn.value;
output = input;
f.elements.statusMsg.value = "替换字符串...";
output = replaceLiteralStrings(output);
f.elements.statusMsg.value = "去掉注释...";
output = removeComments(output);
f.elements.statusMsg.value = "压缩空格...";
output = compressWhiteSpace(output);
f.elements.statusMsg.value = "连接字符串...";
output = combineLiteralStrings(output);
f.elements.statusMsg.value = "恢复字符串...";
output = restoreLiteralStrings(output);
f.elements.statusMsg.value = "完成.";
f.elements.codeOut.value = output;
// Compute sizes.
f.elements.sizeIn.value   = input.length;
f.elements.sizeOut.value  = output.length;
f.elements.sizeDiff.value = input.length - output.length;
if (input.length > 0)
f.elements.pctOut.value = 100 -
Math.round(output.length / input.length * 10000) / 100;
return false;
}
function replaceLiteralStrings(s) {
var i, c, t, lines, escaped, quoteChar, inQuote, literal;
literalStrings = new Array();
t = "";
// Split script into individual lines.
lines = s.split("/n");
for (i = 0; i < lines.length; i++) {
j = 0;
inQuote = false;
while (j <= lines[i].length) {
c = lines[i].charAt(j);
// If not already in a string, look for the start of one.
if (!inQuote) {
if (c == '"' || c == "'") {
inQuote = true;
escaped = false;
quoteChar = c;
literal = c;
}
else
t += c;
}
// Already in a string, look for end and copy characters.
else {
if (c == quoteChar && !escaped) {
inQuote = false;
literal += quoteChar;
t += "__" + literalStrings.length + "__";
literalStrings[literalStrings.length] = literal;
}
else if (c == "//" && !escaped)
escaped = true;
else
escaped = false;
literal += c;
}
j++;
}
t += "/n";
}
return t;
}
function removeComments(s) {
var lines, i, t;
// Remove '//' comments from each line.
lines = s.split("/n");
t = "";
for (i = 0; i < lines.length; i++)
t += lines[i].replace(/([^/x2f]*)/x2f/x2f.*$/, "$1");
// Replace newline characters with spaces.
t = t.replace(/(.*)/n(.*)/g, "$1 $2");
// Remove '/* ... */' comments.
lines = t.split("*/");
t = "";
for (i = 0; i < lines.length; i++)
t += lines[i].replace(/(.*)/x2f/x2a(.*)$/g, "$1 ");
return t;
}
function compressWhiteSpace(s) {
// Condense white space.
s = s.replace(//s+/g, " ");
s = s.replace(/^/s(.*)/, "$1");
s = s.replace(/(.*)/s$/, "$1");
// Remove uneccessary white space around operators, braces and parentices.
//[/x21/x25/x26/x28/x29/x2a/x2b/x2c/x2d/x2f/x3a/x3b/x3c/x3d/x3e/x3f/x5b/x5d/x5c/x7b/x7c/x7d/x7e]
//[!%&()*+,-/:;<=>?[]/{|}~]
s = s.replace(//s([/x21/x25/x26/x28/x29/x2a/x2b/x2c/x2d/x2f/x3a/x3b/x3c/x3d/x3e/x3f/x5b/x5d/x5c/x7b/x7c/x7d/x7e])/g, "$1");
s = s.replace(/([/x21/x25/x26/x28/x29/x2a/x2b/x2c/x2d/x2f/x3a/x3b/x3c/x3d/x3e/x3f/x5b/x5d/x5c/x7b/x7c/x7d/x7e])/s/g, "$1");
return s;
}
function combineLiteralStrings(s) {
var i;
s = s.replace(/"/+"/g, "");
s = s.replace(/'/+'/g, "");
return s;
}
function restoreLiteralStrings(s) {
var i;
for (i = 0; i < literalStrings.length; i++)
s = s.replace(new RegExp("__" + i + "__"), literalStrings[i]);
return s;
}
// --></mce:script>
</head>
<body>
<h3>JavaScript 压缩---<a href="http://www.css88.com/" mce_href="http://www.css88.com/" class="STYLE2">返回前端开发首页</a></h3><hr />
<div class="STYLE2" id="demoBox">
这程序是由Mike Hall写的,JavaScript的压缩不是为了保护代码而压缩,而是压缩后的js代码文件可以小一倍甚至多倍,从而使这个js代码快速的下载到客户端,特别js文件较大时速度效果非常明显.
<br />
<br />
使用方法:<br />
使用下面的表单,你可以浓缩JavaScript代码.只用将任何脚本代码粘贴到输入的文本框,压下 '压缩' 按钮,那浓缩的版本就出现在 '输出' 里.
然后你可以使用 '全选' 按钮,快速选中'输出'里的代码,剪切粘贴到一个新的源码文件.<br />
<br />
3.JavaScript 格式化工具<a href="http://www.css88.com/tool/js_beautify/" mce_href="http://www.css88.com/tool/js_beautify/" target="_blank">http://www.css88.com/tool/js_beautify/</a></div>
<p></p>
<div style="width:1003px">
<div style="float:left" mce_style="float:left">
<form action="" onsubmit="return crunch(this)">

<table border="0">
<tr>
<th colspan="3">输入</th>
</tr>
<tr>
<td colspan="3"><textarea name="codeIn" rows="10" cols="80">


字节数:

状态:

输出
字节数:

减少:

% 减少率:

使用须知:
大量的代码运行效率较低,cpu占用较高,请耐心等待!呵呵
1.保存好您的开发版本,便于以后修改维护;
2.压缩前,检查每一行代码确保以“;”结束;
3.if...else...语句加上“{}”,即如果你的i语句为

if(...)

...//一条语句

else

...//一条语句
请改为

if(...)

{...}//一条语句

else

{...}//一条语句
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: