lizongbo at 618119.com 工作,生活,Android,前端,Linode,Ubuntu,nginx,java,apache,tomcat,Resin,mina,Hessian,XMPP,RPC

2010年04月14日

将google托管的ajax js文件同步到本地服务器

Filed under: Java — 标签:, , — lizongbo @ 21:14
google提供了供全世界访问的公共javascript库托管,
参考:http://code.google.com/intl/zh-CN/apis/ajaxlibs/
只要使用 <script src=”http://www.google.com/jsapi”></script> 引用google的js,
然后使用 .load() 方法,就可以指定载入对应库的对应版本。 例如:google.load(“jquery”, “1”);
就可以载入当前最新的jquery库。
虽然google承诺无限期地托管各版本的js文件,但是由于大部分人知道的原因,在国内使用这种方式共享js资源存在一定风险。
因此,我参考google对这些js的部署结构,将js下载回来放到了本地服务器。
目前托管的js库有以下组件:
jQuery
jQuery UI
Prototype
script.aculo.us
MooTools
Dojo
SWFObject
Yahoo! 用户界面库 (YUI)
Ext Core
全部都同步下来,操作步骤如下:
先在Firefox里打开:
http://www.google.com/jsapi
然后将js保存到成本地文件,然后用Aptana打开,并格式化,然后找到
google.loader.rpl,然后把括号里一段json对象复制出来,定义成  var jslibs;
然后通过js生成对应js的url。然后使用java下载到本地保存到对应目录。
代码参考:
<SCRIPT LANGUAGE=””>
<!–
var jslibs={
“:jquery” : {
“versions” : {
“:1.2.3” : {
“uncompressed” : “jquery.js”,
“compressed” : “jquery.min.js”
},
“:1.3.1” : {
“uncompressed” : “jquery.js”,
“compressed” : “jquery.min.js”
},
“:1.3.0” : {
“uncompressed” : “jquery.js”,
“compressed” : “jquery.min.js”
},
“:1.3.2” : {
“uncompressed” : “jquery.js”,
“compressed” : “jquery.min.js”
},
“:1.2.6” : {
“uncompressed” : “jquery.js”,
“compressed” : “jquery.min.js”
},
“:1.4.0” : {
“uncompressed” : “jquery.js”,
“compressed” : “jquery.min.js”
},
“:1.4.1” : {
“uncompressed” : “jquery.js”,
“compressed” : “jquery.min.js”
},
“:1.4.2” : {
“uncompressed” : “jquery.js”,
“compressed” : “jquery.min.js”
}
},
“aliases” : {
“:1” : “1.4.2”,
“:1.4” : “1.4.2”,
“:1.3” : “1.3.2”,
“:1.2” : “1.2.6”
}
}
}
//–>
</SCRIPT>
<TEXTAREA id=”urls” NAME=”urls” ROWS=”40″ COLS=”80″></TEXTAREA>
<SCRIPT LANGUAGE=”JavaScript”>
<!–
var urls=””;
for(var jslibName in jslibs){
var jslibList=jslibs[jslibName];
for(var jslibver in jslibList[“versions”]){
var url1=”http://ajax.googleapis.com/ajax/libs/”+jslibName.replace(“:”,””)+”/”+jslibver.replace(“:”,””)+”/”+jslibList[“versions”][jslibver][“uncompressed“];
var url2=”http://ajax.googleapis.com/ajax/libs/”+jslibName.replace(“:”,””)+”/”+jslibver.replace(“:”,””)+”/”+jslibList[“versions”][jslibver][“compressed“];
urls=urls+”\n”+url1+”\n”+url2;
}
}
document.getElementById(“urls”).value=”String[] urlsStrings={”
+urls
+”};”
+”  for (int i = 0; i < urlsStrings.length; i++) {”
+”   try {”
+”    URL url = new URL(urlsStrings[i]);”
+”    File file = new File(\”E:/js\”, url.getPath());”
+”    file.getParentFile().mkdirs();”
+”    PrintWriter pw = new PrintWriter(file);”
+”    URLConnection urlc = url.openConnection();”
+”    urlc.setConnectTimeout(5000);”
+”    urlc.connect();”
+”    BufferedReader in = new BufferedReader(new InputStreamReader(”
+”      urlc.getInputStream(), \”UTF-8\”));”
+”    String line;”
+”    while ((line = in.readLine()) != null) {”
+”     pw.write(line);”
+”     // sb.append(line).append(‘\n’);”
+”    }”
+”    pw.close();”
+”    in.close();”
+”   } catch (Exception e) {”
+”    e.printStackTrace();”
+”   }”;
//–>
</SCRIPT>

一条评论 »

  1. 太复杂鸟,既然是下载到自己的服务器上,还不如自己 gzip 一些js库

    Reply

    评论 by cosbeta — 2010年07月8日 @ 09:16

RSS feed for comments on this post. TrackBack URL

Leave a comment

Powered by WordPress