【问题标题】:How to access db.clj methods in core.cljs in clojure如何在 clojure 中访问 c​​ore.cljs 中的 db.clj 方法
【发布时间】:2015-12-08 07:36:19
【问题描述】:

我正在尝试在clojure 中创建一个网络应用程序。 我用过clojurescript om 并做出反应。 有两个文件 core.cljsdb.cljcore.cljs 包含 login page 的 ui,db.clj 包含所有 database connections

现在我正在尝试调用 db.clj 方法 add-user[username password] in core.cljs.

db.clj

   (defn add-user [username,password]
        (sql/with-connection db
          (sql/insert-values :users [:username :password]
                             [username password])))

core.cljs

       (dom/button #js {:ref "submit"
             :onClick (fn[e](add-user usname passwrd))}"submit")

但我无法在core.cljs 中调用该方法。 它显示了一些错误消息,例如

clojure.lang.ExceptionInfo : failed compiling file:src\login_page\core.cljs
clojure.lang.ExceptionInfo : No such namespace: login_page.db, could not locate login_page/db.cljs, login_page/db.cljc, or Closure namespace "login_page.db"

【问题讨论】:

  • 您不能从您的 clojurescript 调用“服务器端”clojure。你必须运行某种网络服务器来处理请求。
  • 我能做些什么来处理这个请求。我是新手..
  • 您可能想查看luminusweb.netclojure-toolbox.com 的Web 框架

标签: clojure clojurescript om


【解决方案1】:

db.clj 重命名为db.cljsdb.cljc。这应该会让您摆脱“没有这样的命名空间”错误消息。

这就是它的基本要点。当然,必须删除您对 clj 库的依赖——这可能是下面负面评论的原因。更改您的代码,以便您使用一个简单的原子作为您的数据库。这应该让你发展。

您可以等待一个比这个更好的答案,它将向您展示如何设置客户端和服务器通信设置。但它可能不会到来,因为正如 cmets 中所指出的,已经有这方面的文档,不幸的是,必须做出相当多的选择。另一个不幸的事情是,现在的方式可能不是明年初的方式。观看 Om-Next 空间!

我在编译 .cljs 或 .cljc 文件时从未遇到任何问题。您只需要正确设置您的 lein project.clj 文件。如果你 Google 周围会有很多例子,或者你可以看看下面的 Github 小项目:https://github.com/chrismurrph/passing-time - 无需担心代码,只需查看它的 project.clj 文件。

【讨论】:

  • ...并且会在尝试将该命名空间编译为 cljs 时崩溃。那里的工作很棒:)
  • 是的,这确实是我讽刺评论的原因。当时你解决一个问题只是导致另一个问题出现,那只会导致另一个问题。现在已经添加了“如何使某些东西工作”的解释,OP 现在有了一些关于在哪里进一步研究的线索。现在这确实是了不起的工作,这次没有讽刺。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-01-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多