html 我是否可以从其他< script type="module">

scyqe7ek  于 2022-11-27  发布在  其他
关注(0)|答案(2)|浏览(154)

我想从另一个script标签导入。

<script type="module">
    export default "str"
</script>

<script type="module">
    import foo from "????"
    console.log(foo) // str
</script>

我应该在“???"中写什么?

dwthyt8l

dwthyt8l1#

这是不可能的。ModuleSpecifier(from后面的)必须是一个字符串,并且需要指向一个 * 独立的JavaScript文件 *。它不能引用页面上的另一个脚本标签,只能引用一个文件。
通常,页面上的<script type="module">只使用 * 一次 *,并且用于调用其他模块。例如,您通常会看到或拥有类似于以下内容的内容,而不是您的原始代码:
第一个

rjjhvcjd

rjjhvcjd2#

最好的答案是正确的,这是不可能的。但是有一个import()函数可以从一个url导入es模块。并且URL.createObjectURL()方法会通过javascript源代码创建一个url。所以解决方法是:

<!-- Avoid executing the code below by add type=text/template -->
<script type="text/template" id="test">
  export default 'foo';
</script>
<script type="module">
  const test = await import(
    URL.createObjectURL(
      new Blob(
        [document.getElementById('test').innerText],
        {type: 'application/javascript'},
      )
    )
  );
  console.log(test.default);
</script>

相关问题