Open Exodia opened 9 years ago
这会导致AMD的依赖关系丢失了,那么我们在哪里去保证TableRichSelector
一定在CustomControl
之前得到加载?
controlProvider.js 中会加载所有的控件
当然这会导致所有控件都加载进来,不清楚是否有业务端只需要其中一部分控件
controlProvider.js 中会加载所有的控件
确认这不会导致controlProvider.get
变成一个异步的方法?
或者你是打算在controlProvider
里显式地require
所有控件吗?
我打算显示 require- -
我对这个事比较犹豫了,我的主要考虑是这样的:
type
的控件同时存在并且根据系统2选1,比如你的ub-ria-sidebar
也放进controlProvider
里的话就会直接出错了controlProvider
呢?系统里是不是会有一个继承ub-ria
的controlProvider
来额外再把业务控件引过来呢所以总得来说我不支持这个玩法
从长远来看,你提的肯定不是一个最完善的解决办法,比如在不直接需要父类型(比如我用super()
就不会直接需要父类型)的前提下,我可以把esui
的整个流程init
打造成异步的,并增加async esui.define(Constructor, parentType)
的方法,和init
结合一起能对外也没有影响地解决问题。当然我现在没想清楚只是说说大概的,init
的异步化是早晚得做的事情
在我们的业务端模块中,经常出现 require('ub-ria-ui/xxxConrol'), require('ub-ria/xxxControl');
而 ub-ria-ui 和 ub-ria 的控件又经常变动,当这些控件变化时,需要更改ub-ria/tpl.js,同时也要更改业务端模块的这些路径,这对业务端透明升级带来了部分麻烦,一个很实际的场景就是 selector 系列的控件路径变了,而业务端有控件继承此类控件,导致了需要变更代码,希望提供 ControlProvider 单例类来解决这样的问题。
大概业务端对控件的依赖会变成这样:
同时 View 层的代码也不需要显示的加载对具体控件的依赖,仅仅require('ub-ria/controlProvider')即可。