ArangoDB Foxx и Clojure скрипт

Я хотел бы реализовать сервис Foxx, используя ClojureScript.

Я читал, что можно использовать Typescript и http://coffeescript.org/, запуская транспортер на каждом этапе разработки;

Могу ли я сделать подобное для ClojureScript?

2 ответа

Решение

Насколько нам известно, невозможно написать приложения ClojureScript таким образом, чтобы они могли работать в ArangoDB/Foxx.

В отличие от TypeScript и CoffeeScript, ClojureScript - это не просто язык, а среда выполнения приложения. Лучше думать об этом не как об альтернативном синтаксисе JavaScript, а как о способе написания приложений, которые выполняются на движке JavaScript. Другими словами, хотя можно писать повторно используемые модули ClojureScript, он предназначен для написания автономных приложений ClojureScript, а не произвольных модулей JavaScript.

Поскольку он изначально был разработан для работы в браузере и, следовательно, не был написан с учетом модульных систем типа Node, он использует глобальное пространство имен через Google Closure Compiler. Это означает, что запуск нескольких приложений в одном контексте может привести к конфликтам пространства имен.

Также ожидается, что сервисы Foxx не будут иметь состояния. Любое состояние должно сохраняться в коллекциях или ответе сервера, потому что сервисы Foxx каждый раз выполняются в разных контекстах V8. ClojureScript, с другой стороны, по определению является состоящим из состояния, потому что как Лисп он рассматривает код как особую форму данных.

Как правило: языки, разработанные как прозрачные заменители языка JavaScript (такие как TypeScript, CoffeeScript, LiveScript, PureScript), должны работать без каких-либо проблем. Языки, предназначенные для написания автономных приложений (например, ClojureScript и Elm), скорее всего, не будут работать.

В любом случае, если вы хотите использовать альтернативный язык (или Babel), вам придется перемещать код за пределы ArangoDB и включать только сгенерированный вывод JavaScript в ваш пакет Foxx. В ArangoDB 3.0 вы сможете использовать одну точку входа с require подключите, как в Node.js, но мы по-прежнему рекомендуем прекомпилировать ваш код по соображениям производительности и чтобы было легче отлавливать ошибки времени компиляции.

Я прекрасно провел время, используя Clojurescript с Foxx, и в результате появилась библиотека с открытым исходным кодом: https://github.com/arango-cljs/forest Причина, по которой я перестал работать над этим два года назад, заключается в том, что рабочий процесс REPL был недостаточно хорош и отсутствие Websocket. Но Clojurescript-in-Clojurescript скоро будет доступен, появился инструмент для сборки Boot, и я думаю, что ArangoDB+Foxx с тех пор значительно улучшились. Если вы заинтересованы, мы можем обсудить.

Другие вопросы по тегам