我已经在Linux Mint机器上安装了Geany,并编写了一些简单的代码。只是一个很小的世界,即可开始使用该语言。

现在,我想运行它并查看其输出。

如何运行此代码?我没有使用IDE或预先打包的东西,而只是使用简单的文本编辑器Geany。

我应该运行什么命令?

最佳答案

FWIW,我在此将问题解释为专门询问如何运行单个文件(如脚本),而不是作为已编译项目的一部分。
但是,显然,要运行一个文件的方式和原因与要构建一个完整项目的方式之间存在某种关系,因此我也将其权衡一下。

最佳选择:clj工具

文件在这里:

https://clojure.org/guides/deps_and_cli

这是Clojure项目的正式组成部分,这本身就是走这条路线的一个很好的理由。但是,与此处的其他解决方案相比,它具有两个优点:

  • 清洁程序依赖性解析模型,通过deps.edn
  • 也通过git引用解决依赖关系!
  • ~/.clojure/deps.edn似乎比~/.lein/profiles.clj
  • 更好地通过其别名提供了可重复使用的功能
  • 如果您需要将代码加载到一个repl中,clj不会在烦人的src文件中阻塞,就像lein repl
  • 一样

    只是
    clj your-code-file.clj
    或者如果您有依赖关系
    clj -Sdeps '{:deps {clj-time {:mvn/version "0.14.2"}}} your-code-file.clj
    在脚本中也可以很好地工作!
    #!clj -deps '{:deps {clj-time {:mvn/version "0.14.2"}}}
    (ns my-crazy-script!
      (:require ...))
    ...
    

    我建议使用homebrew进行安装,现在可以在Mac和Linux上使用。如果您使用Windows,建议您使用WSL + brew。

    我看到的lein(见下文)工具优于clj的一个优点是,到了这一点,lein处理了更多构建和打包代码库的过程。
    但是,还有其他处理方式(请参见packuberdeps或cambada),并且上述clj的优势胜过恕我直言。

    使用leinlein-exec
    如果您更喜欢lein工具,或者已经拥有一个~/.lein/profiles.clj文件,并且不想投资学习clj / deps.edn,则可以考虑查看 lein-exec

    如果您已经设置了带有依赖项的project.clj,那么您当然可以运行lein run -m <yer-namespace>[/<yer-main-fn>]

    如上所述,lein优于clj的一个优点是它是一个完整的构建工具,并且可以使用lein jarlein uberjar为您制作jar / uberjars,并进行部署等。

    对于ClojureScript

    我建议http://planck-repl.org/。现在,它支持(引导)ClojureScript脚本的快速启动,而无需启动JVM或Clojure。对于大多数脚本任务,快速执行很重要,因此,当您不需要特定于JVM的任何东西时,这是我的第一建议。

    对于较大的项目,而不仅仅是repl / cli样式的使用,您可能希望查看Shadlow-CLJS,因为它易于合并 Vanilla JS项目。
    与FWIW一样,Shadow可以很好地与deps和lein集成在一起,并且具有内置的原始代码重载功能,例如figwheel。
    drip可加快启动时间

    注意:多年来我一直没有尝试使用此工具,因此不知道它是否仍然有效或维护得如何。

    Drip是一个简洁的小工具,它为您提供了可以启动的预引导JVM镜像。这对于减少JVM应用程序的启动时间可能非常有用。 Clojure可能需要一段时间才能自我引导,因此滴水是帮助加快该过程的好工具。当您编写小的脚本时,尤其是这种情况,通常期望它们可以快速运行。如果您使用的是leiningen,请查看lein-drip插件。

    java
    当然,您可以按照另一个答案的建议使用
    java -cp clojure.jar clojure.main file.clj
    

    但是您不会经常在野外看到它,因为必须找到clojure.jar的路径并手动为依赖项构造类路径很麻烦。
    但是,要知道,每个人都有。

    10-08 16:02