2012-02-12 2 views
6

라켓의 X 표현식에서 HTML을 생성하는 권장 방법은 무엇입니까? response/xexpr처럼 보이지만 http 응답을 제공하도록 설계된 것 같습니다. 필요한 유일한 것은 라켓 목록 (또는 X- 표현식)에서 HTML 문자열을 생성하는 것입니다. 웹 서버가 필요하지 않습니다.라켓에 HTML 생성

답변

6

xml 라이브러리의 xexpr->string 함수는 내가 실수하지 않는다면 사용자가 원하는 것을해야합니다. 예제가 사용 된 예를 보려면 here을 살펴볼 수 있습니다. 여기서는 예제를 사용하여 간단한 웹 서버 응용 프로그램에 대한 HTML 응답을 생성합니다. 당신이 잠재적으로 더 편리 시설에 대한 xexprs 덤프하고자하는 경우

> (xexpr->string '(html (head (title "Hello")) (body "Hi!"))) 
"<html><head><title>Hello</title></head><body>Hi!</body></html>" 
+0

작품 매력처럼, 고마워! – GiantSquid

5

는 다음 라켓 웹 페이지를 생성하는 데 사용되는 새로운 언어가있다. 아직 문서화되어 있지 않으므로 (아직 공개되지는 않았지만 아직 새 것이므로) these sources에서 어떻게 사용되었는지 확인할 수 있습니다. 그것을 보여 빠른 예를 들어,이 실행

#lang scribble/html 
@(define name "foo") 
@html{@head{@title{@name}} 
     @body{@h1{@name}}} 

또 다른 예는 라이브러리로 사용

#lang at-exp racket/base 
(require scribble/html) 
(define (page name) 
    (output-xml 
    @html{@head{@title{@name}} 
     @body{@h1{@name}}})) 
@page{foo} 

at-exp이 필요하지, 그냥 쉽게 텍스트를 많이 작성할 수 있습니다 암호. (또한 xexprs에서도 유용 할 것입니다.)

가장 큰 차이점은이 언어에서 HTML 태그는 실제로 바인딩이므로 코드를 유지 관리하는 데 편리합니다. 또한 텍스트로 취할 수있는 사항에 매우 유연합니다. 예를 들어 문자열과 하위 태그의 엄격한 목록에 보관할 필요가 없으므로 append-map 등의 질문에 직면하지 마십시오.