vite2 提供了很多种加载 json 的方式,只是大多都是常量的参数,但是有时候我需要动态改变地址,这个怎么办呢?最后发现了 import 的另一种方法。
一般我们会用这种方式来加载 json
import json from '/json/form-test.json'
如果地址是固定的,那么非常方便,只是地址如果是变化的怎么办呢?
/**
* 通过模块ID和名称加载json文件
*/
export default function loadjson (moduleId, name, meta) {
return new Promise((resolve, reject) => {
// 加载
import(`../../../../public/json-crud/${moduleId}/${name}.json`).then((data) => {
// console.log('异步加载', data.default)
Object.assign(meta, data.default)
meta.reload = !meta.reload // 添加重新绑定的开关
resolve(meta)
})
})
}
这样就可以拼接参数了。
为啥一定要拼接呢?这个就要说到我前面做的各种控件了。
控件的属性放在了 json 文件里面,内容非常多,所以需要按照模块来分成多个文件,那么加载的时候就需要动态设置路径,这样才能够针对组件加载对应的 json 文件。
所以需要传入模块ID和文件名称,这样就不需要那么多的代码了。
另外 vite2 还提供了 import.meta.glob 方法,这个还在研究中,应该也很方便的。