在Clojure和clojurescript中你可以拥有一个名为defn-的defn的私有版本,但你如何对def做同样的事情,因为def-似乎不包括在内?
ClojureScript上有一些很好的教程吗?我想尝试一下,但不知道从哪里开始.
我已经到了使用Backbone.js面向对象的MVC模式的GUI编码变得非常复杂并且环顾其他范例的程度.MDV,FRP,ECS,哦,我的.
榆树与ClojureScript相比如何?它们在哪里重叠?
两者都是与编译为JS的JS非常不同的语言.我知道Elm是一种功能性反应式编程(FRP)语言.ClojureScript不一定是FRP,但你可以用它来做FRP.Elm使用JVM编译Haskell和ClojureScript,因此这些都是Node商店的额外要求.
也许它只是归结为Clojure vs Haskell.
我已经阅读了David Nolen的基本Om教程,但我仍然对应用程序状态和组件本地状态之间的区别感到困惑.当提到游标时,它也指的是其中一个或两个?
愚蠢的问题:如何在Clojurescript中进行Javascript分配?我正在使用Javascript lib并且需要设置对象字段的值obj.this=that;- 我不知道Javascript所以也许有.set方法?
我为这个看似愚蠢的问题道歉,但我现在已经开始使用ClojureScript几周了,我无法弄清楚这个简单的问题:
我如何调试ClojureScript?
所以这是问题所在:
我的问题:
开发ClojureScript应用程序的正确方法是什么?
PS我看过ClojureScriptOne - 我不喜欢的是它将所有技术同时捆绑在一起; 而且我更愿意在将它们连在一起之前了解如何单独使用每个单独的部分.
我对ring + mustache + compojure很满意,[主要是因为我可以使用我的标准Clojure调试技术]但是ClojureScript是另一个野兽.
更新:自从第一次提出这个问题以来,情况发生了很大的变化.这些天调试ClojureScript应用程序的正确方法是启用源映射 - http://github.com/clojure/clojurescript/wiki/Source-maps
有没有办法在clojurescript中访问"this"对象?
我有问题与事件传播,当我换一个图标与锚,并尝试一个handlder连接到锚.如果在处理程序中无法访问"this",我会不时处理触发事件的内部图标,而其他时候会触发锚点.
编辑:
如下所示,这就是这样做的方式.一个例子可能是
(defn my-handler
[e]
(this-as this
(let [data-attr (.data ($ this) "my-attr")]
(log data-attr))))
Run Code Online (Sandbox Code Playgroud) 每个人都在谈论core.async有多棒,以及如何改进clojurescript中的事件处理.我一直在关注ClojureScript 101教程,我没有从这些代码示例中看到任何明显的优势.我错过了什么?
为什么在这里使用core.async更好?
(defn listen [el type]
(let [out (chan)]
(events/listen el type
(fn [e] (put! out e)))
out))
(defn dosomethingasync
[e]
(js/console.log "async: " e))
(let [clicks (listen (dom/getElement "search1") "click")]
(go (while true (dosomethingasync (<! clicks)))))
Run Code Online (Sandbox Code Playgroud)
与
(defn dosomethingcallback
[e]
(js/console.log "callback: " e))
(events/listen (dom/getElement "search2") "click" dosomethingcallback)
Run Code Online (Sandbox Code Playgroud) (defn string-to-string [s1]
{:pre [(string? s1)]
:post [(string? %)]}
s1)
Run Code Online (Sandbox Code Playgroud)
我喜欢:pre和:post条件,它们允许我弄清楚我何时更快地将"方形钉子放在圆孔中".也许这是错误的,但我喜欢将它们用作一种可怜的勒芒式检查器.这不是哲学,这是一个简单的问题.
在上面的代码中我似乎很容易确定这s1是:pre条件中的函数参数.类似地,%在:post条件总是函数返回值.
我想是打印的值s1或者%当任的这些相应的条件Asse田内失效.所以我得到了类似的东西
(string-to-string 23)
AssertionError Assert failed: (string? s1)
(pr-str s1) => 23
Run Code Online (Sandbox Code Playgroud)
AssertionError包含每个变量的单行,该变量被识别为来自函数参数列表并且在失败测试中被引用.当函数的返回值未通过:post条件时,我也想要类似的东西.
这将使得在尝试从AssertionError进行诊断时快速发现我滥用函数的方式变得微不足道.它至少会让我知道值是否nil是实际值(这是我犯的最常见的错误).
我有一些想法,这可能与宏来完成,但我想知道如果有办法基本上只是重新定义了任何安全和全球性的方式(defn和(fn朋友们这样做是:pre和:post也将打印导致测试值(S)失败.