Có ai có thể chỉ cho tôi một ví dụ về cách sử dụng Hamlet mà không có Yesod không? http://www.yesodweb.com/book/templates là một tài liệu tuyệt vời, nhưng tôi không thể lấy phiên ghci của mình để hiển thị ngay cả một mẫu đơn giản mà không bị lỗi.Sử dụng Hamlet trong Haskell mà không có Yesod
Trả lời
Dưới đây là ví dụ hiển thị hầu hết nội dung cơ bản, bao gồm hiển thị URL đã nhập.
{-# LANGUAGE TemplateHaskell, QuasiQuotes #-}
import Data.Text
import Text.Blaze.Html.Renderer.String (renderHtml)
import Text.Hamlet hiding (renderHtml)
data Url = Haskell | Yesod
renderUrl Haskell _ = pack "http://haskell.org"
renderUrl Yesod _ = pack "http://www.yesodweb.com"
title = pack "This is in scope of the template below"
template :: HtmlUrl Url
template = [hamlet|
<html>
<head>
#{title}
<body>
<p>
<a [email protected]{Haskell}>Haskell
<a [email protected]{Yesod}>Yesod
|]
main = do
let html = template renderUrl
putStrLn $ renderHtml html
Output:
<html><head>This is in scope of the template below</head>
<body><p><a href="http://haskell.org">Haskell</a>
<a href="http://www.yesodweb.com">Yesod</a>
</p>
</body>
</html>
Thử cách này vì nó cho tôi lỗi biên dịch ghc này: http://pastie.org/2220259 nếu tôi thay đổi @ {} thành # {} I get: http://pastie.org/2220261 – singpolyma
Nó hoạt động tốt ở đây chạy nó với 'rung hc' bằng cách sử dụng' ghc 7.0.2' và 'hamlet 0.8.2'. Làm thế nào bạn đang chạy này? Lỗi đầu tiên trông rất lạ. Pragmas ngôn ngữ kết thúc như thế nào trong HTML? Điều thứ hai có vẻ như bạn chỉ cần loại bỏ một số cuộc gọi 'gói'. – hammar
đã cố gắng để chạy ghc --make, cố gắng runghc tôi nhận được http://pastie.org/2220468 ghc 7.0.3 ấp 0.6.1.2 - oh, phiên bản của tôi là khá lớn hơn một chút so với bạn. có lẽ cú pháp đã được thay đổi: ( – singpolyma
Vâng, handwaving rendering URL và làm những việc theo cách ngu ngốc nhất mà làm việc, chúng ta có thể sử dụng này:
hamVal = [$hamlet|
<html>
<head><title>Test page
<body>Testing
|]
test :: ByteString
test = renderHamlet (\_ _ -> "") hamVal
Những công trình như mong đợi. Tôi tưởng tượng bạn muốn làm một cái gì đó hơi hữu ích hơn, nhưng ví dụ tầm thường ở đây hoạt động tốt vì vậy thật khó để nói nhiều hơn mà không biết bạn đang gặp rắc rối ở đâu.
Vì vậy, tôi nhận được điều này để biên dịch, nhưng đáng ngạc nhiên là nó xuất ra
Ah, tôi đã phát hiện ra nó. Rõ ràng là hamlet từng thích haml hơn, và phiên bản của tôi là cú pháp cũ – singpolyma
- 1. Làm thế nào để sử dụng UTCTime trong yesod mà không có lỗi mô-đun ẩn?
- 2. Cách thức sử dụng cú pháp Haskell trong [$ parseRoutes |/Home GET |]?
- 3. Có chức năng nào chuyển từ HTML thuần sang cấu trúc Hamlet không?
- 4. Liên kết tới tệp tĩnh trong Yesod không có mã định danh Haskell
- 5. Trả lại trạng thái lỗi trong Haskell và Yesod
- 6. Có thể sử dụng Văn bản hoặc ByteString trên HXT trong Haskell không?
- 7. Yesod: Sử dụng typesafe URL trong AJAX gọi
- 8. Sử dụng SSL trong Haskell
- 9. Có yesod sử dụng bộ xử lý khi không hoạt động?
- 10. Sử dụng Có thể gõ vào Haskell
- 11. Hamlet tự động truy cập vào các biến trong phạm vi
- 12. Cảnh báo biến không sử dụng trong mã Haskell
- 13. Mà Warp và snap-server của Yesod tôi nên chọn cho một máy chủ ứng dụng hiệu năng cao?
- 14. Haskell: không thể sử dụng "map putStrLn"?
- 15. Yesod Bảng có thể chỉnh sửa
- 16. Phạm vi cho phép khi được sử dụng mà không có trong là gì?
- 17. Dự án mẫu Yesod
- 18. Haskell không có loại
- 19. foldr vs sử dụng foldr1 trong Haskell
- 20. Có thể sử dụng Xtext mà không có nhật thực?
- 21. Có cách nào để tắt thêm trình xử lý cho Yesod không?
- 22. Các mẫu Yesod có lưu lượng trang
- 23. Trường hợp ngoại lệ trong Yesod
- 24. Websockets in Yesod?
- 25. Sử dụng QTQuick với haskell
- 26. Yesod delete cascade
- 27. Tôi có đang suy nghĩ và sử dụng các loại singleton trong Haskell đúng không?
- 28. vấn đề cài đặt Yesod
- 29. Yesod devel cpu overhead
- 30. Haskell QuickCheck2 sử dụng ByteString?
Nó có thể giúp đỡ nếu bạn thấy những gì bạn đã làm trong GHCi, và làm thế nào nó bị treo. –