Improve dva models resolve
sorrycc opened this issue · comments
方案
src/models/**/*.js
为 global modelsrc/pages/**/models/**/*.js
为 page model- global model 全量载入,page model 在 production 时按需载入,在 development 时全量载入
- page model 为 page js 所在路径下
models/**/*.js
的文件 - page model 要向上查找,比如 page js 为
pages/a/b.js
,他的 page model 为pages/a/b/models/**/*.js
+pages/a/models/**/*.js
,依次类推 - 约定
model.js
为单文件 model,解决只有一个 model 时不需要建 models 目录的问题,有model.js
则不去找models/**/*.js
- maybe: 支持合并 model 和 component 的请求,避免文件过于细碎
例子
src
models
g.js
pages
a
models
a.js
b.js
ss
s.js
page.js
c
model.js
d
models
d.js
page.js
page.js
如上目录:
- global model 为
src/models/g.js
/a
的 page model 为src/pages/a/models/{a,b,ss/s}.js
/c
的 page model 为src/pages/c/model.js
/c/d
的 page model 为src/pages/c/model.js, src/pages/c/d/models/d.js
相关 issue
加到文档里吧,翻issue好麻烦
那么,两个页面共用一个model的情况该怎么弄呢
假设 a/b/c 三个页面同为 d 页面下的嵌套页面,但 a/b 都用到了模型 e, c 页面没有用到,我想要 a/b 其中一个页面加载时就加载模型 e,但 c 页面不会去加载。
目前这样会出现 a/b 各加载一次模型 e , 导致 [app.model] namespace should be unique 的问题
+1,这个加到umijs的文档里吧,我找models的注册规则找了好一会...
I have a problem same as @fattypanda. Do we have any solution?