3

我想使用 ClojureScript 实现 Foxx 服务。

我读过可以通过在每个开发步骤中运行转译器来使用TypescriptCoffeescript

我可以为ClojureScript做类似的事情吗?

4

2 回答 2

2

我在 Foxx 中使用 Clojurescript 玩得很开心,结果是这个开源库: https ://github.com/arango-cljs/forest 两年前我停止工作的原因是 REPL 工作流程不够好以及缺少 Websocket。但是 Clojurescript-in-Clojurescript 很快就会推出,Boot 构建工具诞生了,我想 ArangoDB+Foxx 从那时起已经有了很大的改进。如果你有兴趣,我们可以讨论。

于 2016-05-12T15:43:21.917 回答
1

据我们所知,不可能以能够在 ArangoDB/Foxx 中运行的方式编写 ClojureScript 应用程序。

与 TypeScript 和 CoffeeScript 不同,ClojureScript 不仅仅是一种语言,而是一种应用程序运行时。最好不要将其视为 JavaScript 的替代语法,而是将其视为编写恰好在 JavaScript 引擎上执行的应用程序的一种方式。换句话说,尽管可以编写可重用的 ClojureScript 模块,但它是为编写独立的 ClojureScript 应用程序而设计的,而不是任意的 JavaScript 模块。

因为它最初设计为在浏览器中运行,因此没有考虑到类似节点的模块系统,它通过 Google Closure Compiler 使用全局命名空间。这意味着在同一上下文中运行多个应用程序会导致命名空间冲突。

此外,Foxx 服务预计将是无状态的。任何状态都必须保存在集合或服务器响应中,因为 Foxx 服务每次都在不同的 V8 上下文中执行。另一方面,ClojureScript 根据定义是有状态的,因为作为 Lisp,它认为代码只是一种特殊形式的数据。

根据经验:设计为 JavaScript 语言的透明替代品的语言(如 TypeScript、CoffeeScript、LiveScript、PureScript)应该可以正常工作。设计用于编写独立应用程序的语言(如 ClojureScript 和 Elm)很可能无法工作。

在任何情况下,如果您想使用另一种语言(或 Babel),您将不得不在 ArangoDB 之外转译代码,并且只将生成的 JavaScript 输出包含在您的 Foxx 包中。在 ArangoDB 3.0 中,您将能够像在 Node.js 中一样使用带有require钩子的单个入口点,但出于性能原因,我们仍然建议您预编译您的代码,以便更容易捕获编译时错误。

于 2016-04-26T08:02:31.183 回答