ECMA6模块系统是否减少了下载的原始代码量?

时间:2016-06-11 15:58:16

标签: module ecmascript-6

说我有以下例子......

//------ lib.js ------
export const sqrt = Math.sqrt;
export function square(x) {
    return x * x;
}
export function diag(x, y) {
    return sqrt(square(x) + square(y));
}

//------ main.js ------
import { square } from 'lib';
console.log(square(11)); // 121

当我使用SystemJS或其他模块加载器时,它是否只下载方块的JS?还是下载整个文件,包括diag? SystemJS是在客户端加载的,因此让我感到困惑的是如何工作。它不会创建更多的TCP请求并减慢一些速度吗?

我对切换到此模块模式将如何创建更小的占用空间(请求,带宽等)以及缩小和合并的JS文件感到困惑。

1 个答案:

答案 0 :(得分:1)

模块系统(任何模块系统)无法下载部分文件。它将下载整个文件并完全解析,然后,根据加载器的功能和实现,它可能会减少内存占用,只使用所需的内容。

减少带宽&请求是客户端缓存的结果。当你连接和缩小时,几个页面中存在的模块都没有被缓存,因为它们被整合到完整的连接脚本中。