第 3 部分 · 应用开发实战
路由与模板
路由与模板
实现 URL 路由分发,使用模板引擎渲染动态页面。
路由分发
使用 dispatch-rules 建立清晰的 URL 到处理器的映射:
#lang racket (require web-server/servlet web-server/servlet-env web-server/dispatch) (define (home req) (response/xexpr `(html (head (title "首页")) (body (h1 "欢迎"))))) (define (user-page req username) (response/xexpr `(html (body (h1 ,(format "用户: ~a" username)))))) (define-values (dispatch url) (dispatch-rules [("about") about-page] [("user" (string-arg)) user-page] [else home]))
模板渲染
使用 Racket 的准引用在代码中嵌入 HTML:
(define (render-page title content) (response/xexpr `(html (head (title ,title) (link ([rel "stylesheet"] [href "/style.css"]))) (body (header (h1 ,title)) (main ,@content) (footer (p "Powered by Racket"))))))
静态文件
(require web-server/dispatchers/dispatch-static) (serve/servlet dispatch #:port 8080 #:servlet-regexp #rx"" #:extra-files-paths (list "static"))
小结
良好的路由设计和模板渲染是 Web 应用的基础。Racket 的准引用让模板非常灵活。