Давайте подивимося, що можна зробити з Common Lisp .
Стан екосистеми Common Lisp (2015 г.) і Приголомшливі Common Lisp список показати нам пару сучасних рамок ( Caveman , Люцерн , все побудовано на новому Clack сервері веб - додатків, інтерфейс для Hunchentoot і інших серверів). Давайте обговоримо з нашими власними висновками.
оновлення 2019 : є новий підручник з Common Lisp Cookbook: https://lispcookbook.github.io/cl-cookbook/web.html Він охоплює маршрутизацію, механізми шаблонів, створення автономних двійкових файлів, розгортання тощо.
оновлення : трохи пізніше, я дізнався Snooze , від творця Sly або Emacs 'Yasnippet, і мав набагато краще враження, ніж, скажімо, Caveman. Оголошення кінцевих точок подібно до оголошення функцій, тому деякі речі, які були втомливими в Caveman, очевидні в Snooze, наприклад, доступ до параметрів url. У мене немає великого досвіду з цим, але я рекомендую це перевірити.
оновити червень 2018 : також не пропустіть постійний перепис Weblocks, це буде величезно! : D http://40ants.com/weblocks/quickstart.html Weblocks дозволяє створювати динамічні веб-додатки, без рядка Javascript, без розділення задньої та передньої сторін. Він заснований на компонентах, як React, але на стороні сервера. Це дуже альфа на момент написання (червень 2018), але триває, і це працює, у мене працює кілька простих веб-програм.
Простий спосіб отримати параметри запиту (щось на зразок: get-get #key, get-post #key, get-cookie #key).
Я знайшов простіший спосіб Люцерна, він такий же простий, як with-params
макрос ( приклад у реальному світі ):
@route app (:post "/tweet")
(defview tweet ()
(if (lucerne-auth:logged-in-p)
(let ((user (current-user)))
(with-params (tweet)
(utweet.models:tweet user tweet))
(redirect "/"))
(render-template (+index+)
:error "You are not logged in.")))
Шлях Печерної людини для мене був менш зрозумілим .
Доступ до MySQL
Caveman рекламує інтеграцію баз даних (разом із Datafly і sxql від Fukamachi).
Ви можете просто використовувати clsql або Mito ORM: https://lispcookbook.github.io/cl-cookbook/databases.html
Генератори форм HTML, обробка, валідатори тощо.
Я не знаю, чи є там генератори форм. редагувати : є: cl-форми та анкети , або знову 1 форми , що працюють з Caveman2.
У Печерної людини його немає (питання порушено в 2011 році).
Помічники для фільтрування вхідних даних користувача (щось на зразок htmlentities, захисних змінних для введення в запити тощо).
Ratify - це бібліотека перевірки вхідних даних, яка не інтегрована у фреймворк.
FLOSS та GNU / Linux: ✓
Інші веб-матеріали
Якщо говорити про Інтернет, то в CL Land є й інші приємні бібліотеки :
- веб-сервери: Woo - це швидкий HTTP-сервер, швидший за Nodejs (остерігайтеся діаграм ...), wookie - асинхронний http-сервер,
- Dexador - клієнт HTTP
- Товста , lquery і CLSS зробити його легко розібрати HTML і запросити DOM.
- cl-bootstrap пропонує ярлики twitter-bootstrap для механізму шаблонування cl-who (який замінює Jade / Pug, хоча у нас теж є звичайні шаблони).
Аякс у Ліспе
(пам’ятайте, що з Weblocks див. вище, вони можуть нам не знадобитися)
За допомогою ParenScript ми можемо писати JavaScript у Common Lisp, не виконуючи звичний робочий процес, і, отже, ми можемо використовувати fetch
веб-API для написання викликів Ajax.