인라인 자바 스크립트를 생성하려고하는데, parenscript 코드를 (:script)
및 (str)
태그 안에 cl-who를 사용해야합니다. ps
, ps*
, ps-inline
및 ps-inline*
은 생성 된 js와별로 차이가없는 것 같습니다.cl-who, parenscript 및 hunchentoot을 사용하여 인라인 자바 스크립트 생성하기
코드 중복을 피하기 위해 매크로를 작성하는 일반적인 방법입니까 아니면 더 좋은 방법입니까?
(in-package #:ps-test)
(defmacro standard-page ((&key title) &body body)
`(with-html-output-to-string (*standard-output* nil :prologue t :indent t)
(:html
:lang "en"
(:head
(:meta :http-equiv "Content-Type"
:content "text/html;charset=utf-8")
(:title ,title)
(:link :type "text/css"
:rel "stylesheet"
:href "/style.css"))
(:body
,@body))))
(defun main()
(with-html-output (*standard-output* nil :indent t :prologue nil)
(standard-page (:title "Parenscript test")
(:div (str "Hello worldzors"))
(:script :type "text/javascript"
(str (ps (alert "Hello world as well")))))))
(define-easy-handler (docroot :uri "/")()
(main))
(defun start-ps-test()
(setf (html-mode) :html5)
(setf *js-string-delimiter* #\")
(start (make-instance 'hunchentoot:easy-acceptor :port 8080)))
(defun stop-ps-test()
(stop *server*))
(defvar *server* (start-ps-test))