Javascript 有没有办法捆绑本机ECMAScript模块?

Javascript 有没有办法捆绑本机ECMAScript模块?,javascript,Javascript,我想知道是否有一种标准的方式来捆绑本机ES模块 假设我有一个如此“出色”的项目(举个例子): //main.js 从“/lib.js”导入值 console.log(值); //lib.js 导出默认的“hello world”; 现在需要加载三个请求-太多了,我只需要两个-.html和.js 乍一看它看起来很简单(cat*.js>bundle.js),但在一个文件中没有多个ES模块的语法(如我所见) 我知道我可以将ES模块语法翻译成其他模块系统(如AMD),然后将它们捆绑起来,但这不是我想

我想知道是否有一种标准的方式来捆绑本机ES模块

假设我有一个如此“出色”的项目(举个例子):


//main.js
从“/lib.js”导入值
console.log(值);
//lib.js
导出默认的“hello world”;
现在需要加载三个请求-太多了,我只需要两个-.html和.js

乍一看它看起来很简单(
cat*.js>bundle.js
),但在一个文件中没有多个ES模块的语法(如我所见)

我知道我可以将ES模块语法翻译成其他模块系统(如AMD),然后将它们捆绑起来,但这不是我想要的

我很好奇只通过本机模块特性来实现这一点。尽可能简单和手工制作

有办法做到这一点吗?也许至少有个建议


谢谢。

汇总
网页
等本机理解并可以捆绑ES模块

还支持ESM作为输出格式。您的示例是一个简单的脚本,但如果您的输入模块中有导出,它将保留它们。

随着HTTP/2的出现及其管道和多路传输请求的能力,捆绑的需求大大减少。在中提到的内容即使在今天仍然适用。@Hereticsmonkey我同意HTTP/2降低了捆绑的重要性。但并非最终如此。从我的观点来看,捆绑仍然是客户端模块系统中非常重要的一部分,我很惊讶ES规范中没有类似的东西。感谢您的回答和示例!汇总从我的模块构建一个ESM,对吗?模块隔离(在更复杂的系统中)是什么意思?您所说的“模块隔离”是指一个文件可以包含多个可以单独导入的模块源?我不知道有任何这样的文件格式,在web上HTTP/2应该可以解决这个问题。(它可以构建ESM,但是…)如果在
中使用捆绑包,它不需要是一个模块。即使它
export
ed了一些东西,也不像另一个脚本是
import
ing它创建另一个简单的示例(bit.ly/2tsr9Ry)。正如我所料,隔离是通过一些丑陋的手段实现的(@shau kote Ah,是的,Rollup使用通常的transpiler技巧适当地保存了有关范围、提升、评估顺序等的指定模块行为。
<!-- index.html -->
<script type="module" src="./main.js"></script>

// main.js
import value from "./lib.js"

console.log(value);

// lib.js
export default 'hello world';