我想使用ClojureScript实现Foxx服务。
我已经读过,在每个开发步骤中运行转换程序可以使用Typescript和Coffeescript;
我可以为ClojureScript执行类似操作吗?
答案 0 :(得分:2)
我很高兴与Foxx一起使用Clojurescript,结果就是这个开源库: https://github.com/arango-cljs/forest 我两年前停止工作的原因是REPL工作流程不够好,缺少Websocket。但是Clojurescript-in-Clojurescript很快就会推出,Boot构建工具诞生了,我猜ArangoDB + Foxx从那时起就有了很大的改进。 如果您有兴趣,我们可以讨论。
答案 1 :(得分: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
挂钩的单个入口点,但我们仍然建议您出于性能原因预编译代码,以便更容易捕获编译时错误。