我尝试了fay-jquery,并且包含的示例test.hs文件导致了150 kb的js文件.即使关闭编译它仍然是20 kb.
我知道它必须带有运行时,stdlib和jquery包装器.
我可以告诉fay不要生成stdlib(--no-stdlib和--no-builtins标志).但我不知道如何告诉它不要包含jquery代码.
所以我的问题是,如何将这些静态部分拆分为单独的js文件并仅生成特定于模块的代码?
这样,大部分代码只会加载一次(和缓存),我可以为不同的网页创建许多较小的js文件.
是的,拆分模块是安全的,从 Fay 0.16 开始,所有模块都可以独立存在(在此之前,您仍然可以将运行时和 fay-base 分开)。为此有一些标志,--print-runtime并且--no-stdlib。优化编译(-O,这会增加输出大小,但闭包将能够更好地最小化它)。
还要记住,Web 服务器应该对其进行 gzip 压缩。这使得代码大小降至 4.5kiB。这相当不错,对吧?
您可能需要考虑将所有 JavaScript 放在一个文件中,这意味着初始加载速度较慢,但用户会将其缓存以供将来的页面加载。
文件如此大的原因是 fay-jquery 有很多 FFI 绑定,会产生大量转码信息。我认为 fay-jquery 可以在这里进行很多优化,例如使用Ptr JQuery而不仅仅是JQuery类型,或者通过弄清楚在编译时很多都是不必要的,或者在编译器的输出中更多地抽象转换。
几天前我意识到的另一个可能的问题是,输出现在在全局范围内而不是在闭包中,这可能意味着 google 闭包无法像以前一样删除冗余代码(还没有时间调查)还这个)。也许应该更改模块生成,以便为每个模块生成一个闭包。
另请参阅wiki 上的减少输出大小。
| 归档时间: |
|
| 查看次数: |
211 次 |
| 最近记录: |