ES6的模块化 语法 import 支持从远程url 导入 js模块吗?

问题:

https://codepen.io/vuejs-examples/pen/WNYbaqo
这个是 vue官方的一个demo,在js文件中有这样

import { createApp, ref } from 'https://unpkg.com/vue@3/dist/vue.esm-browser.js'

有些好奇import能从url导入吗?
而且import 也分为 静态import和动态导入import()函数

我了解到的

然后我就问gpt,沟通下来,大致的意思是:
1.es6 模块import本身不支持import从url导入

2.在浏览器环境中,某些浏览器支持 import从url中导入。
ES6的模块化 语法 import  支持从远程url 导入 js模块吗?

3.在非浏览器环境中 静态import不支持从url导入,可以使用动态import() 从url导入

ES6的模块化 语法 import  支持从远程url 导入 js模块吗?

尝试发现

1.浏览器环境中 静态import和动态import都支持从url导入

2.nodejs环境中 静态导入和动态导入都不支持从url导入
下面的这个项目演示了 nodejs 中使用es6模块的静态导入和动态导入

https://stackblitz.com/edit/stackblitz-starters-wgqzse?file=i...

问题

谁来帮忙解释一下关于 import url的问题


回答:

首先题主对 URL 的理解太过狭隘。

谁说只有 http://https:// 开头的才叫 URL 的呢?file://ftp://smtp:// 这些开头的,它都是 URL 呀,它们所使用的协议不同。我们在本地磁盘路径上使用的就是 file:// 这种 URL,只不过大部分场景下都不需要我们手动输入 file:// 这个 Scheme 而已。

其次 Node.js 里虽然默认只支持 file://(不指定时默认就是它)、node://data:// 这三种 Scheme,所以你写 http://https:// 它无法识别。但 v17.6.0+ 之后引入了一个实验性特性 --experimental-network-imports,就允许从 HTTP 和 HTTPS URL 导入模块。该特性到今天仍然是试验状态,需要手动开启。

最后为啥浏览器里默认支持 http://https:// 了呢?因为它是浏览器…… 不像 Node.js 一开始只是为本地磁盘系统设计的,所以一开始只考虑了 file:// 这种协议;而浏览器天然就是要运行在网络上的,当然天然支持 http://https:// 协议了。

以上是 ES6的模块化 语法 import 支持从远程url 导入 js模块吗? 的全部内容, 来源链接: utcz.com/p/934858.html

回到顶部