??xml version="1.0" encoding="utf-8" standalone="yes"?> 我是看Ext的定制工具后产生q个x的,JSI的依赖定义API完全可以用作一个通用的脚本定制、打包工L依赖描述语言?/p>
* Ext集成Q欢qExt用户加入Q?
一些细节的xQ?
从JSI托管cd中,选择文g/对象集,导出为单一脚本文gQ完全脱JSI装蝲环境?
也就是说Q届时JSI不仅可以作ؓ一个运行时的脚本管理框Ӟ也可以当作一个部|时的脚本定制、打包工兗?/p>
集成ExtQ一斚w可以弥补JSIlg的缺乏。另一斚w可以优化Ext的装载gq?
ext目前大小为:462,031字节QJSI2Alpha版的内核?5,140字节Q不到Ext的十分之一Q文件大均在文本压~之前记敎ͼ。集成Ext后,用户可以使用JSI导入函数Q按需导入那些面?strong>直接
初步军_使用jquery为其基础cdQprototype不必担心QJSI可以隔离脚本冲突Q不会媄响到prototype用户Q?
装蝲单元划分的两U想法:
1.按照 http://extjs.com/download/build 中描q的定制模块划分Q可能做些文件合qӞ避免零碎 件的装蝲开销Q?
2.按照Ext内部包划分(Ext 下蝲包的packages目录下好像已l做了文件合qӞ
我个没用qExtQ非常希望有Ext用户合作?/strong>
]]>
装饰器规范简介:
装饰器指的是所有拥有decorate成员Ҏ的类。一般来_可将一l装饰器归ؓ同一个包中(太复杂的装饰器,可将具体逻辑攄在其他包中)Q能后在配置文g中定义装饰包?br>
scripts/config.js $JSI.addDecoratorProvider("org.xidea.decorator","xidea","*");
装饰器类包含两个Ҏbefore、docorate分别在遍历前Q子节点未装饎ͼ和遍历后Q子节点装饰完成Q调用?br>
同时Q装饰引擎遍历时q将注入如下三个属性:
JSI现有装饰器集合简?/h1>
目前JSI2最高版?.0预览?(2007-04-16)包含如下装饰器:
日期选择控gQ参照xul datepicker标签Q支持弹出方?默认?type='pop')Q和内嵌?type='grid')
~辑器控Ӟ参照xul editor标签
Spinner控gQwindow旉日期理中,q䆾调节的控ӞQ参照backbase ?Spinner标签
TabBox(标签?控gQ参照xul tabbox标签
代码语法高亮昄控gQ参照SyntaxHighlighter的显C风?/li>
片断包含标签Q支持xpath选取文片断Q支持xslt转换
q些装饰器的演示见:
http://www.xidea.org/project/jsi/decorator/index.html
目前JSI自带的装饰器不够丰富Q而且都还是初U阶D,不够完善。现在发布的q些装饰器,主要是ؓ了演CJSI的工作方式,~码风格Q希望能吸引W三方团队、公司在q个基础上开发出自己的更加实用的装饰器集合?br>
JSI及其装饰引擎采用LGPL协议。可以商业应用,当能Q更希望能开源?br>
目前我一Z力,开发一套完整的装饰器,需时日Q这ơ将q个半成品拿出来演示Q主要是Z展示一下jsd的风|希望能吸引其他开发者,共同参与q个工程Q有兴趣丰富JS自带I装饰器集合的|友Q请msn与我联系Qjindw◎xidea。org
]]>
代码CZQ?/h2>
来一个复杂一点的完整的例?以日期选择控g的演C页面ؓ?br>
面上有: 标签装饰器QTabBox….Q、源代码高亮昄装饰器(CodeQ、日期选择装饰器(DatePickerQ、包含装饰器QIncludeQ?br>
<input type="text" name="test2" />
</d:datepicker>
<textarea name='editorText'>This is some <strong>sample text</strong>. You are using <a
href="http://www.fckeditor.net/">FCKeditor</a>.</textarea>
</d:editor>
<input type="text" name="test2" value='0' />
</d:spinner>
<textarea>alert(‘Hello World’)</textarea>
</d:code>
<d:tabs>
<d:tab>tab1</d:tab>
<d:tab>tab2</d:tab>
<d:tab>tab3</d:tab>
</d:tabs>
<d:tabpanels>
<d:tabpanel>content1</d:tabpanel>
<d:tabpanel>content2</d:tabpanel>
<d:tabpanel>content3</d:tabpanel>
</d:tabpanels>
</d:tabbox>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:d="http://www.xidea.org/taglib/decorator" xml:lang="zh_CN"
lang="zh_CN">
<head>
<script src="../scripts/boot.js"></script>
<title>DatePicker CZ</title>
</head>
<body>
<h2>DatePicker CZ</h2>
<!-- 开始标{N装饰?nbsp;-->
<d:tabbox>
<d:tabs>
<d:tab>效果</d:tab>
<d:tab>代码</d:tab>
</d:tabs>
<d:tabpanels>
<d:tabpanel>
<!-- 开始日期装饰器(内嵌? -->
<d:datepicker type='grid'>
<input type="text" name="test1" />
</d:datepicker>
<!-- 开始日期装饰器(弹出? -->
<d:datepicker>
<input type="text" name="test2" />
</d:datepicker>
</d:tabpanel>
<d:tabpanel>
<!-- 开始代码高亮显C?nbsp;-->
<d:code language="xml">
<textarea>
<!-- 开始日期装饰器(内嵌? -->
<d:datepicker type='grid'>
<input type="text" name="test1" />
</d:datepicker>
<!-- 开始日期装饰器(弹出? -->
<d:datepicker>
<input type="text" name="test2" />
</d:datepicker></textarea>
</d:code>
</d:tabpanel>
</d:tabpanels>
</d:tabbox>
<select style="margin-left:120px"><option>弹出的datepicker 可覆盖IE select</option></select>
<hr />
<!-- 开始Include装饰?包含装饰器菜?nbsp;-->
<d:include url='menu.xml' xslt="menu.xsl"></d:include>
</body>
</html>
装饰l果Q?/h2>
云想衣裳花想容-QJSIlg模型介绍Q二Q已l发布,那里有装饰过E及其原理的介绍Q?/font>
http://www.javaeye.com/topic/71425
]]>
JSI针对每一个装载的脚本都有完全独立的执行上下文。所以这个问题能?/span>JSI上彻底解冟?/span>
下面的例子,我们在同一个页面上同时使用Scriptaculous?/span> jQuery cd。证实一?/span>JSI隔离冲突功能?/span>
CZ面Q?/span>hello-jquery-aculo.htmlQ:
onclick="slidePanel('menu_block1')"q个事g函数在我们点击面板标题时触发,能后会调用Scriptaculous Effect的具体实现去实现我们需要的滑动折叠功能?br>
http://jsintegration.sourceforge.net/example/code.html
http://www.xidea.org/project/jsi/example/code.html
JSI 导入函数Q?function $import(path, callbackOrLazyLoad, target )
Z试l果更显客观Q我选择了第三方cd的装载测试:
'com.yahoo.yui.*',
'net.conio.prototype.*',
'net.fckeditor.*',
'org.jquery.*',
'us.aculo.script.*'
?2个脚本文Ӟ对于JSI来说q有诺干包定义文Ӟ?/p>
q行旉试
试脚本理后对新能的媄?影响因素有:全局变量和局部变量的查找旉差异Qeval的脚本和script标记直接插入的脚本的可能差异。(q?
个测试不h普遍性,q里我主要是试了一下浏览器对局部变量的讉K速度【JSI里面讉K变量都是装蝲单元内的局部变量】,所以故意测试了大量局部变量访
问的操作Q?
试面见:test/runtime-eff-test.html
上面的基数太,随机误差太大Q调整原始数据从新测试一遍jsiTime和scriptTime
有个奇怪的问题QJSI在装载类库时Q与传统模式相比Q肯定增加了些额外的q算Q但是,貌似JSI的同步装载模式下Q装载脚本的耗时比传l模式还(IE 表现明显Q?ZQ?/span>
ȝQ?/strong>
JSI的装载性能表现不错Q完全不必计较?
托管代码的运行性能也没有太大区别,不过Q因为。JSI托管脚本使用的变量基本都是装载单元内的局部变量(本地声明变量Q或者外部依赖的引用或值拷贝)Q所以,对于FFq类局部变量比全局变量讉K速度快不的解释引擎QJSI托管脚本可以辑ֈ更好的运行效率?/p>
Ƣ迎大家对这奇怪的现象提出自己的猜惻I我稍后脓出我Ҏ问题的看法^_^
]]>
JSI 是一?开攄?strong>无R?/strong>?脚本库管理框Ӟ内核不提供Q何具体功能,有一些功能子目Q如|页装饰引擎?/p>
更多信息h看:http://www.xidea.org/project/jsi/
q次发布的JSI2Alpha相对于以前的预览版本Q做了一ơ全面的重构Q同时对API做了些简化?/p>
我们会尽量将JSI做成与具体功能无养I专著于脚本管理)?/strong>
对于js.*.*q个cdQ做了些_?
只保留下列元?/p>
发布文g说明Q?
自该版本启,source目录不再打包?
但是在scripts目录下新增boot-with-source.js文gQ该文g中包含全部源代码的数据?
里面~码的源代码可以通过我们?a target="blank">文工具查看。让大家习惯一下这个工L使用Q)
JSA1betaQ增加了对JSI2的编译支持,同时对于普通脚本的压羃Q也增加了一些功能:
1. ant task 增加多文件分l合q?
2. swing ui 修正文g~码的bug?/p>
下蝲Q?
javaeye group: http://jsi.group.javaeye.com/shares
sourceforge: <pȝ最q好像有问题Q我的文件一直没能上传成?要过一D|间再?gt; 。。。。?
q个API也可以脱JSI使用Q只是,在编写的时候,因ؓ有了JSI的保护,我用了不少内部变量Qؓ避免可能的冲H,做了如下处理?