REPL 中的缩小版本

minified version in REPL

我有一个玩具项目 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!!

因为这是 Clojure 和 ClojureScript,解决这个问题的方法不止一种 问题。

简短回答你的问题是你需要运行

lein cljsbuild once min

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

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

需要注意的一点是 figwhell 通常是你只想加载的东西 在 development/testing 个阶段而不是在制作时 部署。同样,您不需要高级编译选项( 生成 mimified JS)直到你准备好部署。 Figwheel 本身只会 当编译优化设置为 none 时可以正常工作,但不会工作 当它设置为 高级.

考虑到您只是想看看这一切是如何工作的,可能不想 想花时间深入细节,直到你看到有一些 要拥有的价值,我的建议是使用 Luminus 网络框架来 尝试一下。这将设置一个包含开发和生产配置文件的项目,并且 有图轮支持。它也将允许您 运行 一个生产构建而无需 不得不部署任何东西。它会带来一堆你可能不会的东西 它现在就在,但你可以先忽略它。

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

虽然 运行宁可能造成更多混乱,但您的一般答案 部署问题是支持多种部署策略。你 可以设置您的 project.clj 文件,使其具有生成 jar/war 的目标 您可以部署到 tomcat 之类的文件中,您可以将构建添加到 部署到 horuku 或 aws 之类的东西,或者你可以将东西转移到网络上 服务器手动。这实际上取决于您的首选工作流程。

详情

对于 Luminus 框架,执行

lein new luminus my-proj +cljs

这将设置一个名为 my-proj 的基于 luminus 的项目并包括对 Clojurescirpt 和 Figwheel。查看 亮度 网站。阅读 Luminus 文档也是一种 好主意。它会给你一些标准的事情是如何解决的概述 使用 Clojure。需要注意的重要一点是,Clojure 采用不同的方式 Ruby 和 Python 等其他语言的方法。而不是 pre-defined 框架,使用 clojure 的方法是构建您自己的工作流程。虽然这 会给你一个不同的强大的解决方案,避免很多样板 大多数已建立的框架的代码,在你到达之前它有点挑战 了解 clojure 可以做什么以及可以使用哪些库。 Luminus 助桥 那个差距。许多人会开始使用像 Luminus 这样的东西,然后 稍后,一旦他们有了一些经验,就会推出他们自己的解决方案 他们想要的位。把 Luminus 想象成训练轮,它会让你 开始而不是固定框架。

要开始一个新的榕树项目,你可以试试

lein new figwheel my-project

查看 figwheel 文档,网址为 github