问题标签 [clojurescript-javascript-interop]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
312 浏览

npm - 如何在生产设置中放置 Clojurescript npm-deps?

这是一个简单的问题,但我已经困惑了一段时间了,它没有太多的文档可供查看:

我有一个使用 ClojureScript、figwheel、npm deps 的开发设置,对我来说工作得很好。但是当我生成一个生产编译的 JS 文件时,它没有找到 npm 依赖文件。那么,我应该在哪里以及如何将这些包中的哪些放在生产网络服务器中,以便找到并加载它们?

问候,克里斯

0 投票
0 回答
252 浏览

npm - Undefined nameToPath when using ClojureScript's :npm-deps

I'm trying to install the Ant Design library via :npm-deps, so in my project.clj I have:

And in my app code:

This compiles but on page load I get:

Is this a known issue with npm-deps right now? Is there a workaround?

Note: I have looked into using shadow-cljs but I'm hesitant to migrate to a whole new build system due to time constraints.

0 投票
1 回答
56 浏览

npm - Using the resulting object from require call in ClojureScript?

In JavaScript there is the idiom:

How do I do the same thing in ClojureScript using Shadow-CLJS for npm modules?

0 投票
2 回答
488 浏览

clojurescript - 如何防止闭包编译器缩小 clojurescript 中的某些方法?

我正在将 quilljs 与我的 clojurescript 应用程序集成。我将它包含在我的 project.cljs 文件中,如下所示[cljsjs/quill "1.3.5-0"]

编译器正在缩小一些方法并导致错误:

这是错误:Uncaught TypeError: (intermediate value).rf is not a function

clojurescript 代码如下所示:

retain方法和insert方法正在被缩小——它们不应该被缩小。(删除不是出于某种原因,我猜那是因为它是 javascript 中的关键字。)

我找到了 quilljs 的外部文件: https ://github.com/cljsjs/packages/blob/master/quill/resources/cljsjs/quill/common/quill.ext.js

是否有某种方式我需要补充外部文件或我可以编写代码的另一种方式,以便在为编译器打开高级编译时这两种方法不会被缩小?

对于某些上下文,以下是完整文件。它基于此https://github.com/benhowell/reagent-quill/blob/master/quill.cljs

0 投票
2 回答
386 浏览

clojurescript - 如何在 ClojureScript 中隐藏/显示表格

我想在单击字体很棒的 V 形按钮时显示/隐藏表格。

以下代码来自http://jsfiddle.net/z0y0hp8o/6/。我想做同样的事情,但是在使用 java 互操作的 clojurescript 中。

这是我在 clojurescript 中的草稿尝试。

0 投票
2 回答
783 浏览

clojurescript - ClojureScript 将显示无更改为可见

我想在单击按钮时修改表格的可见性,使用 clojurescript/javascript 互操作。

我试过了

这是我调用它的 div 标签。

我也试过

但它只是暂时显示表格,然后再次将显示设置为无。

0 投票
1 回答
186 浏览

webpack - 带有 webpack 和 infer-externs 的 Clojurescript 需要具有高级编译的未定义对象

我按照本指南使用 webpack + clojurescript,https: //clojurescript.org/guides/webpack 。使用or编译时它可以完美运行,但是当我使用挂钩的对象之一进行编译时,最终会被导入为未定义的对象,从而导致应用程序崩溃。:none:whitespace:advancedwindow

我尝试了几件事,比如定义和externs.js使用 window 对象,但我发现很难深入挖掘。

这是我的编译器参数:

这是我的 index.js,webpack 的入口点

webpack 配置很简单

我得到的错误是因为在这样的文件上:

ReactTable 绑定到nil. 我可以确认在 js 控制台window.ReactTable上也是nil.

只需在编译器选项上更改:advanced:whitespace,并将其他所有内容保持原样,即可解决问题。而在 js 控制台中,window.ReactTable不再是nil.

有任何想法吗?:)

----- 编辑(添加解决方法信息)--------

我发现这个用例的一种可能的解决方法是foreign-libs像这样“拆分”:

调整 webpack 配置和入口点会创建两个单独的包,一个只包含一个包,ReactTable另一个包含所有其他包。我不认为这是一个解决方案,因为真正的问题没有被发现。但这样做可以解决问题。

0 投票
1 回答
49 浏览

clojurescript - 在运行时在 clojurescript 中添加类路径?

是否可以在运行时在 Nodejs 上运行的 Clojurescript 程序中添加类路径?

0 投票
0 回答
209 浏览

clojurescript - 如何阻止 ClojureScript 编译器解析某些 `require`s?

在我的 ClojureScript 代码中,我需要一个seedrandom位于node_modules文件夹中的 JavaScript 模块,如下所示:

根据seedrandom文档,它适用于 nodejs 和浏览器,我之前已经通过<script>标签在 ClojureScript 代码中成功包含并使用了它,确认它在浏览器中工作。

在命令行中运行这个 cljs 文件lumo效果很好,并输出一个确定性的随机数。

当我尝试在我的 Reagent 前端项目中使用相同的 cljs 文件时,我看到以下错误:

在里面seedrandom.js我们看到以下内容:

显然,这段代码是为了在浏览器中运行时忽略内置的 nodejscrypto模块。据我所知,问题在于 ClojureScript 编译器不知道这一点 - 它看到require('crypto')并尝试将其拉入编译阶段,但由于它是内置的 nodejs 而找不到它。

有什么方法可以告诉编译器忽略该特定要求吗?或者我可以以某种方式填充“加密”模块吗?解决这个问题的最干净的方法是什么?

注意:我之前在检查fs节点模块的 JavaScript 模块中遇到过同样的问题。希望我们能找到一个通用的解决方案,以便将来再次使用。谢谢!

相关版本:[org.clojure/clojurescript "1.10.520"][reagent "0.8.1"]

这个答案是相关的,从 ClojureScript 使用的 Google Closure 的角度提出了一个类似的问题,但我正在寻找一个可以专门用于 cljs 的答案。

0 投票
1 回答
1110 浏览

reactjs - 使用 Shadow-CLJS 将 react-table 导入 ClojureScript

Web 开发新手在这里。我正在尝试将 NPM react-table 包与 ClojureScript/Reagent 项目一起使用。我无法正确导入包。我做了什么:

1/通过npm安装react-table,在我的项目目录下

2/在我的主命名空间中,我已经包含了(:require ["react-table" :as rt])

在 REPL 中,我可以看到它正在建立一些联系,因为只需键入rt就会返回#js {:ReactTableDefaults #js {:data #js [], ...

我怎样才能真正创建一个表?我尝试过诸如

rt/ReactTable {:data [{:a 1 :b 2} {:a 3 :b 4} {:a 6 :b 8}] :columns [{:Header "a" :accessor "a"} {:Header "b" :accessor "b"}]}但我一直在打TypeError: module$node_modules$react_table$lib$index.ReactTable is not a function

我也读过https://code.thheller.com/blog/shadow-cljs/2017/11/10/js-dependencies-in-practice.html但这对我帮助不够。

更新- 使用 figwheel 我正在某个地方,这就是我想在 shadow-cljs 中重现的内容:

在 project.clj 中:[cljsjs/react-table "6.8.6-0"]

在“视图”命名空间中:(:require [cljsjs.react-table] [reagent.core :as r])

然后这实际上显示了一个表格:

谢谢!