node.js - 如何在 clojure ring 中使用 node.js 库和 API?
问题描述
假设有一个我想使用的 API,它在 Node.js 中可用,但不适用于 clojure ring。有没有办法可以在 clojure ring 中使用它?
解决方案
如果你想npm
直接使用模块,最好的办法是使用 ClojureScript。ClojureScript 是一个将 Clojure 代码编译为 JavaScript 的 Clojure 库。它提供与 Node.js 的无缝集成。不用说,您需要同时安装 Node.js 和 NPM 才能安装依赖项。
根据您是使用deps.cljs
文件来配置 ClojureScript 项目,还是使用build.clj
文件,您需要npm
通过以下方式之一添加依赖项:
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!"))
如果使用
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 模块的文章,以及一篇从以前的文章中摘录的简明文章.
推荐阅读
- php - PHP 查询:将参数设置为用于 JSON 搜索的 Sql 键
- apache-spark - “没有 X11 DISPLAY 变量”——这是什么意思?
- apache-kafka - 使用 acks=all 和刷新的 Kakfa 生产者消息传递
- karate - 模拟的执行顺序不受控制
- db2 - 为什么我的 sql 查询中出现日期错误?
- loops - 根据数据值有条件地计算总和
- php - 无法循环选项卡关联以获取 revever 键和数据
- android - 发现重复的类 com.google.android.gms.location.places.zza
- javascript - 如何在 URL 中的“#”之后获取字符串
- reactjs - 如何使用react将上传的文件url保存在firebase中