mad*_*ox2 34 javascript ecmascript-6 es6-module-loader
是否可以从ES6中的外部URL导入javascript模块?
我试过(使用babel-node):
import mymodule from 'http://...mysite.../myscript.js';
// Error: Cannot find module 'http://...mysite.../myscript.js'
Run Code Online (Sandbox Code Playgroud)
小智 29
2022 年更新,看来至少在目前最新的 Chrome、Firefox 和 Safari 中都可以工作,只要服务器content-type: application/javascript; charset=utf-8为 js 文件提供响应标头。
使用普通 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>
Run Code Online (Sandbox Code Playgroud)
你好.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);
Run Code Online (Sandbox Code Playgroud)
这是一笔巨大的交易!因为我们现在可以和 Webpack 说再见了。我现在有点太兴奋了!
您还可以使用scriptjs,在我的情况下,它需要较少的配置。
var scriptjs = require('scriptjs');
scriptjs('https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.standalone.js', function() {
L.mapbox.accessToken = 'MyToken';
});
Run Code Online (Sandbox Code Playgroud)
小智 5
目前,没有。
有两种不同的规范:ES6 定义了导出/导入的语法。还有Loader Spec实际上定义了这个模块将如何加载。
撇开规范不谈,对我们开发人员来说,重要的部分是:
JavaScript 加载器允许主机环境(如 Node.js 和浏览器)按需获取和加载模块。它提供了一个可挂钩的管道,以允许 Browserify、WebPack 和 jspm 等前端打包解决方案挂钩到加载过程中。
这种划分提供了开发人员可以在所有 JavaScript 环境中使用的单一格式,并为每个环境提供了单独的加载机制。例如,节点加载器会使用自己的模块查找算法从文件系统加载其模块,而浏览器加载器会获取模块并使用浏览器提供的打包格式。
(……)
主要目标是使 Node 和浏览器环境之间的此过程尽可能保持一致。例如,如果一个 JavaScript 程序想要翻译
.coffee文件成 JavaScript,Loader 定义了一个可以使用的“翻译”钩子。这允许程序参与加载过程,即使某些细节(特别是从其主机定义的存储中获取特定模块的过程)在环境之间会有所不同。
所以我们依赖宿主环境(节点、浏览器、babel 等)来为我们解析/加载模块并为进程提供钩子。
| 归档时间: |
|
| 查看次数: |
42476 次 |
| 最近记录: |