异步加载 JavaScript 函数

Asynchronous loading JavaScript functions.

本文关键字:函数 JavaScript 加载 异步      更新时间:2023-09-26

我正在构建一个框架,其中我已将所有JavaScript文件合并为一个文件(minify(。

例:

   function A() {} function B() {}

通过缩小的文件,我想异步加载函数并在完成工作时从 HTML 中删除。

示例:在需要时加载函数 A,但不需要函数 B。

我见过一个框架 Require.js但它根据需求异步加载 JavaScript 文件。

是否有任何框架可以按需加载在同一js文件中定义的JavaScript函数。

串联的缺点是,您对给定页面加载中包含的内容进行较少的细粒度控制。解决方案是,不是创建一个级联文件,而是创建可以更模块化地包含的功能。因此,您不需要在可能只使用几个特定功能的页面上使用所有 JS。这实际上也可以是速度上的胜利,因为只有一个JS文件可能无法利用浏览器的6个并发连接。此外,一旦SPDY被完全采用,一个大文件的性能实际上将低于更小的文件(因为连接可以重用(。然而,缩小仍然很重要。

综上所述,您似乎要求一些难以实现的东西。当浏览器加载脚本时,它会立即被解析并执行。然后您无法加载文件...仅加载文件的一部分。通过连接,您将自己限制在那个大有效载荷上。

可以通过将脚本

包装在块注释中,然后从脚本节点访问它并eval()它来延迟执行......但这似乎不是你要问的。但是,如果您想在不锁定 UI 的情况下预加载模块,这可能是一个有用的策略。

这不是javascript的工作方式。加载函数的源文件时,该函数在内存中可用。由于语言是解释的,因此定义的函数将在浏览器读取源文件后立即加载。

最好的办法是使用 Require.js 或类似的东西,如果你想有明确的依赖链。