【问题标题】:minified version in REPLREPL 中的缩小版
【发布时间】:2017-01-28 19:36:24
【问题描述】:

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

我在下面复制project.clj文件和core.cljs文件的main方法。

  (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!!

【问题讨论】:

  • 你能提供更多关于你试图做什么的解释吗?您尝试做的事情没有任何意义。 Clojurescript 使用 Google 的 Closure 编译器编译成 javascript。我认为您不能将 figwheel 与高级编译选项一起使用。您还缺少一个“最小”配置文件,您需要使用 lein 运行您的最小版本。您确实有一个最小构建配置文件。
  • 嗨,蒂姆,感谢您提供所有详细信息。我通过执行 [lein figwheel dev] 来运行项目;我认为更改构建名称 [lein figwheel min] 就足够了,我可以“看到”玩具项目的优化版本。它不起作用。我尝试了另一种使用 Figwheel 控件的方法:[lein figwheel; (开始自动构建分钟)。部署 clojurescript 应用程序的标准方法是什么?例如lein uberjar;并部署 jar 文件?谢谢!

标签: clojurescript


【解决方案1】:

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

简短回答你的问题是你需要跑步

lein cljsbuild once min

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

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

需要注意的一点是,figwhell 通常是你只想加载的东西 在开发/测试阶段而不是在您进行生产时 部署。同样,您不需要高级编译选项(其中 生成简化的 JS),直到您准备好部署。 Figwheel 本身只会 当编译优化设置为 none 时可以正常工作并且不会工作 当它设置为 advanced 时完全没有。

鉴于您只是想看看这一切是如何工作的,可能不想 想花时间深入了解细节,直到你看到有一些 具有价值,我的建议是使用 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 想象成训练轮,它会让你 开始而不是一个固定的框架。

要开始一个新的无花果项目,你可以试试

lein new figwheel my-project

查看 figwheel 文档,网址为 github

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-24
    • 1970-01-01
    • 2010-11-11
    • 2015-06-20
    相关资源
    最近更新 更多