restas-javascript - проект, который должен дать возможность смешивать код на Common Lisp и JavaScript при разработке web-приложений на базе RESTAS. Кое-что уже работает. В частности, я уже смог переписать на JavaScript примеры из статьи Hello World - смотрите код в файле demo.js.
Структура этого кода полность аналогична соответствующему кода на Common Lisp, только использует идиомы JavaScript. Доступ к объектам request и reply (которые в CL оформлены в виде специальных переменных) в обработчиках маршрутом осуществляется через this.request и this.reply. Интерфейсы request и reply повторяет функции из документации к Hunchentoot, но именуются в стиле CamelCase, плюс некоторые методы оформлены в виде "активных свойств".
Загрузить данный файл можно следующим образом:
(restas.javascript:execute #P"/path/to/demo.js")после чего уже можно будет идти в браузер смотреть результат.
С помощью
(restas.javascript:repl)можно запустить примитивную JavaScript-консоль и поиграться с маршрутами. Что бы несколько упростить это я добавил простейшую реализацию console.log.
Кстати, дизайн интерфейса для JavaScript мне нравится в некоторых аспектах больше, чем для CL.
> Кстати, дизайн интерфейса для JavaScript мне
ОтветитьУдалить> нравится в некоторых аспектах больше, чем для CL.
Какого интерфейса? В смысле Javascript API предоставляемый RESTAS, по сравнению с Lisp API предоставляемый RESTAS?
Например, в каком аспекте он больше нравится? Можно ли лисповый улучшить, или не получится?
> В смысле Javascript API предоставляемый RESTAS
ОтветитьУдалитьУгу.
> Например, в каком аспекте он больше нравится?
В плане синтаксиса. CL постоянно норовит заставить меня писать одно большое s-выражение, а я не люблю больших нагромождений кода. А в JavaScript я могу себе спокойно конструировать объект, который по сути хэш-таблица, постепенным уточнением его параметров.
Кроме того, в JavaScript мне удаётся выразить интерфейс в виде естественных объектов, а в CL версии я манипулирую символами, ибо на объектах было бы слишком громоздко.
> Можно ли лисповый улучшить
Ну я его уже давно улучшаю, концентрируя внимание в основном на дизайне. Пока лучшего варианта я не вижу.
Этот комментарий был удален автором.
ОтветитьУдалитьЭтот комментарий был удален автором.
ОтветитьУдалитьКстати, насчет гибкости JavaScript, вспоминается выражение, что JavaScript это лисп в сишной шкуре (может понравится такое сравнение, если вы не слышали его).
ОтветитьУдалитьНасчет написания приложения на JavaScript во мне зреют мысли (наверное под влиянием тенденций в веб технологиях), писать веб приложения целиком в браузере. JavaScript из браузера обращается к серверу за данными.
Если используется база, сервер может быть просто proxy к базе данных. SQL писать прямо в JavaScript.
Случаев когда логику нужно "прятать" на сервере не очень много. Наверное в большинстве случаев логику можно на клиенте исполнять.
Это будет реальный cloud computing - сколько клиентов, столько и машин в cloud подключается. У сегодняшних веб приложений сервер зачастую - это bottleneck производительности.
И программировать так проще.
> насчет гибкости JavaScript, вспоминается
ОтветитьУдалить> выражение, что JavaScript это лисп в сишной
> шкуре
Да, говорят он делался под влиянием Scheme и сишный синтаксис туда прикрутили в самый последний момент по маркетинговым соображениям (и название же по тем же соображениям дали). Это реально сильно заметно, хотя инструменты вроде немного не те, но есть однозначная весьма существенная общность.
> писать веб приложения целиком в браузере
Я поначалу примерно так и делал. Потом отказался. Люблю всё по полочкам раскладывать, а так получается слишком много кода (и бардака) на клиенте.
JavaScript мне нравится в некоторых аспектах больше, чем для CL.
ОтветитьУдалитьмне тоже кстати