Я хочу внедрить онлайн-платформу для редактирования и исправления документов. Это работает как интерактивное одностраничное веб-приложение . Представьте себе Google Docs, но с более сложными виджетами внутри.
Я сделал это приложение в React (JS) + Node.js + Postgres, что заняло несколько месяцев работать, но мне не очень нравится опыт JS, особенно, когда все усложняется при работе с этим очень сложным состоянием, а решения, представленные в этих средах, очень ограничены, а изменение части кода где-то требует "высокого" обслуживания.
Я никогда не делал ни одного веб-приложения Common Lisp, но я много читал о доступных инструментах, и хотя существует множество решений для веб-сервера (hunchentoot, clack, wook ie, woo, fastcgi, ...), фреймворки веб-приложений (пещерный человек, ningle, radiance, lucerne, ...), библиотеки поколения html (cl-who, spinneret, ...) и даже javascript "переходящий" ( parenscript), Моим главным ограничением здесь является то, что большое внимание уделяется приложению с одной веб-страницей, которое должно выполнять большинство операций исключительно на стороне клиента.
Архитектура:
- Back-end s erver обрабатывает все постоянное хранение / извлечение документов и пользовательские логины
- Front-end выполняет все манипуляции с документами на стороне клиента (включая промежуточные изменения состояния документа, без необходимости сообщать каждое изменение в back-end)
Основные потребности:
- Полностью динамический c одностраничный интерфейс веб-приложения (контент - это в основном документ, который вы редактируете)
- Незначительная задержка взаимодействия
- Масштабирование для множества пользователей с максимально низкой нагрузкой на главный сервер
- Все взаимодействие с документом должно происходить на стороне клиента (включая управление промежуточными изменениями)
- Back-end к серверу следует обращаться только для входа в систему, получения документа, отправки нового конечного состояния документа или запроса специальных операций, таких как автоматическая обработка информации документа.
- Современный браузер, а именно HTML5 с поддержкой перетаскивания и операции при редактировании документа
Библиотека req (я не хочу использовать библиотеки, которые оказались тупиковым проектом):
- Solid библиотеки (например: hunchentoot, clack, parenscript)
- Определенно not:
- Библиотеки, которые кто-то делал, а затем есть открытые ошибки в течение 3 лет, а последний коммит был 5 лет go
- Плохая документация (что означает, что нельзя понять, как делать вещи, не тратя часов и не читая код библиотеки)
Я также видел, что есть проекты, такие как slurm-cl, pani c, weblocks, но первый 2, кажется, больше не обслуживается или не хватает документации, в то время как новые weblocks кажутся хорошими, но, насколько я понимаю, работает на стороне сервера, а не на стороне клиента, что является для меня ограничением.
Миллион долларов Вопрос
Извините за длинный пост, но не могли бы вы сказать, есть ли у Common Lisp какая-либо библиотека для этого варианта использования - сценарии на стороне клиента? Является ли это возможным? Подойдет ли Parenscript? (Я предполагаю, что если бы я go с этим, мне пришлось бы писать большинство вещей с нуля - что тоже не моя цель). Кроме того, если я использовал Parenscript, я предполагаю, что он также не управляет DOM.
Или мне вообще не следует использовать Common Lisp для этого?