从字符串变量导入模块

新手上路,请多包涵

我需要从内存变量中导入一个 JavaScript 模块。我知道这可以使用 SystemJSWebpack 来完成。

但是我无处可以找到一个很好的工作示例,也找不到相同的文档。文档主要讨论 .js 文件的动态导入。

基本上我需要像下面这样导入模块

let moduleData = "export function doSomething(string) { return string + '-done'; };"
//Need code to import that moduleData into memory

如果有人可以指出很棒的文档

原文由 Guru Kara 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 459
2 个回答

import 语法中存在一些限制,如果不使用外部库,即使不是不可能,也很难做到。

我能得到的最接近的是使用 动态导入 语法。一个例子如下:

 <!DOCTYPE html>
<html>
<head>
<title>Page Title</title>
</head>
<body>
<script>
    var moduleData = "export function hello() { alert('hello'); };";
    var b64moduleData = "data:text/javascript;base64," + btoa(moduleData);

</script>
<script type="module">

    async function doimport() {
      const module = await import(b64moduleData);
      module.hello();
    }

    doimport();

</script>

</body>
</html>

但是,您会注意到这对构建导入代码的方式有一些限制,可能与您的需要不完全匹配。最简单的解决方案可能是在服务器上发送模块代码,以生成一个临时脚本,然后使用更常规的语法导入。

原文由 Filippo Possenti 发布,翻译遵循 CC BY-SA 4.0 许可协议

let moduleData = await import("data:text/javascript,export function doSomething(str) { return str + '-done'; }");

并测试它

moduleData.doSomething('test');

原文由 H7O 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题