manbetx手机版登陆零到嗡 - 5法

在这一部分,我们将在应用程序的构建配置定睛一看,发现它可以为我们做些什么。的源代码上可以找到GitHub上

注意:我强烈建议阅读以前的帖子首先,如果你还没有这样做的话。

构建配置

该项目的构建配置中定义project.clj。它是用Clojure写的,看起来像这样:

;;project.clj,第1部分(defproject todomvc “0.1.0-快照”:JVM-OPTS ^:代替[ “-Xms4g” “-Xmx4g” “-server”]:依赖[[org.clojure / Clojure的“1.6.0“] [org.clojure / clojurescript “0.0-2280”] [org.clojure / core.async “0.1.267.0-0d7780-α”] [秘书 “1.2.0”] [OM “0.7.1”]]:插件[[LEIN-cljsbuild “1.0.4-SNAPSHOT”]]

基本上,它只是一个载体的大地图。该依赖自动从Leiningen加载。cljsbuild是一个插件,它允许编译ClojureScript到JavaScript的 - 它的配置是:

;;project.clj,第2部分:源路径[ “SRC”]:cljsbuild {:构建[{:ID “dev的”:源路径[ “SRC”]:编译{:输出到 “app.js”:输出-dir “出”:优化:无:源映射真}}]})

早些时候,我们已经了解到,打造我们可以使用应用程序雷音cljsbuild一旦开发。该命令启动Leiningen并执行开发的建造轮廓cljsbuild恰好一次。如果我们使用汽车相反,它手表的任何变化和触发器的构建源路径。在开发过程中非常方便。

如果你看看在构建后的项目的根目录文件夹,你会看到有是我们指定每个依赖的文件夹。在里面你会找到库的源文件,在ClojureScript和JavaScript。此外,谷歌封库文件可以在找到goog目录。

注意:源映射选项告诉插件生成<文件名> .js.map文件对于每个编译的文件。这使得浏览器显示相应的ClojureScript源代码,而不是一段JavaScript代码难以理解混乱的时候有一个运行时错误。

出版

当你想发布您的应用程序,并与世界分享随之而来的时间。该文件夹中包含大约2 MB的JavaScript。更何况,他们分散在整个88个单独的文件。像浏览器基准测试要求的声音,而不是像一个可用的Web应用程序!

因此,我们需要减少文件的数量和总文件大小。这就是谷歌将关闭编译器可以帮助我们。下面你会发现一个新的名为建造轮廓释放这将解决所有问题:

:cljsbuild {:构建[{:ID “dev的” ...} {:ID “释放”:源路径[ “SRC”]:编译{:输出到 “出/ app.min.js”:优化:先进:的Elid断言真:漂亮地打印假:源映射 “app.js.map”:实习医生[ “SRC /反应-externs.js”]}}]}

与此相反的开发简介它输出一个单独的文件,采用先进的优化,排除断言和不漂亮的打印的JavaScript代码。要运行我们使用此版本的个人资料雷音cljsbuild发布一次。它需要比发展轮廓明显更长,但是当我们真正想反正发布应用,我们将只运行此。

注意:在使用Closure Compiler是minifiers之间的牛头犬:很有侵略性,停止对任何人。这就是为什么你需要的告诉它什么代码不应该用“实习医生文件的删除,如反应-extern.js在我们的例子。

下表给出了您的影响,不同的选择对最终结果的感觉。它显示了不同的“模式”的Closure编译器提供的文件大小:

高级模式减少了约78%的文件大小相比简单模式。拆除不可由应用程序使用的JavaScript代码:该关闭编译通过制造死代码分析实现这一微小。

因此,我们可以期望的最好结果是47 KB gzip压缩。听起来很合理。为了进行比较,没有选项:的Elid断言属实用于高级模式的结果长到195 KB(KB 48 gzip压缩)。如果没有设置:漂亮的打印假它甚至长到275 KB(53 KB gzip压缩)。

当然有一件事我们已经离开了:的库做出反应的足迹。缩小的版本是123 KB(KB 34 gzip压缩)。这使得81 KB的总gzip压缩。我让你自己决定是否这将是一个可接受的值您的应用:)

每日提示:Leiningen允许你指定一个或多个命令的别名。通过这种方式,我们可以只创建一个发布运行使用释放曲线构建命令 - 和做了清理事先:

:别名{ “发布”[ “做”[ “cljsbuild”, “干净”] [ “cljsbuild” “曾经” “放”]}

外表

有一个名为项目影子构建它允许你到最后的JavaScript文件分割成多个文件,比如把通用代码(如标准库)合并为一个文件,其余为独立的文件。然后,你可以在你的应用程序独立的“区域”。例如,谁也不去管理部分用户不需要下载的源代码了。目前,获得这个功能集成到ClojureScript是直接正在讨论

这通过共建设施,结束了我们的旅程。最后,我建议扫视了cljsbuild样本一旦。它记录了ClojureScript插件的所有可能的选项。

法案6我们将看看在图书馆可以帮助我们创造更好的嗡应用!

斯蒂芬·贝肯

通过贸易软件开发人员。大部分时间在不断持续追求简洁,优雅和美丽代码。或者刚刚做的东西在中间。

评论本站由Disqus