|
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
|---|---|
| 作者 | 正文 |
|
时间:2007-10-20 关键字: EXT AJAX
Ext2.0推出之后,Ext绝对成了开源js ui里面的王者,也构思了了一下全面使用ext的可行性。 在原来使用1.0的时候,其实就是用了一下Ext的ui,把form变得漂亮点,用点grid。 现在想全面使用ext,把整个项目做成OAOP的模式,但是在制作中发现,由于页面只有一个(OAOP),导致一个页面要引入大量的js,哪怕只是打开使用一个功能,也要引入很多js。 比如,应用中又一个用户列表,那你可能就要写一个打开用户列表的js,那要是有角色列表,资源列表。。。。呢。 一个页面要引入太多js了,就算是压缩也绝对不划算。 向大家取取经,看看大家都是怎么解决这个问题。 声明:JavaEye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
|
|
| 返回顶楼 | |
|
时间:2007-10-20
(1)尽量不使用ext-all.js,而使用需要的分包
(2)延迟加栽使用的js,避免使用页面script include,大致写成这样:http://www.javaeye.com/topic/81618?page=4 |
|
| 返回顶楼 | |
|
时间:2007-10-20
Jack写的那个JS Builder:打包->生成压缩/debug 顶用!
|
|
| 返回顶楼 | |
|
时间:2007-10-20
ls 我看你的那个$import应该是ajax引入script文件,并且eval把。 是同步ajax执行? |
|
| 返回顶楼 | |
|
时间:2007-10-20
sp42 写道 Jack写的那个JS Builder:打包->生成压缩/debug 顶用!
你是说吧所有的js压缩,然后一起引用了,那样很多js不用的都要引入了,不划算。 我其实最近研究了一个模式,采用action来方式来驱动,然后ajax读取要执行的js文件。 |
|
| 返回顶楼 | |
|
时间:2007-10-20
如果希望按要求导入,理论上可以使用JSI。
我也在数月前放出话来,要在下一个版本中集成Ext,只是一直没机会兑现:( 仍外,文件被分成很多小块,也未必是件好事。 to:Sean220 从你的使用代码来看,你用的是即时装载。而不像你说的延迟加载。 使用即时装载最大的弊端是,引起浏览器阻塞,造成假死现象。 局域网内使用还可一,放公网上就麻烦了。 不同装载模式优劣对比: http://jindw.javaeye.com/admin/show/66702 |
|
| 返回顶楼 | |
|
时间:2007-10-20
期待JSI对Ext的集成,学习一下.
其实异步加载script,我自己也实现了一个轻量的解决办法. |
|
| 返回顶楼 | |
|
时间:2007-10-20
jindw 写道 如果希望按要求导入,理论上可以使用JSI。
我也在数月前放出话来,要在下一个版本中集成Ext,只是一直没机会兑现:( 仍外,文件被分成很多小块,也未必是件好事。 to:Sean220 从你的使用代码来看,你用的是即时装载。而不像你说的延迟加载。 使用即时装载最大的弊端是,引起浏览器阻塞,造成假死现象。 局域网内使用还可一,放公网上就麻烦了。 不同装载模式优劣对比: http://jindw.javaeye.com/admin/show/66702 看了这位仁兄的blog,我觉得像你这种理解的第三种异步加载是不是有点过了 实现以下这样勉强能接受: $import("example.codedecorator.Code",function(Code){ var code1 = new Code(); code1.id = "libCode"; code1.decorate(); }) 实际上重点还是在js的组织很分包,否则都像Ext-all那么大的500k js,即使用你这种方式用户等待的时间还是一样的,而如果有良好的分包,即使使用同步$import效果也是一样的。 |
|
| 返回顶楼 | |
|
时间:2007-10-20
Sean220 写道 jindw 写道 如果希望按要求导入,理论上可以使用JSI。
我也在数月前放出话来,要在下一个版本中集成Ext,只是一直没机会兑现:( 仍外,文件被分成很多小块,也未必是件好事。 to:Sean220 从你的使用代码来看,你用的是即时装载。而不像你说的延迟加载。 使用即时装载最大的弊端是,引起浏览器阻塞,造成假死现象。 局域网内使用还可一,放公网上就麻烦了。 不同装载模式优劣对比: http://jindw.javaeye.com/admin/show/66702 没看到我那个例子是有函数里写$import语句么?怎么会是即时装载? 只有执行函数时才会装载,但我那个例子,如果不把Ext的核心包先$import是没办法跑的 这里说的即时加载是同步加载的概念,我们探讨的是,你的import是同步还是异步加载, (肯定是同步的) |
|
| 返回顶楼 | |
|
时间:2007-10-20
我认为实现$import机制至少不能对用户编程有过多要求,比如你的延迟同步按需装载,还不能同一个script标签里继续编码,那这种方法我个人认为比较难以接受。特别是在一些函数里需要动态import就没办法使用。
你考虑的第二种方法,就是异步回调的方法,我也曾经设想过,但最终实现为同步,一方面考虑设计简单化,一方面为了实现嵌套$import时候代码能正常运行. 比如:$import("A")调用A.js 那么如果A.js里也有一句$import("B") 我当时没想到更好的办法解决这种引用的问题。但如果简单地做成同步$import就没问题。 而我的初衷是为了实现去除js文件之间关联性,不需要在调用者页面去维护这种依赖关系,而由各个js里自己使用$import指定,有点像java的思路,A只引用B,而不关心B文件需要引用那些文件才能运行。当然相同js只需要$import一次的机制肯定得保证。 所以可能侧重点和你考虑的问题出发点不太一样,当然我的主要应用场景在LAN里面。 |
|
| 返回顶楼 | |









