0

我正在构建一个框架,其中我将所有 JavaScript 文件合并到一个文件中(缩小)。

例子:

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

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

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

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

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

4

2 回答 2

1

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

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

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

于 2013-10-02T06:41:53.430 回答
0

这不是javascript的工作方式。加载函数的源文件后,该函数在内存中可用。由于语言是解释的,一旦浏览器读取源文件,定义的函数就会被加载。

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

于 2013-10-02T06:34:41.880 回答