标签: clojurescript

在clojurescript中实现ajax调用

我是clojurescript的新手,并希望通过实现一个纯粹在clojurescript中的先前编写的应用程序来进行更深入的研究,但是在实现ajax调用时却不知所措.任何人都可以在网上给我一个例子,或者给我一个或两个代码片段吗?

ajax jsonp clojurescript

17
推荐指数
3
解决办法
8966
查看次数

使用clojurescript以惯用方式访问json对象

任何人都有任何用于访问javascript对象的idiomatic clojurescript的文档(作为json返回,本质上是哈希)?

我有一个通过AJAX请求返回的JSON对象:

{
  list: [1,2,3,4,5],
  blah: "vtha",
  o: { answer: 42 }
}
Run Code Online (Sandbox Code Playgroud)

如何使用clojurescript访问这些字段?

我可以:

(.-list data)
Run Code Online (Sandbox Code Playgroud)

但是当我有嵌套值和对象时,它是如何工作的?

(.-answer (.-o data))
Run Code Online (Sandbox Code Playgroud)

以上似乎非常笨拙,特别是考虑到良好的js语法:data.o.answer.

用clojurescript访问json对象的惯用方法是什么?

注意:

我意识到我实际上可以使用JS语法来引用元素,这实际上非常方便.所以以下内容将正常工作:

(str data.o.answer)
Run Code Online (Sandbox Code Playgroud)

javascript json clojure clojurescript

15
推荐指数
3
解决办法
8131
查看次数

不能在clojurescript repl中"使用"

我在Clojurescript命名空间键入以下内容.

cljs.user> (use '[clojure.zip :only [insert-child]])

WARNING: Use of undeclared Var cljs.user/use at line 1 
"Error evaluating:" (use (quote [clojure.zip :only [insert-child]])) :as "cljs.user.use.call(null,cljs.core.vec([\"\\uFDD1'clojure.zip\",\"\\uFDD0'only\",cljs.core.vec([\"\\uFDD1'insert-child\"])]));\n"
#<TypeError: Cannot call method 'call' of undefined>
TypeError: Cannot call method 'call' of undefined
    at eval (eval at <anonymous> (http://localhost:3000/main.js:32728:147), <anonymous>:1:85)
    at eval (eval at <anonymous> (http://localhost:3000/main.js:32728:147), <anonymous>:6:3)
    at http://localhost:3000/main.js:32728:142
    at evaluate_javascript (http://localhost:3000/main.js:32741:4)
    at Object.callback (http://localhost:3000/main.js:32806:138)
    at goog.messaging.AbstractChannel.deliver (http://localhost:3000/main.js:31059:13)
    at goog.net.xpc.CrossPageChannel.deliver_ (http://localhost:3000/main.js:32164:14)
    at Function.goog.net.xpc.NativeMessagingTransport.messageReceived_ (http://localhost:3000/main.js:31732:13)
    at goog.events.Listener.handleEvent (http://localhost:3000/main.js:22590:26)
    at Object.goog.events.fireListener (http://localhost:3000/main.js:22924:21)
nil
Run Code Online (Sandbox Code Playgroud)

似乎在说明cljs.user命名空间中不存在'use'方法.这种方式对我来说很有意义,因为Clojurescript本身无法评估Clojure表达式.但是,我知道Clojurescript有一个clojure.zip命名空间,我在命名空间声明中使用了clojure.zip (:use [clojure.zip :only …

clojure clojurescript

15
推荐指数
1
解决办法
2433
查看次数

如何在Lighttable中创建基本的ClojureScript Hello World应用程序?

LightTable中的文档似乎很少.我想在LightTable中创建一个非常简单的ClojureScript Web应用程序作为构建的起点.我在Clojure中的Instarepl工作正常,然后我创建了一个名为dummy.cljs的新文件,其中包含以下内容:

(ns dummy)

(js/alert "Hello lighttable")
Run Code Online (Sandbox Code Playgroud)

我该怎么办呢?

更新

我现在已经想到了这一点,我将发布一个关于如何使用它的视频,因为它非常直观.

更新2

这是视频:

http://www.youtube.com/watch?v=GZ6e0tKqYas

clojurescript lighttable

15
推荐指数
1
解决办法
5494
查看次数

为什么clojurescript宏不能用clojurescript写?

虽然clojure和clojurescript功能基本相同(除了明显的差异),但宏不是.当我想要一个clojurescript中的宏时,我必须在clojure中编写它并且需要它与require-macros.这是javascript的技术限制还是仅仅是设计决策?为什么不能两者都一样?

clojure clojurescript

15
推荐指数
1
解决办法
1904
查看次数

没有Java的ClojureScript

是否可以在没有Java的情况下编译ClojureScript?

我阅读了clojurescript nodejs快速入门,但我发现它们仍然使用java进行编译.

我检查了cljs-bootstrap,但它们也依赖于java.

有没有办法只使用npm install并开始使用clojurescript?

java clojure node.js clojurescript

15
推荐指数
2
解决办法
2232
查看次数

为什么clojure协议方法经常被函数包裹?

通常当我在库中看到clojure协议时,协议方法将被包装在一个函数中,通常几乎没有添加任何功能.例如:

(defprotocol Pfoo
    (foo-method [this]))

(deftype Atype [x y]
    Pfoo
    (foo-method [this] (do-something)))

(defn foo [arg] (foo-method arg))
Run Code Online (Sandbox Code Playgroud)

并且通常期望客户端调用函数foo,而不是协议中的foo方法.(有关此类事情的具体示例,请参阅clojurescript核心顶部的协议.

那么为什么协议经常被屏蔽功能呢?协议方法不能成为面向客户端的部分,而不是包装功能吗?

protocols clojure clojurescript

14
推荐指数
1
解决办法
731
查看次数

似乎无法要求> !! 还是<!! 在Clojurescript?

我必须在这里遗漏一些非常明显的东西,但我正在尝试设置一个非常基本的程序,将一个项目放到一个通道上,然后阻止,直到我再次取消它.整个计划如下:

(ns shopping-2.core
  (:require [cljs.core.async :as async :refer [>!! <!! put! chan <! close! <!!]]))

(let [c (chan)]
  (>!! c "hello")
  (.write js/document (<!! c))
  (close! c))
Run Code Online (Sandbox Code Playgroud)

我得到的JavaScript错误是:

Uncaught TypeError: Cannot call method 'call' of undefined 
Run Code Online (Sandbox Code Playgroud)

在我忘记之前我有这个错误:引用chan(如果我只是打开通道,然后再关闭它,程序运行正常)

但是,当我想使用<!!>!!宏时,这段代码似乎会窒息.

clojure clojurescript

14
推荐指数
1
解决办法
2666
查看次数

从Javascript调用ClojureScript

如何从Javascript调用ClojureScript代码(不是相反!).

已经可以从Java调用Clojure,但我不知道如何在ClojureScript中执行等效操作.

javascript clojure clojurescript

14
推荐指数
2
解决办法
3422
查看次数

cljc文件的基本功能

通常,Clojure源文件被命名为(例如)foo.clj,而Clojurescript源文件被命名为foo.cljs.我的印象是,在Clojure的版本> = 1.7,我可以命名一个文件foo.cljc如果我希望它是可与加载requireuse无论从Clojure的和Clojurescript.

它是否正确?它似乎隐含在使用cljc读取器条件的主要文档页面中,但据我所知,它从未明确说明.

这不是关于使用reader条件来指定在Clojure和Clojurescript中运行的备用代码的问题.它更基本.例如,我有一个源文件,其中包含完全通用的代码:它将在Clojure和Clojurescript中运行不变.我可以假设通过命名为".cljc",require总是会从Clojure和Clojurescript中找到它(假设它的名字正确,位于正确的位置,等等)?

[我很确定我是对的,但我不确定,我认为如果我是正确的话,在这里记录答案是值得的.]

clojure clojurescript

13
推荐指数
2
解决办法
1530
查看次数

标签 统计

clojurescript ×10

clojure ×8

javascript ×2

ajax ×1

java ×1

json ×1

jsonp ×1

lighttable ×1

node.js ×1

protocols ×1