【发布时间】:2016-05-12 19:17:08
【问题描述】:
我想<script type="module"> 的一个流行用例将是加载一个“主模块”,通过import 语句树解决项目的所有依赖项。但是,在 Web 上,这似乎会造成加载瓶颈,因为浏览器在解析它们的依赖项以找到 import 之前无法知道要下载哪些脚本。将此与在最初交付的 HTML 文件中的单独 <script> 元素中引用所有项目脚本的情况进行对比。脚本可以在解析 HTML 的同时和之后并行下载。
<script type="module"> 会造成加载瓶颈吗?一个页面上的多个<script type="module">元素是否可以相互提供依赖关系,因此浏览器不一定需要下载和解析JavaScript来确定下一步要下载什么?
我想这将是 HTTP/2 PUSH_PROMISE 的一个用例?服务器需要静态分析 JavaScript 文件并提前确定它们的依赖关系。但是即使可以告诉浏览器提前下载模块,我想知道在解析 import 之前,推送的模块是否仍然不会执行。至少对于<script>,我知道他们会一有机会就执行。
【问题讨论】:
-
我想 HTTP2 可以用来缓解大部分问题。但我很好奇这个问题的答案。
-
目前没有浏览器支持 ES6 模块。你不觉得现在问这个问题有点太早了吗?
-
@Gothdo 恰恰相反,如果这个问题还没有得到解答,并且 ES6 模块解析是一种去优化,那就有点晚了;标准化、实施和采用工作将花费在我们已经拥有的技术上(至少在高性能生产场景中)。我希望这里已经投入了一些想法,并且原型证明
<script type="module">匹配或优于<script>。
标签: javascript html performance networking module