是否可以在javascript或es6中从cdn请求或导入资源

是否可以在javascript或es6中从cdn请求或导入资源,javascript,ecmascript-6,es6-modules,Javascript,Ecmascript 6,Es6 Modules,使用svelte编译器从合成文件(字符串)生成代码。它的输出也是一个字符串,但它添加了来自svelte本身的导入语句。我需要从生成的代码中删除所有这些导入语句,但我还需要获取这些导入语句,并以可以从cdn导入/要求的方式添加它们 我打算将这些导入语句解析为如下内容: import { SvelteComponent, append, etc. } from "svelte/internal"; const { SvelteComponent, append, etc. }

使用svelte编译器从合成文件(字符串)生成代码。它的输出也是一个字符串,但它添加了来自svelte本身的导入语句。我需要从生成的代码中删除所有这些导入语句,但我还需要获取这些导入语句,并以可以从cdn导入/要求的方式添加它们

我打算将这些导入语句解析为如下内容:

import { SvelteComponent, append, etc. } from "svelte/internal";
const { SvelteComponent, append, etc. } = svelte.internal;
并将其替换为以下内容:

import { SvelteComponent, append, etc. } from "svelte/internal";
const { SvelteComponent, append, etc. } = svelte.internal;

我最初的想法是,如果我可以将代码内联添加到js模块中,以便从普通js/es6中的cdn导入/需要脚本(在本例中为svelte)。该项目是用react编写的,我已经编写了自己的钩子来动态加载脚本,但我认为需要将其添加到iframe的窗口中。但是回想一下模块是如何工作的,我相信将脚本添加到父窗口也可以工作。因此,我的问题是,如何将从cdn导入的脚本添加到javascript模块中?

答案取决于主机环境。对于浏览器,答案是肯定的(假设您正在导入的资源与正在导入的资源兼容)。(相反,对于Node.js,答案是否定的,至少目前是这样。)这两种环境中的模块说明符都可以是完整的URL。请注意,通过
导入加载的模块脚本受同源策略的约束,因此另一端必须为它们提供适当的CORS头,以允许您的站点使用它们。(CDN通常会这样做。)

下面是一个浏览器示例,导入Vue.js的JavaScript模块版本:


从导入{version}”https://cdnjs.cloudflare.com/ajax/libs/vue/3.0.5/vue.esm-browser.js";
console.log(版本);

是的,这是可能的:,谢谢T.J。这是我制作的在线代码编辑器,因此环境将是浏览器。您是否有一个示例或链接,我可以从中获得更多信息?@cbutler-web平台的模块说明符由HTML规范定义,这可能是最好的选择。对于一般情况很有用。再次感谢。要明确的是,这个代码段是在标记中编写的,而不是javascript文件,对吗?我想我需要编辑我的问题,因为它已经关闭。但是我可以澄清我的用例,并且更加具体。我会更新的,我只是想避免被过度使用complicated@cbutler-Stack Snippets editor的JavaScript面板添加了一个没有
type=“module”
script
标记。但您只能在模块中使用
import
。这就是为什么我在编辑器的HTML面板中显式地编写了
脚本
标记的原因。但是脚本标签中的所有内容都是JavaScript(现代的,模块JavaScriot)?太容易了!谢谢T.J。!我会测试一下。顺便说一句,我之所以需要它,是为了能够在我正在制作的代码编辑器中支持svelte。如果您愿意,请查看:)