2013-11-20 33 views
0

我正在开发一个extjs应用程序,它分两步启动。在开始时它弹出一个登录密码窗口,只加载必要的js资源。如果登录成功,则通过加载所有的js文件来启动视口。压缩和按需加载脚本

在登录时它加载了ext-all.js和几个app js文件。 登录后,它会加载加载所需js文件的控制器。

的问题是,我要来缩小和压缩js文件,但使用煎茶CMD工具

 

     >sencha create jsb -a index.html -p app.jsb3 
     >sencha build -p app.jsb3 -d . 
     >java -jar ycompressor.jar --type js -o app-all-compressed.js app-all.js 

当得到的APP-all.js和app-全compressed.js只包含仅在登录阶段需要资源。

然后我尝试手动构建一个jsb3文件,该文件生成缩小和压缩的post-all.js,包括通过视口(第二阶段引导)手动所需的js,然后在以这种方式成功传递登录后加载此文件:

 

     onLoginSuccess(){ 

     Ext.Loader.loadScript({ 
     url: 'post-all.js', 
     scope: me, 
     onLoad: function() { 
      //controllers loading 
      ... 

问题是,即使post-all.js被加载,结果仍然是未加载的。 资源的微细化以及在后all.js正确地压缩,但似乎需要[“...”]加载资源的unminified副本,所以我每次都装reasource 2次

任何想法?

感谢

回答

0

这是一个更容易加载眼前的一幕。没有理由加载两次。

  • Visual:即使你加载了所有的JavaScript,你只显示登录对话框。剩下的,只有在登录成功后才显示。
  • 安全性:如果您通过会话保护所有服务器资源的访问权限,恶意用户可能会显示用户界面的某些部分,但他永远无法查看任何数据或执行其他任何操作。
  • 加载时间:考虑到ExtJs库的大小,加载时间的增加将是最小的。

像这样你已经解决了你的问题,你可以享受Sencha cmd常规ExtJs部署的简单性。

+0

也许我不太清楚..我不介意一次加载所有东西,问题是sencha cmd工具正在最小化登录窗口所需的资源,即使我在index.html中包含了整个缩小的包动态机制仍然会强制重新加载未被注册的用户。关于Visual,我不想显示视口,但是由于控制器具有依赖关系(对商店,视图,模型的引用),所以在控制器加载和视口未显示时这些组件缺失。所以这就是为什么我推迟控制器加载。 – user1944934