【问题标题】:Creating a NodeJS runnable single javascript file from Clojurescript从 Clojurescript 创建一个 NodeJS 可运行的单个 javascript 文件
【发布时间】:2017-11-07 05:59:23
【问题描述】:

使用 Lumo 和下面提到的文件,我可以运行 $ node main.jspresto! “Hello world!”。这很好,但是使用 Lumo 有一些缺点,我想知道 cljs.jar 是否可以做到这一点。

如何使用可由 NodeJs 运行的 ClojureScript 编译器 (cljs.jar) 从 clojurescript 创建单个 javascript 文件。

core.cljs

(ns hello-world.core
  (:require [cljs.nodejs :as nodejs]))
(nodejs/enable-util-print!)
(defn -main [& args]
  (println "Hello world!"))
(set! *main-cli-fn* -main)

node.cljs

(require '[lumo.build.api :as b])
(b/build "src"
  {:main 'hello-world.core
   :output-to "main.js"
   :optimizations :advanced
   :target :nodejs})

目标是拥有一个包含所有内容的单个文件,无需导入/需要外部文件。

我为什么要这个? 有许多网站在创建和/或增强算法方面面临开发人员挑战。问题是这些网站中的大多数并不是你都使用clojure,也不是clojurescript。但他们确实允许你使用 javascript。

这些站点通常也允许您使用 Java...因此,如果有另一种方法可能会导出“java”文件,而不是 Class 文件,那也可以。我怀疑这是可能的,但我想我会问的。

【问题讨论】:

  • 您当前的设置有什么问题?不使用您的 node.cljs 生成一个可以使用 node 运行的 JavaScript 文件?
  • 哦,你使用的是lumo.build.api。我认为您可以对 cljs.build.api 做同样的事情。
  • 我所有尝试生成可由 NodeJs 执行的单个文件的尝试都失败了。它们包括导入语句。关键是不要导入任何东西,我想要一个包罗万象的文件。我更新了帖子以澄清。

标签: javascript java node.js clojurescript


【解决方案1】:

build.clj

(require 'cljs.build.api)
(cljs.build.api/build "src" {:output-to "main.js"
                             :main 'hello-world.core
                             :target :nodejs
                             :optimizations :advanced})

构建命令

  java -cp cljs.jar:src clojure.main build.clj

【讨论】:

  • 根据我的测试,这包括用于导入的谷歌闭包函数。我已经用澄清更新了评论。我想生成一个包含所有必需库的 javascript 文件。
  • 如果你添加:optimizations :advanced或者:simple,它会将所有的deps打包到一个文件中。
  • 谢谢! IDK 我误入歧途但您的解决方案有效。 (需要'cljs.build.api)(cljs.build.api/build "src" {:main 'hello-world.core :output-to "main.js" :optimizations :advanced :target :nodejs})跨度>
  • 我专注于使用lein run -m clojure.main node.clj 我得到Caused by: java.io.FileNotFoundException: Could not locate cljs/build/api__init.class or cljs/build/api.clj on classpath.
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-05-08
  • 1970-01-01
  • 2016-07-31
  • 2012-04-25
  • 2014-06-02
  • 1970-01-01
  • 2012-08-17
相关资源
最近更新 更多