介绍
dva 首先是一个基于 redux 和 redux-saga 的数据流方案,然后为了简化开发体验,dva 还额外内置了 react-router 和 fetch,所以也可以理解为一个轻量级的应用框架。
mock文件合并
mock中有多个接口定义导出,都需要在.roadhogrc.mock.js中引入,文件特别多,引入容易遗忘,建议合并引入。
import fs from 'fs'; // filesystem node提供的文件对象
import path from 'path';
const mock = {}
fs.readdirSync(path.join(__dirname + '/mock')).forEach(function (file) {
if(file.match(/\.js$/)){
Object.assign(mock,require("./mock/"+file)); // { require("./mock/user.js"),.... }
}
})
export default mock;
models的合并(redux)
多个model文件需要在入口函数index.js中引入,如下
app.model(require('./models/example').default);
app.model(require('./models/product').default);
当文件越写越多时,引入会显得代码重复,所以通过合并在文件中models/index.js
const context = require.context('./', false, /\.js$/);
export default context
.keys()
.filter(item => item !== './index.js')
.map(key => context(key));
在入口文件index.js中引入:
require("./models").default.forEach(key => app.model(key.default));