到目前为止,我在Google上进行了搜索,并试图找到解决方案,但目前还没有。
我知道require()仅适用于静态路径,因此我需要其他方法来解决我的问题。我找到了这个答案here,但是对于成千上万的资源却没有任何意义。
请告诉我处理这种情况的最佳方法。
背景
我有数千个包含应用程序数据的json文件,并动态声明了所有文件路径,如下所示:
export var SRC_PATH = {
bible_version_inv: {
"kjv-ot": "data/bibles/Bible_KJV_OT_%s.txt",
"kjv-nt": "data/bibles/Bible_KJV_NT_%s.txt",
"lct-ot": "data/bibles/Bible_LCT_OT_%s.txt",
"lct-nt": "data/bibles/Bible_LCT_NT_%s.txt",
"leb": "data/bibles/leb_%s.txt",
"net": "data/bibles/net_%s.txt",
"bhs": "data/bibles/bhs_%s.txt",
"n1904": "data/bibles/na_%s.txt",
.....
"esv": "data/bibles/esv_%s.txt",
.....
},
....
如您所见,文件路径包含'%s',应将其替换为正确的字符串取决于用户选择的内容。
例如,如果用户选择圣经(缩写:“ kjv-ot”)和第1章,则应导入名为“ data / bibles / Bible_KJV_OT_01.txt”的文件。
我对本机的反应还不够好,只是想知道是否还有其他方法可以处理成千上万个资源文件,并且在用户选择后一次动态地一次只需要一个。
请提出任何建议。
答案 0 :(得分:2)
代替导出平面文件,您可以导出带有参数的函数,该参数将帮助构建如下路径:
// fileInclude.js
export const generateSourcePath = (sub) => {
return {
bible_version_inv: {
"kjv-ot": `data/bibles/Bible_KJV_OT_${sub}.txt`
}
}
}
//usingFile.js
const generation = require('./fileInclude.js');
const myFile = generation.generateSourcePath('mySub');
const requiredFile = require(myFile);
然后将此项导入(或要求)到项目中,执行generateSourcePath('mysub')
以获取所有路径。