首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从.cljc调用到.clj的值始终为空

从.cljc调用到.clj的值始终为空
EN

Stack Overflow用户
提问于 2017-11-05 02:25:33
回答 1查看 88关注 0票数 1

我的common.cljc文件如下所示:

代码语言:javascript
复制
   (ns example.common
     #?(:cljs
    (:require [goog.dom :as gdom])
       )
    )

    #?(:cljs (enable-console-print!))

   (defn mobile? []
        #?(:cljs (def hvpsize (.. (gdom/getViewportSize) -height))) 
        #?(:cljs (def wvpsize (.. (gdom/getViewportSize) -width))) 
        #?(:cljs (if (<= (/ wvpsize hvpsize) 1) true false))
   )

   (def mobile-value (mobile?))

   (println "mobile-value inside .cljc")
   (println mobile-value)

我的routes.clj文件如下所示:

代码语言:javascript
复制
     (ns example.routes 
        (:gen-class)
        (:use compojure.core
               example.views
               example.common
               [hiccup.middleware :only (wrap-base-url)])
        )

        (use '[ring.util.response :only [response]])
        (use '[ring.adapter.jetty :only [run-jetty]])
        (require '[compojure.route :as route])

        (defn -main
          "I don't do a whole lot ... yet."
          [& args]
          (println "Hello, World!"))

        (defn d-or-m-version [] 
           (.println System/out "Inside d-or-m-version")
           (.println System/out mobile-value)
           (if mobile-value (root-page-mobile) (root-page-desktop))
           )

        (defroutes main-routes 
           (GET "/" [] (d-or-m-version))
           (route/not-found "404"))

        (defonce server (run-jetty #'main-routes {:port 8080 :join? false}))

在.cljc文件中甚至在我有的一个单独的.cljs文件中重新加载页面时,mobile-value都能正确计算。

问题是,当在routes.clj中计算mobile-value时,它只返回null。因此,d-or-v-version中的if语句不会从单独的views.clj文件中调用正确的hiccup html。

我假设mobile-value返回null,因为routes.clj在common.cljc之前运行,而mobile-value没有值。然而,我不知道如何解决这个问题,任何帮助都将不胜感激。

EN

回答 1

Stack Overflow用户

发布于 2017-11-05 02:31:43

当从Clojure调用它时,它的计算结果为nil,因为它在Clojure中是一个空函数。Clojure读取器条件告诉#?(:cljs编译器忽略此表单,因为它应该只由Clojurescript编译器计算。

由于该函数中的所有形式对于Clojure编译器来说都不存在,因此该函数为空,并且它的计算结果始终为nil

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47114080

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档