首页 文章

ArangoDB Foxx和Clojure脚本

提问于
浏览
3

我想使用ClojureScript实现Foxx服务 .

我读过在每个开发步骤中运行转换程序可以使用TypescriptCoffeescript;

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

2 回答

  • 1

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

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

    因为它最初设计为在浏览器中运行,因此不是用类似Node的模块系统编写的,所以它通过Google Closure Compiler使用全局命名空间 . 这意味着在同一上下文中运行多个应用程序会导致命名空间冲突 .

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

    根据经验:设计为透明替代JavaScript语言的语言(如TypeScript,CoffeeScript,LiveScript,PureScript)应该没有任何问题 . 用于编写独立应用程序(如ClojureScript和Elm)的语言很可能无法正常工作 .

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

  • 1

    我很喜欢和Foxx一起使用Clojurescript,结果就是这个开源库:https://github.com/arango-cljs/forest两年前我停止工作的原因是REPL工作流程不够好而缺乏Websocket . 但是Clojurescript-in-Clojurescript很快就会推出,Boot构建工具诞生了,我猜ArangoDB Foxx从那时起就有了很大的改进 . 如果您有兴趣,我们可以讨论 .

相关问题