从ExtJS

时间:2017-03-23 11:31:00

标签: javascript extjs

我从头开始创建ExtJS 6.2应用程序。我对这个框架很陌生,所以我可以在应用程序的脚手架上使用一些帮助。

设计的应用程序应该具有单独的插件' (在代码/包级别上)将完全分开。我们也有某种路由器,它会为每个视图名称(路径/控制器/模型/附加信息)注册一些信息。我希望它以类似于模板方法设计模式的方式工作。当我添加新的插件/模块时,我还添加了具有特定名称模式的文件 - 例如。 ModuleACMEGlobalConf。我想要ExtJS应用程序(或组件/类 - 无论如何)以某种方式扫描整个类树以查找具有此类名称模式的文件,读取它们的内容然后放入我的路由器config / global命名空间变量。

问题是 - 实现这一目标的最佳方法是什么?

更新:

我希望拥有的结构:

MyAppFolder  
---Module1  
.....MyConfigGlobal1.js  
---Module2  
.....MyConfigGlobal2.js  
---  
---Router.js  -> I want this file to scan whole 'MyAppFolder' tree, find files with *ConfigGlobal*.js pattern, read them and store in global namespace  

MyConfigGl​​obal1.js

var config = { configProp1:  'test', configProp2:  'test2'}

MyConfigGl​​obal2.js

var config = {configProp3: 'test3', configProp4: 'test4'}

Router.js

var configsMap = EXT.SOMETHING.FIND.ME.CLASSES.FROM.TREE.WITH.NAME('*MyConfigGlobal*')

我希望路由器加载所有内容(它可以在类级别,而不是文件级别) - 无论是一个类还是一百个。使用此解决方案,我不必更改Router.js - 只需在我正在创建的新模块中添加另一个配置类。所以没有必要重新测试以前的模块。

但如果我在路由器中有这样的东西:

var requiredConfigs = ['MyGlobalConfig1.js','MyGlobalConfig2.js']

我准备在路由器中将此第三个文件/类添加到此列表中,这意味着该策略已被破坏,我必须重新测试module1和module2,因为它们以某种方式对它们的共同代码进行了修改。

1 个答案:

答案 0 :(得分:1)

如果没有暴力强迫或呼叫后端,你就无法做到。这是一个浏览器限制。

原因是安全。因为如果可以的话,理论上可以使用JavaScript来扫描网站并获取目录结构,可能会在未经授权的情况下查看甚至访问文件。

最好也许最有效的方法是编写一个方法来扫描后端的Web目录,并将您在requiredConfigs想法中提到的列表作为JSON对象提供。甚至像

这样的东西
<script type="text/javascript" source="configFiles.js"></script>
index.html文件中的

将可靠地运行。然后你有一个要加载的文件列表。然后,您可以修改您的引导程序文件,使这些文件包含在您的必需列表中,这可以使用纯JavaScript完成,就在ExtJS初始化之前。