gwt延迟加载
回答
我认为这就是你要找的。
<body onload="onloadHandler();">
<script type="text/javascript">
function onloadHandler() {
if (document.createElement && document.getElementsByTagName) {
var script = document.createElement('script');
script.type = 'text/javascript';
script.src = './test.js';
var heads = document.getElementsByTagName('head');
if (heads && heads[0]) {
heads[0].appendChild(script);
}
}
}
function iAmReady(theName) {
if ('undefined' != typeof window[theName]) {
window[theName]();
}
}
function test() {
// stuff to do when test.js loads
}
</script>
- test.js
iAmReady('test');
测试,在Firefox 2,Safari浏览器3.1.2工作于Windows,IE 6和Opera 9.52。我认为这些版本的最新版本应该也能工作。
请注意,加载是异步的。如果您在调用appendChild()
后立即尝试在加载的文件中使用函数或变量,它很可能会失败,这就是为什么我在加载的脚本文件中包含一个回调函数,该脚本文件强制在脚本完成时运行初始化函数加载。
你也可以在加载的脚本底部调用一个内部函数来做一些事情。
由于您加载的模块需要的所有Java代码都被编译为单个JavaScript文件,因此GWT并不支持此操作。这个JavaScript文件可能很大,但对于非平凡的模块来说,它比等效的手写JavaScript小。
您是否有单一生成的JavaScript文件太大的情况?
你可以想象将你的应用程序分成多个GWT模块,但你需要记住,这将限制你在模块之间共享代码的能力。因此,如果一个模块具有引用与另一个模块引用的相同类的类,则通用类的代码将包含两次。
有效地,这些模块创建它们自己的命名空间,类似于在Java中通过两个单独的类加载器加载相同的类时获得的命名空间。实际上,因为GWT编译器只在代码中引用的方法中进行编译(即,它会执行死代码消除),所以可以想象,一个模块将包含从公共类到另一个模块的不同方法子集。
因此,您必须权衡是否将它全部加载为一个单片模块,并且首次执行前期命中比拥有多个模块的累积代码大小可能明显高于单模块方法要好。
鉴于GWT的设计使得用户只需加载一次相同版本的模块(之后进行缓存),在大多数情况下,最好先打一次。
尝试使用iPhone或iPod touch的“一种前沿”方法加载大型GWT应用程序......它永远不会加载。
该模块方法是一个但更复杂的管理,但更好的小型客户端设备。
现在,我如何从我的Java代码加载模块而不使用iFrame?
- 埃里克
退房GWT.runAsync以及下面的谷歌I/O谈话,其中进入在GWT项目的JavaScript延迟加载。
- 1. 延迟加载
- 2. 延迟加载
- 3. 延迟加载
- 4. 关于在GWT和GWT-Ext中延迟加载的信息
- 5. 的jquery - 延迟加载 - 设置延迟
- 6. 延迟加载3.2.6
- 7. nhibernate延迟加载
- 8. 延迟加载MirrorType
- 9. RecyclerView延迟加载
- 10. 延迟加载DLL
- 11. Firebase延迟加载
- 12. UIwebview延迟加载
- 13. 延迟加载CollectionViewSource?
- 14. Laravel延迟加载
- 15. Firebase延迟加载
- 16. 延迟加载XmlDocument
- 17. 延迟加载MEF?
- 18. 隐式延迟加载vs显式延迟加载
- 19. 春库和延迟加载
- 20. NUnit延迟加载TestCaseSource
- 21. SQLAlchemy.declarative和延迟列加载
- 22. 延迟加载在highcharts
- 23. 休眠延迟加载
- 24. 延迟加载crypto ++ cryptopp.dll
- 25. 延迟广告加载
- 26. jquery页面加载延迟
- 27. 延迟加载程序
- 28. 在node.js中延迟加载
- 29. Laravel延迟加载优化
- 30. 延迟加载从XML
学究气:*在,*部分 – GEOCHET 2008-09-16 13:55:34