【发布时间】:2018-11-06 19:45:41
【问题描述】:
是否可以在没有脚本标签的情况下为所述模块使用导入?
我的问题是我想根据配置文件动态加载模块,例如:
文件夹结构:
|-- main.js
|-- config.json.js
|-- modules
|-- module1.js
|-- module2.js
|-- module3.js
Index.html 头:
<script src="/config.json.js" type="module"></script>
<script src="/main.js"></script>
config.json.js:
export default {
modules : ['module1', 'module3']
}
main.js:
import config from '/config.json.js'
//Loading modules defined in config
config.modules.forEach(moduleName => {
import(`modules/${moduleName}`)
.then( module => {
console.log(`${module.name} loaded.`);
)}
})
由于模块尚未在脚本标签中定义,因此上述方法不起作用。
有没有什么方法可以使用 vanilla JS 实现这一点并保持干净?
【问题讨论】:
-
框架是用vanilla JS编写的,所以如果它在框架中是可能的,那么在JS中也是可能的。也就是说,这似乎有点像滥用模块。
-
能否动态创建脚本标签并将其附加到头部?
-
你根本不需要
<script src="/config.json.js" type="module"></script>,删除它。而是必须使用type="module"包含 importing 文件。
标签: javascript ecmascript-6 es6-modules