Ste*_*lka 7 javascript clojure clojurescript
我一直在比较由clojurescript中的各种调用输出的生成的javascript,感觉就像踩着地雷.有些生成极其可读(甚至是缩小的高级模式)javascript,有些人认为这一个方法调用将需要看起来像clojure中运行的每个可能方法.
nth vs aget就是一个非常好的例子.这两个代码片段都输出数字5,但是一个需要77个字节来完成它而另一个需要57千字节.多达74026%
57 KiloBytes - nth
(ns fooModule)
(let [log js/console.log
x (array 5)]
(log (nth x 0)))
Run Code Online (Sandbox Code Playgroud)
77字节 - 年龄
(ns fooModule)
(let [log js/console.log
x (array 5)]
(log (aget x 0)))
Run Code Online (Sandbox Code Playgroud)
aget生成的代码非常易读.(手工格式化)
;(function(){
var a=console.log,
b=[5];
a.a ? a.a(b[0]) : a.call( null, b[0] );
})();
Run Code Online (Sandbox Code Playgroud)
在一个要点中生成第n个代码https://gist.github.com/trashhalo/7781298 \
clojurescript 0.0-2014
Art*_*ldt 11
在这种情况下,这是由于死代码消除与ClojureScrip的序列交互.你的例子碰巧恰好使用了一个使用序列的东西,nth而没有别的东西.因此,在第一个例子中,seq库被删除,而在第二个例子中则没有.不要概括这个增长率,只有大约ClojureScript的总量,所以一旦你使用任何包含它的代码,你就会明智地踩到所有的地雷.