ecomfe/edp

[edp-build]关于ModuleCompiler后插件的顺序

otakustay opened this issue · 3 comments

@leeight 我遇到这样的一情况:

我有些模块中依赖了tpl!xxx.tpl,用ModuleCompiler做打包,然后发现打包后的.js中的模块顺序是:

// 204行
define('error/GenericError', [
    'require',
    'tpl!178c7118.tpl.html',
    './View',
    './Action',
    'eoo'
]

// 1735行
define('tpl', [
    'require',
    'ub-ria/tpl',
    'common/config'
], function (require) {

很奇怪的是,一个模块依赖一个插件,但插件的定义却在后面

遇到的问题在于:

  1. 模板的解析依赖于tpl插件上的一系列配置(各控件的命名空间)
  2. 这些配置在N个模块中分布式进行,并没有集中在tpl插件的声明中(各业务模块管自己的控件)
  3. tpl插件不是esl本身,没有delay factory的效果,下载模板后立即解析,此时各业务模块还没执行factory,对应的配置没加上
  4. 出错了

我的感觉是,应该把插件也当作显式的依赖,放到前面去

你的意思是应该改成这样子?

// 204行
define('error/GenericError', [
    'require',
    'tpl',
    'tpl!178c7118.tpl.html',
    './View',
    './Action',
    'eoo'
]

// 1735行
define('tpl', [
    'require',
    'ub-ria/tpl',
    'common/config'
], function (require) {

重新理了下思路,这东西的本质是,在遇上tpl!xxx.html的时候,我的tpl还没有初始化完,也不知道什么时候能初始化完……

所以这个问题看来不是能通过build来解决的,我从程序上去想想办法……

这问题不是在build上,是我自己的事儿,关了