js压缩工具

  1. javascriptcompressor.com (在线压缩)
  2. shrinksafe.dojotoolkit.org (在线文件压缩)
  3. dean.edwards.name/packer (在线压缩)
  4. YUI Compressor (使用命令行来压缩,需要JAVA虚拟机来运行压缩程序)
  5. JSmin (提供下载,非常好用)

 

强烈推荐JSmin,服务的很周到,JSmin包括C,C#,Java,JavaScript,Perl,PHP,Python,OCAML还有Ruby的源文件,提供下载下来使用。

 

 

javascript(js)代码压缩工具-jsmin 使用方法

 

官方地址:http://www.crockford.com/javascript/jsmin.html

点击页下方的”zip file containing an MS-DOS.exe file“下载。

运行-cmd-输入:D:\jsmin\jsmin.exe <D:jsmin\jsfile.js>D:\jsmin\jsfile_new_name.js

 

   但是按照官方的方法没试成功,即运行jsmin.exe,输:jsmin <test.js>small_test.js  没反应???

(jsmin.exe和test.js位于同一目录下,生成的目标文件取名small_test.js)

不知道什么原因!!?于是只好cmd一下,输:D:\jsmin\jsmin.exe <D:jsmin\test.js>D:\jsmin\small_test.js (文件都放在D:\jsmin目录下)

 才O了

 

 

 

 

javascript 压缩工具 yui compressor

 

减小javascript及css文件大小可以加快浏览器下载,达到页面提速。所以选择一款好的javascript压缩工具,很重要。在对比了几款工具后,选择集中在dojo的shrinksafe和雅虎的yui compressor上,两款都不错,但是dojo存在安全方面的问题,比如他通过把函数及变量已简写的数字字母方式来达到压缩。所以我选择yui compressor,它支持js及css文件,还可以设定charset,速度和压缩率都令人满意。具体用法,先看看help。

java -jar yuicompressor-2.3.5.jar --help
 
Usage: java -jar yuicompressor-x.y.z.jar [options] [input file]
 
Global Options
  -h, --help                Displays this information
  --type <js|css>           Specifies the type of the input file
  --charset <charset>       Read the input file using <charset>
  --line-break <column>     Insert a line break after the specified column number
  -v, --verbose             Display informational messages and warnings
  -o <file>                 Place the output into <file>. Defaults to stdout.
 
JavaScript Options
  --nomunge                 Minify only, do not obfuscate
  --preserve-semi           Preserve all semicolons
  --disable-optimizations   Disable all micro optimizations
 
If no input file is specified, it defaults to stdin. In this case, the 'type'
option is required. Otherwise, the 'type' option is required only if the input
file extension is neither 'js' nor 'css'.

压缩例子

java -jar yuicompressor-2.3.5.jar –type js unc.flag.js -o flag.js

文件的类型可以不加,yuicompressor 会自动判断转换类型。

 

由Douglas Crockford创建的JSMin是一个筛选程序,用于JavaScript文件中删除注释和不必要的空格。这个程序通常能够使文件大小减半,从而节省下载时间。 压缩包里包含了用C写的源码,及可执行程序 由于看到三条评论说没有用,在里我必须说明一下,下面那三个白痴肯定没学过c语言,更没用过c编译好的.exe文件。 以下是c里的源码大家可以先看觉得可用再下 #include <stdlib.h> #include <stdio.h> static int theA; static int theB; static int theLookahead = EOF; /* isAlphanum -- return true if the character is a letter, digit, underscore, dollar sign, or non-ASCII character. */ static int isAlphanum(int c) { return ((c >= 'a' && c <= 'z') || (c >= '0' && c <= '9') || (c >= 'A' && c <= 'Z') || c == '_' || c == '$' || c == '\\' || c > 126); } /* get -- return the next character from stdin. Watch out for lookahead. If the character is a control character, translate it to a space or linefeed. */ static int get() { int c = theLookahead; theLookahead = EOF; if (c == EOF) { c = getc(stdin); } if (c >= ' ' || c == '\n' || c == EOF) { return c; } if (c == '\r') { return '\n'; } return ' '; } /* peek -- get the next character without getting it. */ static int peek() { theLookahead = get(); return theLookahead; } /* next -- get the next character, excluding comments. peek() is used to see if a '/' is followed by a '/' or '*'. */ static int next() { int c = get(); if (c == '/') { switch (peek()) { case '/': for (;;) { c = get(); if (c <= '\n') { return c; } } case '*': get(); for (;;) { switch (get()) { case '*': if (peek() == '/') { get(); return ' '; } break; case EOF: fprintf(stderr, "Error: JSMIN Unterminated comment.\n"); exit(1); } } default: return c; } } return c; } /* action -- do something! What you do is determined by the argument: 1 Output A. Copy B to A. Get the next B. 2 Copy B to A. Get the next B. (Delete A). 3 Get the next B. (Delete B). action treats a string as a single character. Wow! action recognizes a regular expression if it is preceded by ( or , or =. */ static void action(int d) { switch (d) { case 1: putc(theA, stdout); case 2: theA = theB; if (theA == '\'' || theA == '"') { for (;;) { putc(theA, stdout); theA = get(); if (theA == theB) { break; } if (theA == '\\') { putc(theA, stdout); theA = get(); } if (theA == EOF) { fprintf(stderr, "Error: JSMIN unterminated string literal."); exit(1); } } } case 3: theB = next(); if (theB == '/' && (theA == '(' || theA == ',' || theA == '=' || theA == ':' || theA == '[' || theA == '!' || theA == '&' || theA == '|' || theA == '?' || theA == '{' || theA == '}' || theA == ';' || theA == '\n')) { putc(theA, stdout); putc(theB, stdout); for (;;) { theA = get(); if (theA == '[') { for (;;) { putc(theA, stdout); theA = get(); if (theA == ']') { break; } if (theA == '\\') { putc(theA, stdout); theA = get(); } if (theA == EOF) { fprintf(stderr, "Error: JSMIN unterminated set in Regular Expression literal.\n"); exit(1); } } } else if (theA == '/') { break; } else if (theA =='\\') { putc(theA, stdout); theA = get(); } if (theA == EOF) { fprintf(stderr, "Error: JSMIN unterminated Regular Expression literal.\n"); exit(1); } putc(theA, stdout); } theB = next(); } } } /* jsmin -- Copy the input to the output, deleting the characters which are insignificant to JavaScript. Comments will be removed. Tabs will be replaced with spaces. Carriage returns will be replaced with linefeeds. Most spaces and linefeeds will be removed. */ static void jsmin() { theA = '\n'; action(3); while (theA != EOF) { switch (theA) { case ' ': if (isAlphanum(theB)) { action(1); } else { action(2); } break; case '\n': switch (theB) { case '{': case '[': case '(': case '+': case '-': action(1); break; case ' ': action(3); break; default: if (isAlphanum(theB)) { action(1); } else { action(2); } } break; default: switch (theB) { case ' ': if (isAlphanum(theA)) { action(1); break; } action(3); break; case '\n': switch (theA) { case '}': case ']': case ')': case '+': case '-': case '"': case '\'': action(1); break; default: if (isAlphanum(theA)) { action(1); } else { action(3); } } break; default: action(1); break; } } } } /* main -- Output any command line arguments as comments and then minify the input. */ extern int main(int argc, char* argv[]) { int i; for (i = 1; i < argc; i += 1) { fprintf(stdout, "// %s\n", argv[i]); } jsmin(); return 0; }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值