如何将xexpr表达式分解为Racket中的函数?

时间:2019-04-05 15:04:55

标签: racket

在我的Racket Web服务器/ insta应用程序中,我有一些重复的<div> HTML,我想将它们分解成一个单独的函数,然后用参数调用它,以在更大的HTML xexpr中生成div HTML。执行此操作时,在网页上获得的所有内容都是两个参数字符串。如何将<div>代码分解出来?

我尝试仅通过引用的表达式调用函数。
我还尝试在div函数中带引号的<div>代码前添加一个response / xexpr,但没有成功。

;;我想将这段代码中的<div>分解为一个单独的函数。

(define (start request)
  (response/xexpr
   '(html (head (title "Testing")
          (body (form
                  (div ((class "form-group"))
                       (label ((for "public-id")) "Public Id")
                       (input ((type "text")
                               (name  "public-id")
                               (id    "public-id")
                               (placeholder "Enter public id"))))

;;我尝试使用此功能进行此操作,无论是否带有“ response / xexpr”代码。

(define (input-field-html fld-name-id fld-caption)

 (response/xexpr

  '(div ((class "form-group"))
        (label ((for fld-name-id)) "Public Id")
        (input ((type "text")
                (name  fld-name-id)
                (placeholder fld-caption))))))

1 个答案:

答案 0 :(得分:3)

#lang web-server/insta


(define (start request)
  (response/xexpr
   `(html (head (title "Testing")
                (body (form
                       ,(input-field-html "public-id" "Enter public id")))))))


(define (input-field-html fld-name-id fld-caption)
  `(div ((class "form-group"))
        (label ((for ,fld-name-id)) "Public Id")
        (input ((type "text")
                (name  ,fld-name-id)
                (placeholder ,fld-caption)))))

请参阅: