Home >Web Front-end >JS Tutorial >Publish an efficient JavaScript analysis and compression tool JavaScript Analyser_javascript skills

Publish an efficient JavaScript analysis and compression tool JavaScript Analyser_javascript skills

WBOY
WBOYOriginal
2016-05-16 19:07:411333browse

Publish an efficient JavaScript analysis and compression tool JavaScript Analyser
First, a script compression example will be released to demonstrate the JSA syntax compression and optimization functions.

Copy code The code is as follows: 🎜>}                                                                         
zzzz( ); 


function f2(var1) { 
 var var2 = 2; 
 var var3 = 3; with (withObject){
alert(var2);
} }
}




Compressed result (formatted for easy reference):





Copy code


The code is as follows:


zzzz(); 
function f2(A) {
var var2 = 2;
var B = 3;
var C = {var2:-2};
with (C) {
alert(var2);

JSA’s compression process is divided into two steps

The first step is syntax compression, similar to Dojo ShrinkSafe, but safer and more effective.

The second step is text compression. Currently, the compression algorithm of
JavaScript Compressor is used.
(http://dean.edwards.name/packer/ )

These can be set in the settings window.
By default, syntax compression is used first. When the file is larger than 1000 bytes and can still be compressed to 90% of the original size using text compression, text compression is used on the original basis.


Comparison of compression rates with other compression tools:

1. JavaScript Compressor(http:// dean.edwards.name/packer/)
Compared with its own compression tool Take the code as an example (v2.02). The size after packer compression is 7,428 bytes (comments removed).
And our compression tool can compress to 7,256 bytes
7256 / 7428 = 0.9768443726440496
2. Dojo ShrinkSafe (rough stuff, inefficient and dangerous, it is recommended that original users replace it quickly)
Take his own framework source code as an example (v0.4.1):
His own compression size is 149,518 bytes, and we can reduce it to 81,261 bytes after compression
81261 / 149518 = 0.5434864029748927


Security instructions:
1. JavaScript Compressor
Text-based compression, I have not looked at the logic in detail, but the possibility of problems with this kind of compression is very low, and our compression tool also uses it His compression algorithm showed no abnormalities in tests of JSI 1.1 a8 and
its integrated third-party libraries. Moreover, the well-known framework JQuery is used, so I believe there will be no problems.

Supplement (2007-03-12): Today I discovered that this thing has a bug when analyzing JavaScript multi-line string syntax. However, this problem will no longer exist after JSA syntax compression.





2. Dojo ShrinkSafe Danger! ! ! ! !
Use shorter names to replace long local variable names. This is an extremely unsafe compression tool. For example:



javascript code
function(){
var withObject = {variable1:1}
var variable1 = 2;
with(withObject){
alert(variable1);
}
}


will be compressed into:
function(){
var _1={variable1:1};
var _2=2;
with(_1){
alert(_2);
} 
} 



This is obviously wrong. This garbage does not pay attention to some special syntax and dynamics of javascript.
No processing is done on the eval function, catch operation, and with statement.

In comparison, JSA is the safest and most effective compression tool that I know of.
JSA not only provides code compression function, but also can do formatting and script analysis.


The script analysis function can be used to view script information and find potential problems in the script.
For example, check which functions and variables are declared in the script.
Those external variables are used. etc. . .


Download address:
http://sourceforge.net/project/showfiles.php?group_id=175776
or
http: //forum.xidea.org File List
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn