Common Lisp로 무엇을 할 수 있는지 살펴 보겠습니다 .
Common Lisp 생태계 의 상태 (2015) 및 Awesome Common Lisp 목록은 몇 가지 최신 프레임 워크 ( Caveman , Lucerne , 모두 새로운 Clack 웹 애플리케이션 서버, Hunchentoot 및 기타 서버용 인터페이스)에 구축되었습니다. 우리 자신의 결과에 대해 논의합시다.
업데이트 2019 : Common Lisp Cookbook에 새로운 튜토리얼 이 있습니다 : https://lispcookbook.github.io/cl-cookbook/web.html 라우팅, 템플릿 엔진, 자체 포함 바이너리 빌드, 배포 등을 다룹니다.
업데이트 : 조금 후에 Sly 또는 Emacs의 Yasnippet 제작자가 Snooze를 발견했고 Caveman보다 훨씬 더 좋은 인상을 받았습니다. 엔드 포인트를 선언하는 것은 함수를 선언하는 것과 같으므로 Caveman에서 지루했던 일부는 url 매개 변수에 액세스하는 것과 같이 Snooze에서 분명합니다. 나는 그것에 대해 많은 경험이 없지만 그것을 확인하는 것이 좋습니다.
2018 년 6 월 업데이트 : Weblocks의 지속적인 재 작성도 놓치지 마세요. 엄청날 것입니다! : D http://40ants.com/weblocks/quickstart.html Weblocks를 사용하면 앞뒤를 구분하지 않고 자바 스크립트 한 줄없이 동적 웹앱을 만들 수 있습니다. React와 같은 구성 요소 기반이지만 서버 측입니다. 작성 시점 (2018 년 6 월)에는 매우 알파이지만 진행 중이며 작동 중이며 몇 가지 간단한 웹 앱이 작동합니다.
요청 매개 변수를 가져 오는 간단한 방법 (예 : 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은 데이터베이스 통합 (Fukamachi의 Datafly 및 sxql 사용)을 광고합니다.
clsql 또는 Mito ORM을 사용할 수 있습니다 : https://lispcookbook.github.io/cl-cookbook/databases.html
HTML 양식 생성기, 처리, 유효성 검사기 등
거기에 폼 생성기가 있는지 모르겠습니다. 편집 : 거기에 : cl-forms 및 formlet , 또는 Caveman2 와 함께 작동하는 1forms.
원시인 에게는 하나가 없습니다 (2011 년에 제기 된 문제).
사용자 입력 데이터 필터링을위한 도우미 (htmlentities, 쿼리 입력을위한 이스케이프 변수 등)
Ratify 는 입력 유효성 검사 라이브러리이며 프레임 워크에 통합되어 있지 않습니다.
FLOSS 및 GNU / Linux 친화적 : ✓
기타 웹 자료
웹에 대해 말하면 CL 땅 에는 다른 멋진 도서관 이 있습니다 .
- 웹 서버 : Woo 는 Nodejs보다 빠른 빠른 HTTP 서버 (차트에주의하세요…), wookie 는 비동기 http 서버입니다.
- Dexador 는 HTTP 클라이언트입니다.
- Plump , lquery 및 CLSS를 사용하면 html을 구문 분석하고 DOM을 쉽게 쿼리 할 수 있습니다.
- cl-bootstrap 은 cl-who 템플릿 엔진에 대한 twitter-bootstrap 단축키를 제공합니다 (일반 템플릿도 있지만 Jade / Pug를 대체하는 종류).
Lisp의 Ajax
(위 블록을 사용하면 위의 내용이 필요하지 않을 수도 있습니다.)
ParenScript를 사용하면 일반적인 워크 플로를 사용하지 않고도 Common Lisp에서 JavaScript를 작성할 수 있으므로 fetch
웹 API를 사용하여 Ajax 호출을 작성할 수 있습니다 .