ES6:从 URL 导入模块

新手上路,请多包涵

是否可以从 ES6 中的外部 url 导入 javascript 模块?

我试过(使用 babel-node):

 import mymodule from 'http://...mysite.../myscript.js';
// Error: Cannot find module 'http://...mysite.../myscript.js'

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

阅读 607
2 个回答

2018 年更新:模块加载器规范现在是 ES 规范的一部分 - 您所描述的内容是允许的并且可以使用 <script type="module"> 在浏览器中和自定义 --loader 与 Node.js 作为以及 Deno,如果你喜欢的话。


模块加载器规范和导入/导出语法是分开的。所以这是模块加载器的一个属性(不是 ES 规范的一部分)。如果您使用支持 SystemJS 等插件的模块加载器。

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

2022 年更新,目前看来它至少在最新的 Chrome、Firefox 和 Safari 中有效,只要服务器为 js 文件提供 content-type: application/javascript; charset=utf-8 的响应标头。

使用 vanilla web 服务器尝试这两个文件:

索引.html

 <!DOCTYPE html>
<html lang="en-US">
<head>
   <meta charset="utf-8">
   <title>Hello World</title>
   <script type="module" src="./hello.js"></script>
</head>
<body>
</body>
</html>

你好.js

 import ip6 from 'https://cdn.jsdelivr.net/gh/elgs/ip6/ip6.js';

const el = document.createElement('h1');
const words = "::1";
const text = document.createTextNode(ip6.normalize(words));
el.appendChild(text);

document.body.appendChild(el);

这是一个巨大的交易!因为我们现在可以和 Webpack 说再见了。我现在有点太兴奋了!

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

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