首页 > 解决方案 > 如何在 clojure ring 中使用 node.js 库和 API?

问题描述

假设有一个我想使用的 API,它在 Node.js 中可用,但不适用于 clojure ring。有没有办法可以在 clojure ring 中使用它?

标签: node.jsclojureclojure-ring

解决方案


如果你想npm直接使用模块,最好的办法是使用 ClojureScript。ClojureScript 是一个将 Clojure 代码编译为 JavaScript 的 Clojure 库。它提供与 Node.js 的无缝集成。不用说,您需要同时安装 Node.js 和 NPM 才能安装依赖项。

根据您是使用deps.cljs文件来配置 ClojureScript 项目,还是使用build.clj文件,您需要npm通过以下方式之一添加依赖项:

  1. deps.cljs 您需要向依赖项映射添加另一个键:

    { ;;.. :npm-deps {"react" "15.4.2" "object-assign" "4.1.1"} ;; ... }

然后你应该能够使用例如依赖react项:

(ns example.core
  (:require [react :refer [createElement]]))

(js/console.log (createElement "div" nil "Hello World!"))
  1. 如果使用build.clj文件,那么您的文件将如下所示:

    (需要'[cljs.build.api :as b])

    (b/build "src" {:output-dir "out" :output-to "out/main.js" :optimizations :none :main 'example.core :install-deps true :npm-deps {:react "15.6 .1" :react-dom "15.6.1"}})

并且您以相同的方式使用依赖项:

(ns example.core
  (:require [react :refer [createElement]]
            ["react-dom/server" :as ReactDOMServer :refer [renderToString]]))

(js/console.log (renderToString (createElement "div" nil "Hello World!")))

如果您需要进一步解释,我鼓励您看一下在 ClojureScript 中使用 JS 模块的一般情况增强的 Node.js 模块支持、一篇关于集成 Node 模块的文章,以及一篇从以前的文章中摘录的简明文章.


推荐阅读