Dva中mock/models的合并

733 阅读1分钟

介绍

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));