当构建使用 {{cljs.js}} 命名空间 cljs 源代码时,最终的 js 文件非常大:6.4M。如 wiki 中所述:[可选自托管](https://github.com/clojure/clojurescript/wiki/Optional-Self-hosting),它主要由 {{cljs.core}} 命名空间的分析缓存组成。作为解决方案,wiki 文章建议将缓存输出到单独的文件,并在运行时加载它而不是打包到 js 二进制文件中。我想我们可以找到一个折衷的办法,即不需要用户额外做功,同时也能优化 js 文件的大小。这个想法是将缓存以原始的 clojure 数据结构的形式序列化成字符串。这样编译器就不会将缓存编译成 js(添加了大量代码),而是将其保留为字符串。在运行时,将使用 {{tools.reader}} 将该字符串解析回 clojure。
以下是提议:[点击访问](https://gist.github.com/nbeloglazov/0bf163fb62fa4b61d446)
在本地检查后,将 js 文件的大小从 6.4M 减少到 2.7M,我认为这相当不错。不利的一面是,现在 js 在运行时必须做更多的工作(解析大字符串),而今天它只需简单地读取 js 代码并执行它。但我认为这不应该是一个很大的问题。如果希望保持所有行为,可以为 {{:dump-core}} 编译器设置添加一个新的选项,类似于 {{:dump-core :string}},该选项启用缓存的字符串序列化。
这听起来合理吗?