REPL中的缩小版本

时间:2017-01-28 19:36:25

标签: clojurescript

我有一个玩具项目Clojurescript +试剂,一切都适用于开发版。 是否可以在REPL中开始迷你版?

我正在复制project.clj文件和core.cljs文件的主要方法。

  (defproject reagen-demo22 "0.1.0-SNAPSHOT"
     :dependencies [[org.clojure/clojure "1.8.0"]
                 [org.clojure/clojurescript "1.9.229"]
                 [reagent "0.6.0"]]

  :min-lein-version "2.5.3"

  :source-paths ["src/clj"]

  :plugins [[lein-cljsbuild "1.1.4"]]

  :clean-targets ^{:protect false} ["resources/public/js/compiled"
                                    "target"]

  :figwheel {:css-dirs ["resources/public/css"]}

  :profiles
  {:dev
   {:dependencies []

    :plugins      [[lein-figwheel "0.5.8"]]
    }}

  :cljsbuild
  {:builds
   [{:id           "dev"
     :source-paths ["src/cljs"]
     :figwheel     {:on-jsload "reagen-demo22.core/reload"}
     :compiler     {:main                 reagen-demo22.core
                    :optimizations        :none
                    :output-to            "resources/public/js/compiled/app.js"
                    :output-dir           "resources/public/js/compiled/dev"
                    :asset-path           "js/compiled/dev"
                    :source-map-timestamp true}}

    {:id           "min"
     :source-paths ["src/cljs"]
     :compiler     {:main            reagen-demo22.core
                    :optimizations   :advanced
                    :output-to       "resources/public/js/compiled/app.js"
                    :output-dir      "resources/public/js/compiled/min"
                    :closure-defines {goog.DEBUG false}
                    :pretty-print    false}}

    ]})

和核心命名空间的主要部分:

(defn ^:export main []
   (r/render-component 
    [display-the-list]
(.getElementById js/document "app")))

提前感谢您的任何帮助:link / hint / URL / doc !!

1 个答案:

答案 0 :(得分:0)

由于这是Clojure和ClojureScript,因此解决此问题的方法不止一种 问题。

您的问题的简短答案是您需要运行

lein cljsbuild once min

构建ClojureScript应用程序的缩小版本然后获得它 通过Web服务器提供。这是假设你的project.clj文件是正确的 定义

设置图形有多种不同的方法(例如, 默认情况下,它使用自己的服务器来提供网页,或者您可以将其设置为pu 使用类似码头的东西,当你开发两者时,这是一种流行的方法 前端和后端代码。)

需要注意的是,figwhell通常是您只想加载的东西 在开发/测试阶段而不是在进行生产时 部署。同样,您不需要高级编译选项(哪些 生成模仿的JS)直到您准备好部署。 Figwheel本身只会 编译优化设置为 none 时无法正常工作 完全设置为高级

鉴于你只是想看看这一切是如何运作的,可能不会 想要花时间进入细节,直到你看到有一些 值得拥有,我的建议是使用Luminus web框架 尝试一下。这将设置一个包含dev和prod配置文件的项目 用图形支撑。它还允许您在没有生成构建的情况下运行 必须部署任何东西。它会吸引你可能没有的一堆东西 它现在很感兴趣,但你可以在开始时忽略它。

一旦你尝试了一些事情,如果你想进一步采取行动,那么你 需要阅读figwheel的文档,我建议尝试一下 使用基本的无花果模板构建的东西。

虽然冒着引起更多混乱的风险,但对你的将军的回答 部署问题是支持多种部署策略。您 可以设置你的project.clj文件,以便它有生成jar / war的目标 你可以部署到tomcat之类的文件,你可以添加构建 部署到诸如horuku或aws之类的东西,或者你可以把东西移到网上 服务器手动。这实际上取决于您的首选工作流程。

详情

对于Luminus框架,请执行

lein new luminus my-proj +cljs

将设置一个名为my-proj的基于luminus的项目,并包含对该项目的支持 Clojurescirpt和Figwheel。请参阅luminus site。阅读Luminus文档也是一个 好主意。它将概述一些标准的东西是如何解决的 使用Clojure。需要注意的重要一点是,Clojure采用了不同的方式 处理其他语言,如Ruby和Python。而不是预先定义 框架,clojure的方法是建立自己的工作流程。虽然这个 将为您提供一个功能强大的解决方案,避免大部分锅炉板 大多数已建立的框架的代码,直到你到达它是一个有点挑战 知道什么是clojure可以做什么以及哪些库是可用的。 Luminus帮助桥梁 差距。很多人会开始使用像Luminus这样的东西 之后,一旦他们有了一些经验,就可以推出自己的解决方案 他们想要的位。将Luminus视为可以帮助您的训练轮 开始而不是一个固定的框架。

要开始一个新鲜的figwheel项目,你可以尝试

lein new figwheel my-project

查看图形文件 github