用 JSBuilder 压缩你的 JavaScript / CSS 源代码-阿里云开发者社区

开发者社区> 开发与运维> 正文
登录阅读全文

用 JSBuilder 压缩你的 JavaScript / CSS 源代码

简介: JSBuilder2 (extjs.com/products/jsbuilder)是配合 Ext JS 3 新发布的源码打包工具,用 Java 语言编写,打包编译成 JAR 格式执行文件发布到程序员手中。

JSBuilder2 (extjs.com/products/jsbuilder)是配合 Ext JS 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 格式的详细清单。

projectName String类型 说明该项目。
deployDir String类型 用于命令行指定的部署目录,这个目录是在HOMEDIR目录内创建的
licenseText String类型 为所有JS和CSS指定头部内容,使用/n 作换行符。
pkgs Array类型 包描述符的数组
resources Array类型 资源描述符的数组
file String类型 引入的文件。
path String类型 引入文件所在的目录。
isDebug Bool类型 是否生成调试版本 此配置当前是未启用的(UNUSED),因此总是都会产生调试和压缩两种版本的。
fileIncludes Array类型 需要在此包中引入的文件描述符。
pkgDeps Array类型 包描述符列表。此配置的行为依赖于 includeDeps 的配置如何。
includeDeps Bool类型 在输出的文件中是否包含依赖的文件。默认为false。
src String类型 被移到资源的源
dest String类型 被移动资源的目的地
filters String类型 创建一个正则表达式,指定它来如何筛选从src复制到dest 文件。所有 SVN 和隐藏文件将自动被排除在外。请注意,所有 /'s 必须经过转义为//。
src String类型 被移到资源的源
dest String类型 被移动资源的目的地
filters String类型 创建一个正则表达式,指定它来如何筛选从 src 复制到 dest 文件。所有 SVN 和隐藏文件将自动被排除在外。请注意,所有/'s必须经过转义为 //。

从清单中可以看出,JSON 格式仍然是以 Key/Value,键/键值列出。我们定义好我们自己的配置后,保存为一份 *.jsb2 文件让 JSBuilder 读取。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
开发与运维
使用钉钉扫一扫加入圈子
+ 订阅

集结各类场景实战经验,助你开发运维畅行无忧

其他文章