我从头开始创建ExtJS 6.2应用程序.我对这个框架很新,所以我可以使用脚手架的应用程序.
设计的应用程序应该具有单独的"插件"(在代码/包级别上)将完全分离.我们也有某种路由器,它会为每个视图名称(路径/控制器/模型/附加信息)注册一些信息.我希望它以类似于模板方法设计模式的方式工作.当我添加新的插件/模块时,我还添加了具有特定名称模式的文件 - 例如.ModuleACMEGlobalConf.我想要ExtJS应用程序(或组件/类 - 无论如何)以某种方式扫描整个类树以获取具有此类名称模式的文件,读取它们的内容然后放入我的路由器config/global namespace变量.
问题是 - 实现这一目标的最佳方法是什么?
更新:
我想要的结构:
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
MyConfigGlobal1.js
var config = { configProp1: 'test', configProp2: 'test2'}
Run Code Online (Sandbox Code Playgroud)
MyConfigGlobal2.js
var config = {configProp3: 'test3', configProp4: 'test4'}
Run Code Online (Sandbox Code Playgroud)
Router.js
var configsMap = EXT.SOMETHING.FIND.ME.CLASSES.FROM.TREE.WITH.NAME('*MyConfigGlobal*')
Run Code Online (Sandbox Code Playgroud)
我希望路由器加载所有东西(它可以在类级别,而不是文件级别) - 无论是一个类还是一百个.使用此解决方案,我不必更改Router.js - 只需在我正在创建的新模块中添加另一个配置类.所以没有必要重新测试以前的模块.
但如果我在路由器中有这样的东西:
var requiredConfigs = ['MyGlobalConfig1.js','MyGlobalConfig2.js']
Run Code Online (Sandbox Code Playgroud)
我即将在路由器中将此第三个文件/类添加到此列表中,这意味着该策略已损坏,我必须重新测试module1和module2,因为它们以某种方式对它们共同的代码进行了修改.
如果没有暴力破解或调用后端,你就不能。这是浏览器的限制。
原因是安全。因为如果可以的话,理论上人们可以使用 JavaScript 扫描网站并获取目录结构,可能会在未经授权的情况下查看甚至访问文件。
最好的、也许也是最有效的方法是编写一个方法来扫描后端的 Web 目录,并以requiredConfigsJSON 对象的形式提供您在想法中提到的列表。甚至像
<script type="text/javascript" source="configFiles.js"></script>
Run Code Online (Sandbox Code Playgroud)
在你的index.html文件中将可靠地工作。然后您将获得要加载的文件列表。然后,您可以修改引导文件,使这些文件包含在您所需的列表中,这可以在 ExtJS 初始化之前使用纯 JavaScript 完成。
| 归档时间: |
|
| 查看次数: |
215 次 |
| 最近记录: |