-
Notifications
You must be signed in to change notification settings - Fork 170
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
er默认template设定是否可以改一下 #109
Comments
那你希望是 |
ignore |
首先我这里除了我以外还有另一个朋友也出现过同名target现象。 |
|
之前那个好像说错了,esl加载了几次我忘记了,好像应该是加载了一次,但是每次只要碰到require('er/template!******')这种etpl就会自动去编译,所以如果有同一个模板被require两次,就会出现这个东西被编译两次,而且编译应该是在require的时候编译的,所以基类与子类tpl是同一个就会造成tpl文件被编译了两次,就会造成报错说target is exist。 |
我遇到过这种情况,通常是开发环境到线上环境的build过程产生的。 开发环境下,如果不同的module,加载相同的template resourece,并且template里的target name是唯一的话,是不会出现 但是,build的过程会合并模版。主模块可能会require('tpl!combine.html'),然后由于体积大小考虑,部分没合并的模块会require('t/l!mytpl.html')。如果mytpl.html和combine.html里,包含同样的target,就会出 etpl的升级,其实是个权宜之计,在遇到这种问题的时候,如果可以保证同名target内容完全相同,可以通过设置etpl的option来绕开这个问题,此时无论是 另外,如果设置了 但是根本上来说,还是应该build的template merge环节解决这个问题,或者,在build阶段设置这个option |
这么说我就明白点了,但这里的核心问题是:
看上去应该是 另外一个方法,我们把 至于build时改options我觉得有些复杂了,没必要 |
@errorrik 说得那个状况是我朋友遇到的,我遇到的状况就是老代码里面,Module A跟Module B里面引用了同样的tpl,这里比如是tpl.html,然后在这个tpl里面有两个target,Module A用的是target A,Mudule B用的是target B,于是乎因为同一个tpl.html因为被编译了两遍,所以报错,当然我这个问题我可以通过把tpl拆分成两个来解决这个事儿,不过我觉得既然etpl里面有了target这么个东西,那么其实按照开发者的理解,我虽然require了一个tpl文件,但是两个模块分别调用两个target,按理来说不应该给我抛出target is exist这个问题,所以我想说的是,是否可以通过延后模版编译,等到真正确定Module调用的是哪个target的时候再编译,而不是再require的时候就直接预编译 |
理论上,如果A和B里面写的 能有具体的可复现的代码(最好简单点)吗,说不定是 |
今儿有点忙,我明后天按照原来那个老代码写一个简单的例子上传一下吧 |
辛苦,因为这好像已经不是仅仅涉及ER、ETPL的问题了,所以还是要搞清楚 |
我上次查过,不是esl编译了两遍。不过可以再查一下,不一定是一样的场景。 不过,这个问题本质上是resource id和target name的map问题,edp build是基于文件处理的,中间并不涉及模板解析。看了etpl需要有开放parse的npm了 发自我的 iPhone
|
前两天看见etpl已经升级,是不是er的template里面可以把默认的设定改一下,防止各种target is exist的bug?
The text was updated successfully, but these errors were encountered: