在ExtJS 4应用程序之间共享模型,视图和控制器

时间:2011-08-04 20:04:53

标签: model-view-controller extjs4

现在,我正在开发一个由多个屏幕组成的遗留Web应用程序,每个屏幕执行一个单独的功能。我正在使用MVC方法将几个屏幕转换为EXTJS 4。为了隔离我的更改的影响,因为我们没有时间一次转换整个应用程序,我已经将两个屏幕转换为两个独立的EXTJS 4应用程序。每个屏幕现在都有自己的文件夹,我在其中使用适当的文件结构和app.js文件设置应用程序。

我的问题是:在我继续开发时,我可能想在另一个应用程序中使用来自一个应用程序(屏幕)的模型。如何在应用程序之间共享模型,视图和控制器?什么是最好的方法?

仅供参考,我正在使用自动装载将所有内容都拉进去。

由于

2 个答案:

答案 0 :(得分:2)

我不会在生产中使用自动加载,因为它会生成许多HTTP请求以获取所有文件,这会降低页面加载速度。这在Google's Page SpeedYahoo's Best Practices for Speeding Up Your Web Site已有详细记录。

最佳做法是在部署应用程序时预处理资源,并生成单个javascript文件,其中包含以单个(GZIP)压缩响应发送的所有内容。这项工作有几种工具,但它在很大程度上取决于您的工具链。例如,您可以查看SO问题Best JavaScript compressor以获取各种压缩器的建议(我使用Jammit)。

如果您的工具链中有一个灵活的可配置JavaScript压缩器,您可以设置一个共享文件夹,其中包含您的公共文件,例如modelstores和一些libs。这些现在包含在不同项目的构建中。

如果您有充分理由提供单个javascript文件,则可以使用git这样的良好版本控制系统并使用submodules。对于这种方法,您将拥有一个用于公共文件的单独存储库。这会降低页面速度,降低子模块的开销。

作为最后一个解决方案,您可以在文件系统上使用symbolic link将公共文件夹链接到不同的其他项目。

答案 1 :(得分:1)

以下是萨基在Sencha Forums上对我说的话:

  

一个页面上的多个应用程序,或Ext MVC的子应用程序   但是,开发人员正在努力解决这个问题   功能,AFAIK。这种实施很可能也会解决   (子)之间重用模型,视图和控制器的问题   应用,我希望。

更具体地说,关于链接多个应用程序:

  

我只是软链接MVC组件的文件就是这种情况。有   现在他们之间没有逻辑或功能连接,只有我想重用   已写的文件,对吗?