0

每当我在 javascript 中导入一长串项目时,我的自然意图是将这些项目导出到单独的文件中,在我的主 javascript 文件中需要该文件,然后如果需要将它们加载到 Vue 或其他进程中,循环遍历它们并动态加载它们。

我刚刚开始使用 VueORM,需要将 ORM 模型加载到 VueORM 实例中,如下所示:

import Foo from '@/models/foo'
import Bar from '@/models/bar'

database.register(Foo)
database.register(Bar)

我的应用程序将有几十个模型,所以我想像我提到的那样从一个文件中导出这些模型,然后遍历它们并注册它们。

// main.js


import * as models from '@/models'

Object.keys(models).forEach(key => {
    database.register(model[key])
})

在我的模型中,我将每个导出为如下函数:

// models/index.js


export const Foo = () => import('@models/foo')
export const Bar = () => import('@models/bar')

这通常工作正常,但在 VuexORM 中没有加载模型。

有人可以建议从单独的文件中加载这些模型的更好方法吗?

4

1 回答 1

0

Vuex ORM 不处理动态导入。与其将它们导出为动态导入,不如使用普通的 ESM 语法简单地导出它们?

以下假设您的模型是默认导出。

// models/index.js

export { default as Foo } from '@/models/foo'
export { default as Bar } from '@/models/bar'

随后,您的 main.js 可以聚合模块:

// main.js

import * as models from '@/models'

Object.values(models).forEach(model => database.register(model))
于 2021-05-16T23:37:52.123 回答