
制定自己的EXT版本
发布时间:2008-3-6
|
||||||||||||||||||||||||||||
|
|
| 在Mac/Unix上,该工具是不二的选择。设置好你的shell脚本和一行命令以备开始生成。Windows应采用功能更好的JS Builder | |
JS Builder
JS Builder (简称JSB)是管理生成文件的成熟方案,而其本身就是在Ext团队内部用于发布工程版本的工具。
虽然只能在Windows .NET环境下运行,在某些场合可能会受到一些限制,但它比其它以上讨论过的生成方案有着更多的优点。
.jsb 格式的文件包含了Ext代码发布生成的信息,可用JSB的图形界面来打开与编辑。
JSB GUI
要完整地讨论JSB的使用已经超出了本教程的范围。 实际上, JSB不仅有一般的压缩/输出功能,还可将指定的JS和CSS文件一起输出到项目指定生成版本。
简单试着创建一个新的项目,然后加入你所需的文件。在Options窗口里面有些许多的选项,在Project标签页和Build标签页里面有和项目输出相关的不同设置。
接着,我们将会讨论怎么更有效地从源码生成EXT。JSB是必需的,如果你还没有,应先从JSB项目主页下载一个JSB。 完成后,接着就可进行生成的工作。
生成步骤
- Ext源文件可以是在随便一个地方, 但原始的目录结构应保持一致,不应作目录结构上的改动。
- Ext \trunk (或是 \branches\ext2.0)下面找到 \src 文件夹,双击ext.jsb 启动JSB界面。
- 默认下, 一切的设定就应该像Ext团队般的设定。在Build Settings'标签页下面的Output Directory的值要改为你自己的目录。这是输出文件所在的根目录。
- 点击Build Project 按钮(右手边最后的菜单按钮)或从菜单选择 select Build > Build Project 。这样就会开始生成文件,在输出的目录中将会看到这些文件。
- 按照情况重复执行三个.jsb 文件(其它的在\resources 和\examples)。
在Build Settings标签页的底部看起有一些列表是列出输出文件的,这些就是“输出目标”,或是将多个源文件捆绑成为输出文件。其目的在于创建在用一个程序中以不同的功能区分的多个包的版本。你注意到了 ext.jsb那一项是"Everything" — 这是定义了许多人默认使用Extext-all.js的版本。你可根据自身的需求来编辑这些输出目标。按照这种方式来管理你的项目是一个不错的方式—你可将全部的JavaScript的程序代码整合到单独一个文件中去。
有时为了测试,要将JSB和最新版的SVN更新配合一齐工作,典型的工作流程是这样的:
- 从SVN上更新Ext源码到本地。
如果你编辑过任何的文件(包括.jsb文件),那么必须先删除或移动这些文件— SVN不会覆盖这些文件。 注意: 基于当前的实现, 如果你打算自定义输出的目录, 你要每次编辑这项设定因为所有的设定都保存在 .jsb 文件中,而这个文件总是由SVN更新的。该功能可能会在未来的版本中改进,实现每个项目的设置都可分别地按照已定义好的设置保存。 - 对EXT输出目录进行备份。万一出现状况也可回滚到之前的版本而无须重建。
- 打开每个 .jsb文件并生成
- 对新版本的Ext进行测试
JSB控制台(Console)
JSB亦提供方便的命令行的控制台版本。利用批处理文件Ant脚步等自动化生成版本时,Console就显得很有用。使用JSB的控制台也是非常简单的:
生成步骤
- 打开Windows的命令提示符command prompt。
- 进入JSB安装目录(或加入system path)。
- 加入参数/path 指定.jsb 文件的路径运行 JSBuildConsole.exe如需指定输出目录,须加入 /output 的参数(如不指定它会使用.jsb里面指定的默认输出路径)。 运行JSBuildConsole /?可得到所有参数的帮助。举例:
JSBuildConsole /path=c:\svn\ext\branches\ext2.0\src\ext.jsb /output=c:\inetpub\wwwroot\ext\deploy - 重复每个需要生成的.jsb文件
自动化脚本
像本文开头所提及的那样,Ext SVN Builder主要用于在随时的情况下,生成来自SVN的最新版本。 而且,对于读取.jsb格式的文件也是毫无问题的。因为这种文件是JS Builder项目的保存格式,为每个项目的发布都保存了一切的依赖关系在其中。即使这种文件是为JS Builder而设的,但是你也可以根据自身的需求修改里面的内容和SVN Builder配套使用(译注:jsb使用xml保存)。 一般来说,如需要这种层面上的应用,倒不如用JS Builder, 可能更适合你的需求,我们下一节分析。
像刚才所说的Ext SVN Builder那样,通过批处理脚步的方式使用命令行版本的JSB是提高效率的常用办法。把下面的脚本保存到一个批处理文件中(如"build-ext- 2.0.bat")并设置好相应的路径变量。路径变量之间空白符要作适当的处理。文件一旦创建好, 就可在资源管理器中双击执行或在命令行中输入build-ext-2.0执行。演示的例子会生成三个Ext的项目,并有详尽的登陆过程和会把之前生成的文件删除。
echo off
set JSB="C:\JS Builder\JSBuildConsole.exe"
set EXT_PATH="C:\SVN\Ext\branches\ext2.0"
set OUTPUT="C:\Inetpub\wwwroot\deploy\ext-2.0"
set SRC=%EXT_PATH%\src\ext.jsb
set RESOURCES=%EXT_PATH%\resources\resources.jsb
set EXAMPLES=%EXT_PATH%\examples\examples.jsb
%JSB% /path=%SRC% /output=%OUTPUT% /clean /verbose
%JSB% /path=%RESOURCES% /output=%OUTPUT%\resources /clean /verbose
%JSB% /path=%EXAMPLES% /output=%OUTPUT%\examples /clean /verbose
JS Builder Pros & Cons
|
|
| 在Windows上, 毫无疑问JSB的GUI和控制台是当仁不让的选择。Mac/Unix用户来说,Ext SVN Builder是您最佳的选择。 | |
部署
在项目开发和测试期间,你很可能会部署一次未压缩的JS文件以备调试。当你在用压缩版的JS文件时遇到了错误,-这几乎一个不可能跳过的步骤, 所给出的错误信息总是不太精确和有用。在线的Builder没有提供输出未压缩的版本。Ext SVN Builder就可选地输出标准ext-all-debug.js,大多数情况已是按照默认去做。如果你打算生成你自定义的目标版本,JSB GUI就是这样的一个方案。
一般来说,在开发过程中应坚持使用ext-all-debug.js作为一种简单的方案采用,开发最终完毕后再来制定压缩版本的输出。
有关JS压缩时的注意事项
有许多压缩、混淆JavaScript的工具可用。 JS Builder使用了JSMin(仅限语法压缩没有文本压缩),对于生成开发版本,是没有太大关系的。不过对于发布产品而言,你会考虑更好优化方案,由其 他的工具来压缩或是混淆。是否真得有效很可能就要看几个变量了,尽量尝试几种工具的组合,比较出来的结果总是有用的。举个例子,你可能会使用JSB输出一 个单个未压缩的文件,然后交给 ShrinkSafe 来负责压缩, 在最终部署之前确定一个调优的输出生成方案。
这里是一些常见的JavaScript方案:
CompressorRater 是一个专门比较这类工具的网站,并提供一个基本的基准测评以便分析确定哪种方案。
到最终发布阶段,你应该将gzip派 上用场。Gzip在服务器上(译注:会牺牲一些CPU占用比率)压缩了包括JavaScript在内的文件,使得在HTTP发送过程中是一种压缩的状态, 到达浏览器的最后一秒就会解压缩,从而节省了相当数量的传输负载(甚至对于裁减的文件亦一样),有利于你程序初始化速度的提升。
[官方教程]Templates(模板) (佚名,03-06)
[官方教程]ExtJs:Ext与RESTful Web Services (未知,01-10)
[官方教程]Manual:Core:Ext.Ajax 类 (佚名,03-06)
[官方教程][组图]Sencha Touch:新的Touch Web App重量级框架 (myext,07-06)
[官方教程]布局的初级入门 (佚名,03-06)|
推荐文章 |
|
文章点击排行 |
|
随便看看 |
ExtJs关于Ext.extend()的说明
ExtJs:表单组件初学
Templates(模板)
ExtJs:扩展与插件之间的区别
布局的初级入门
Ext3.0发布RC1版本
ExtJs:Cookie的存储
ExtJs:扩展Ext的新手教程
制定自己的EXT版本
Ext2 Overview(EXT2.0概述)
EXT 的类继承概念
Manual:Core:Ext.Ajax 类
Ext JS 3.0 RC2 发布-性能稳定,代
ExtJs:如何合理地规划一个应用程
ext 2.0 Combos 使用指南
玩EXT简单方法--firebug下调试ex
[组图]ExtJS 4 : 更快!更易用!更
ExtJs:xtype的含义
ExtJs:Localizing Ext (本地化ex
[组图]Sencha Touch:新的Touch 



