我正在构建一个框架,我将所有JavaScript文件合并到一个文件中(缩小)。
示例:
function A() {} function B() {}
通过缩小文件,我想加载异步函数,并在完成工作后从HTML中删除。
示例:在需要时加载函数A但不是函数B.
我见过一个框架Require.js,但它根据需要加载JavaScript文件异步。
是否有任何框架可以按需加载JavaScript函数,这些框架在同一个js文件中定义。
答案 0 :(得分:1)
连接的缺点是,您对给定页面加载所包含的内容的细粒度控制较少。对此的解决方案是,创建层的功能,而不是创建一个连接文件,可以更加模块化地包含它们。因此,您不需要在页面上只需要使用一些特定功能的所有JS。这实际上也可以是速度上的胜利,因为只有一个JS文件可能无法利用浏览器6并发连接。此外,一旦SPDY被完全采用,一个大文件实际上将比更小的文件更低性能(因为连接可以被重用)。然而,缩小仍然很重要。
所有这一切,似乎你要求的东西有点难以实现。当浏览器加载脚本时,它会立即被解析并执行。您无法加载文件然后...只加载文件的一部分。通过连接,您将自己限制在那个大的有效载荷上。
可以通过将脚本包装在块注释中,然后从脚本节点访问它并eval()
来延迟执行...但这看起来不像你要求的那样。但是,如果您想在不锁定UI的情况下预加载模块,那么它可能是一种有用的策略。
答案 1 :(得分:0)
这不是javascript的工作方式。加载函数的源文件时,该函数在内存中可用。由于语言被解释,因此一旦浏览器读取源文件,就会加载定义的函数。
如果你想拥有明确的依赖链,最好的办法是使用Require.js或类似的东西。