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

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 格式的详细清单。

顶级的键(The top-level keys):
projectNameString类型说明该项目。
deployDirString类型用于命令行指定的部署目录,这个目录是在HOMEDIR目录内创建的
licenseTextString类型为所有JS和CSS指定头部内容,使用/n 作换行符。
pkgsArray类型包描述符的数组
resourcesArray类型资源描述符的数组
包描述符(File Descriptors:):
fileString类型引入的文件。
pathString类型引入文件所在的目录。
isDebugBool类型是否生成调试版本 此配置当前是未启用的(UNUSED),因此总是都会产生调试和压缩两种版本的。
fileIncludesArray类型需要在此包中引入的文件描述符。
pkgDepsArray类型包描述符列表。此配置的行为依赖于 includeDeps 的配置如何。
includeDepsBool类型在输出的文件中是否包含依赖的文件。默认为false。
文件描述符(Resource Descriptors)
srcString类型被移到资源的源
destString类型被移动资源的目的地
filtersString类型创建一个正则表达式,指定它来如何筛选从src复制到dest 文件。所有 SVN 和隐藏文件将自动被排除在外。请注意,所有 /'s 必须经过转义为//。
资源描述符(Resource Descriptors)
srcString类型被移到资源的源
destString类型被移动资源的目的地
filtersString类型创建一个正则表达式,指定它来如何筛选从 src 复制到 dest 文件。所有 SVN 和隐藏文件将自动被排除在外。请注意,所有/'s必须经过转义为 //。

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

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

sp42a

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值