用 JSBuilder 壓縮你的 JavaScript / CSS 原始碼

來源:互聯網
上載者:User

JSBuilder2 (extjs.com/products/jsbuilder)是配合 ExtJS 3 新發布的源碼打包工具,用 Java 語言編寫,打包編譯成 JAR 格式執行檔案發布到程式員手中。作為一個輔助開發人員的打包工具,它內含有幾種開源項目在內,包括 Rhino Project(著名的JavaScript編譯器)、YUI Compressor(對 JS/CSS 壓縮實行 minification、混淆
obfuscation)和 Java 環境下 JSON 的編碼器(來自www.json.org),方便在 JavaScript 和 CSS 項目中使用。其中”混淆“還是主要依靠 YUI Compressor 實現之,因為我們知道,JavaScript 源碼的混淆可謂對許多項目的保密來說可謂”重中之重“,YUI Compressor 的演算法應該說是十分保險的,提供足夠高的混淆層級,如混淆局部變數的名稱等等。

JSBuilder2 具有特性如下:

  • 跨平台的Java應用程式,用法簡單
  • 以 JSON 為設定檔的結構
  • 採用 YUI Compressor 來進行檔案的壓縮
  • 在開發階段到部署階段之間,資源檔都可以輕鬆遷移

與第一版 GUI 介面明顯不同,JSBuilder2 是純命令列的工具,因此我們必須瞭解一下它的參數如何。首先運行 JAR 包的執行檔案必須要有 java.exe。通常我們將該命令加入“環境變數”中,然後加入-jar 參數即可以運行這個 JSBuilder2.jar 檔案。關於 JSBuilder 的參數列表,可見:

  • --projectFile -p   (必填的)jsb2 檔案,該檔案定義了打包的具體任務。 Location of a jsb2 project file
  •  --homeDir -d       (必填的)產生的主目錄,通常就是項目部署的目錄。
  • --verbose -v       (可選的參數)輸出正在生產的詳細過程。
  • --debugSuffix -s   (可選的參數)為便於調試,生產 JS 調試檔案的後續名稱,預設為“debug”,以表示這是調試用的 JS 檔案。
  • --help -h          (可選的參數)顯示協助。

Windows 平台上的用法:

java -jar JSBuilder2.jar --projectFile C:/Apps/www/ext3svn/ext.jsb2 --homeDir C:/Apps/www/deploy/

Linux 或 OS X 平台上的用法:

java -jar JSBuilder2.jar --projectFile /home/aaron/www/trunk/ext.jsb2 --homeDir /home/aaron/www/deploy/

上面提到 JSBuilder 的 jsb2 檔案,很明顯的是為第二版所服務的設定檔,以區別於舊版。在第一版的時候,*.jsb 是採用 XML 檔案作為配置其設定檔的,那時還是 .Net WinForm 寫好的程式。而在這次 Java 重寫的版本中,卻是使用了 JSON 作為其設定檔的格式。我們說到 JSBuilder 既有 Moliza 的 Rhino JS 引擎也有 JSON.org 的包同時存在,它既可以讓 JS 引擎以 eval() 函數獲得 JSON 對象,也可以讓 Java 的代碼獲得這個
JSON 對象,都是比較方便的方法。那麼使用 XML 是不是較為不便呢?也不一定的,因為我們可以從 Rhino 的開源資訊得到瞭解,較新版的 Rhino 是升級到 JavaScript 1.8,也就正式支援 E4X(ECMAScript (aka JavaScript) for XML,簡稱 E4X) 的標準。在 E4X 的支援下 XML 轉為 JavaScript 對象輕而易舉。當然使用 XML 的話又是另外一件事了。

下面我們說一下這個 JSON 格式的詳細清單。

頂級的鍵(The top-level keys):
projectName String類型 說明該項目。
deployDir String類型 用於命令列指定的部署目錄,這個目錄是在HOMEDIR目錄內建立的
licenseText String類型 為所有JS和CSS指定頭部內容,使用/n 作分行符號。
pkgs Array類型 包描述符的數組
resources Array類型 資源描述符的數組
包描述符(File Descriptors:):
file String類型 引入的檔案。
path String類型 引入檔案所在的目錄。
isDebug Bool類型 是否產生調試版本 此配置當前是未啟用的(UNUSED),因此總是都會產生調試和壓縮兩種版本的。
fileIncludes Array類型 需要在此包中引入的檔案描述符。
pkgDeps Array類型 包描述符列表。此配置的行為依賴於 includeDeps 的配置如何。
includeDeps Bool類型 在輸出的檔案中是否包含依賴的檔案。預設為false。
檔案描述符(Resource Descriptors)
src String類型 被移到資源的源
dest String類型 被移動資源的目的地
filters String類型 建立一個Regex,指定它來如何篩選從src複製到dest 檔案。所有 SVN 和隱藏檔案將自動被排除在外。請注意,所有/'s必須經過轉義為//。
資源描述符(Resource Descriptors)
src String類型 被移到資源的源
dest String類型 被移動資源的目的地
filters String類型 建立一個Regex,指定它來如何篩選從src複製到dest 檔案。所有 SVN 和隱藏檔案將自動被排除在外。請注意,所有/'s必須經過轉義為//。

從清單中可以看出,JSON 格式仍然是以 Key/Value,鍵/索引值列出。我們定義好我們自己的配置後,儲存為一份 *.jsb2 檔案讓 JSBuilder 讀取。

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.