2011-07-15 22 views
11

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

+1

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. –

Trả lời

16

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> 
+0

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

+0

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

+0

đã 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

3

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.

+0

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 Trang kiểm tra <body> Thử nghiệm thay vì chuyển đổi thành đúng-html-thích hợp – <span class="text-secondary"> <small> <a rel="noopener" target="_blank" href="https://stackoverflow.com/users/8611/">singpolyma</a></span> <span></span> </small> </span> </p> </div> </div> </div> <div itemprop="comment" class="post-comment"> <div class="row"> <div class="col-lg-1"><span class="text-secondary">+0</span></div> <div class="col-lg-11"> <p class="commenttext">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ũ – <span class="text-secondary"> <small> <a rel="noopener" target="_blank" href="https://stackoverflow.com/users/8611/">singpolyma</a></span> <span></span> </small> </span> </p> </div> </div> </div> </div> </div> </article> </div> <div class="clearfix"> </div> <div class="relative-box"> <div class="relative">Các vấn đề liên quan</div> <ul class="relative_list"> <li> 1. <a href="http://vi.voidcc.com/question/p-cuikiuro-x.html" target="_blank" title="Làm thế nào để sử dụng UTCTime trong yesod mà không có lỗi mô-đun ẩn?"> Làm thế nào để sử dụng UTCTime trong yesod mà không có lỗi mô-đun ẩn? </a> </li> <li> 2. <a href="http://vi.voidcc.com/question/p-rcgeewrf-q.html" target="_blank" title="Cách thức sử dụng cú pháp Haskell trong [$ parseRoutes |/Home GET |]?"> Cách thức sử dụng cú pháp Haskell trong [$ parseRoutes |/Home GET |]? </a> </li> <li> 3. <a href="http://vi.voidcc.com/question/p-nlgoqynb-bg.html" target="_blank" title="Có chức năng nào chuyển từ HTML thuần sang cấu trúc Hamlet không?"> Có chức năng nào chuyển từ HTML thuần sang cấu trúc Hamlet không? </a> </li> <li> 4. <a href="http://vi.voidcc.com/question/p-wghlzpbk-bg.html" target="_blank" title="Liên kết tới tệp tĩnh trong Yesod không có mã định danh Haskell"> Liên kết tới tệp tĩnh trong Yesod không có mã định danh Haskell </a> </li> <li> 5. <a href="http://vi.voidcc.com/question/p-kjjarqon-bp.html" target="_blank" title="Trả lại trạng thái lỗi trong Haskell và Yesod"> Trả lại trạng thái lỗi trong Haskell và Yesod </a> </li> <li> 6. <a href="http://vi.voidcc.com/question/p-kvdtirvb-t.html" target="_blank" title="Có thể sử dụng Văn bản hoặc ByteString trên HXT trong Haskell không?"> Có thể sử dụng Văn bản hoặc ByteString trên HXT trong Haskell không? </a> </li> <li> 7. <a href="http://vi.voidcc.com/question/p-vunfytey-bd.html" target="_blank" title="Yesod: Sử dụng typesafe URL trong AJAX gọi"> Yesod: Sử dụng typesafe URL trong AJAX gọi </a> </li> <li> 8. <a href="http://vi.voidcc.com/question/p-balwbfcu-v.html" target="_blank" title="Sử dụng SSL trong Haskell"> Sử dụng SSL trong Haskell </a> </li> <li> 9. <a href="http://vi.voidcc.com/question/p-yuzzebpt-bp.html" target="_blank" title="Có yesod sử dụng bộ xử lý khi không hoạt động?"> Có yesod sử dụng bộ xử lý khi không hoạt động? </a> </li> <li> 10. <a href="http://vi.voidcc.com/question/p-yrmwsoap-d.html" target="_blank" title="Sử dụng Có thể gõ vào Haskell"> Sử dụng Có thể gõ vào Haskell </a> </li> <li> 11. <a href="http://vi.voidcc.com/question/p-orpzqcbz-s.html" target="_blank" title="Hamlet tự động truy cập vào các biến trong phạm vi"> Hamlet tự động truy cập vào các biến trong phạm vi </a> </li> <li> 12. <a href="http://vi.voidcc.com/question/p-kqiguqup-u.html" target="_blank" title="Cảnh báo biến không sử dụng trong mã Haskell"> Cảnh báo biến không sử dụng trong mã Haskell </a> </li> <li> 13. <a href="http://vi.voidcc.com/question/p-vhktftyn-bh.html" target="_blank" title="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?"> 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? </a> </li> <li> 14. <a href="http://vi.voidcc.com/question/p-frpyajtk-b.html" target="_blank" title="Haskell: không thể sử dụng "map putStrLn"?"> Haskell: không thể sử dụng "map putStrLn"? </a> </li> <li> 15. <a href="http://vi.voidcc.com/question/p-elhszmsc-u.html" target="_blank" title="Yesod Bảng có thể chỉnh sửa"> Yesod Bảng có thể chỉnh sửa </a> </li> <li> 16. <a href="http://vi.voidcc.com/question/p-hxemvmws-t.html" target="_blank" title="Phạm vi cho phép khi được sử dụng mà không có trong là gì?"> Phạm vi cho phép khi được sử dụng mà không có trong là gì? </a> </li> <li> 17. <a href="http://vi.voidcc.com/question/p-vbnhofiz-u.html" target="_blank" title="Dự án mẫu Yesod"> Dự án mẫu Yesod </a> </li> <li> 18. <a href="http://vi.voidcc.com/question/p-fujnzuby-bh.html" target="_blank" title="Haskell không có loại"> Haskell không có loại </a> </li> <li> 19. <a href="http://vi.voidcc.com/question/p-tprhommu-z.html" target="_blank" title="foldr vs sử dụng foldr1 trong Haskell"> foldr vs sử dụng foldr1 trong Haskell </a> </li> <li> 20. <a href="http://vi.voidcc.com/question/p-coblmrah-bd.html" target="_blank" title="Có thể sử dụng Xtext mà không có nhật thực?"> Có thể sử dụng Xtext mà không có nhật thực? </a> </li> <li> 21. <a href="http://vi.voidcc.com/question/p-ehazwsni-bk.html" target="_blank" title="Có cách nào để tắt thêm trình xử lý cho Yesod không?"> Có cách nào để tắt thêm trình xử lý cho Yesod không? </a> </li> <li> 22. <a href="http://vi.voidcc.com/question/p-bbyewkda-s.html" target="_blank" title="Các mẫu Yesod có lưu lượng trang"> Các mẫu Yesod có lưu lượng trang </a> </li> <li> 23. <a href="http://vi.voidcc.com/question/p-uzfttzdc-bk.html" target="_blank" title="Trường hợp ngoại lệ trong Yesod"> Trường hợp ngoại lệ trong Yesod </a> </li> <li> 24. <a href="http://vi.voidcc.com/question/p-xgnwpunj-bg.html" target="_blank" title="Websockets in Yesod?"> Websockets in Yesod? </a> </li> <li> 25. <a href="http://vi.voidcc.com/question/p-crydhdtp-be.html" target="_blank" title="Sử dụng QTQuick với haskell"> Sử dụng QTQuick với haskell </a> </li> <li> 26. <a href="http://vi.voidcc.com/question/p-uhrnxkwq-be.html" target="_blank" title="Yesod delete cascade"> Yesod delete cascade </a> </li> <li> 27. <a href="http://vi.voidcc.com/question/p-efmnlsxd-o.html" target="_blank" title="Tôi có đang suy nghĩ và sử dụng các loại singleton trong Haskell đúng không?"> Tôi có đang suy nghĩ và sử dụng các loại singleton trong Haskell đúng không? </a> </li> <li> 28. <a href="http://vi.voidcc.com/question/p-natloawu-z.html" target="_blank" title="vấn đề cài đặt Yesod"> vấn đề cài đặt Yesod </a> </li> <li> 29. <a href="http://vi.voidcc.com/question/p-biexodxz-u.html" target="_blank" title="Yesod devel cpu overhead"> Yesod devel cpu overhead </a> </li> <li> 30. <a href="http://vi.voidcc.com/question/p-ecfjbtbz-be.html" target="_blank" title="Haskell QuickCheck2 sử dụng ByteString?"> Haskell QuickCheck2 sử dụng ByteString? </a> </li> </ul> </div> <div> <script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script> <ins class="adsbygoogle" style="display:block" data-ad-format="autorelaxed" data-ad-client="ca-pub-6208739752673518" data-ad-slot="3534119089"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script> </div> <div class="padding-top-10"></div> </div> </div> <script type="text/javascript" src="http://img2.voidcc.com/voidso/script/side.js?t=1652515422912"></script> <script type="text/javascript" src="http://img2.voidcc.com/voidso/plugin/highlight/highlight.pack.js"></script> <link href="http://img2.voidcc.com/voidso/plugin/highlight/styles/docco.css" media="screen" rel="stylesheet" type="text/css" /> <script type="text/javascript"> $('pre').each(function(i, e) { hljs.highlightBlock(e, "<span class='indent'> </span>", false) }); </script> <div class="col-lg-3 col-md-4 col-sm-5"> <div id="rightTop"> <div class="row"> <script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script> <!-- VOIDCC问答侧边栏广告 --> <ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-6208739752673518" data-ad-slot="3862022848" data-ad-format="auto" data-full-width-responsive="true"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script> </div> <div class="row sidebar panel panel-default"> <div class="panel-heading font-bold"> Câu hỏi mới nhất </div> <div class="m-b-sm m-t-sm clearfix"> <ul class="side_article_list"> <li class="side_article_list_item"> 1. <a href="http://vi.voidcc.com/question/p-mjnslgei-bu.html" target="_blank" title="SQL Server: Ghi kích thước lớn hơn so với dự kiến ​​"> SQL Server: Ghi kích thước lớn hơn so với dự kiến ​​ </a> </li> <li class="side_article_list_item"> 2. <a href="http://vi.voidcc.com/question/p-dmgaalrf-bx.html" target="_blank" title="CSS: set dòng CSS"> CSS: set dòng CSS </a> </li> <li class="side_article_list_item"> 3. <a href="http://vi.voidcc.com/question/p-sgbhjnxv-cb.html" target="_blank" title="Cách khắc phục "WebDriverException: Thông báo: kết nối bị từ chối"?"> Cách khắc phục "WebDriverException: Thông báo: kết nối bị từ chối"? </a> </li> <li class="side_article_list_item"> 4. <a href="http://vi.voidcc.com/question/p-szdehweh-bq.html" target="_blank" title="Có ổn không khi sắp xếp các đối tượng dựa trên giá trị gia tăng nếu ứng dụng không bao giờ dựa vào nhận dạng đối tượng của nó?"> Có ổn không khi sắp xếp các đối tượng dựa trên giá trị gia tăng nếu ứng dụng không bao giờ dựa vào nhận dạng đối tượng của nó? </a> </li> <li class="side_article_list_item"> 5. <a href="http://vi.voidcc.com/question/p-dlbrrkox-bz.html" target="_blank" title="Làm thế nào để yêu cầu một đặc tính trong một đặc điểm khác một cách chính xác?"> Làm thế nào để yêu cầu một đặc tính trong một đặc điểm khác một cách chính xác? </a> </li> <li class="side_article_list_item"> 6. <a href="http://vi.voidcc.com/question/p-btsjtbdo-bz.html" target="_blank" title="Thay lambda với tài liệu tham khảo phương pháp trong flatMap trong mảng bản đồ"> Thay lambda với tài liệu tham khảo phương pháp trong flatMap trong mảng bản đồ </a> </li> <li class="side_article_list_item"> 7. <a href="http://vi.voidcc.com/question/p-xqhadack-bz.html" target="_blank" title="Echarts - đánh dấu/chú thích của hộp công cụ tùy chỉnh"> Echarts - đánh dấu/chú thích của hộp công cụ tùy chỉnh </a> </li> <li class="side_article_list_item"> 8. <a href="http://vi.voidcc.com/question/p-cyxshfdt-bu.html" target="_blank" title="Python Pandas: Gán giá trị cuối cùng của nhóm DataFrame cho tất cả các mục của nhóm đó"> Python Pandas: Gán giá trị cuối cùng của nhóm DataFrame cho tất cả các mục của nhóm đó </a> </li> <li class="side_article_list_item"> 9. <a href="http://vi.voidcc.com/question/p-mzjoxzok-bq.html" target="_blank" title="Trình ghi HTML trong python"> Trình ghi HTML trong python </a> </li> <li class="side_article_list_item"> 10. <a href="http://vi.voidcc.com/question/p-bchxoonr-bz.html" target="_blank" title="Làm cách nào để phê duyệt đoạn mã từ tệp jenkinsfile thông qua bảng điều khiển tập lệnh groovy?"> Làm cách nào để phê duyệt đoạn mã từ tệp jenkinsfile thông qua bảng điều khiển tập lệnh groovy? </a> </li> </ul> </div> </div> </div> <p class="article-nav-bar"></p> <div class="row sidebar article-nav"> <div class="row box_white visible-sm visible-md visible-lg margin-zero"> <div class="top"> <h3 class="title"><i class="glyphicon glyphicon-th-list"></i> Các vấn đề liên quan</h3> </div> <div class="article-relative-content"> <ul class="side_article_list"> <li class="side_article_list_item"> 1. <a href="http://vi.voidcc.com/question/p-cuikiuro-x.html" target="_blank" title="Làm thế nào để sử dụng UTCTime trong yesod mà không có lỗi mô-đun ẩn?"> Làm thế nào để sử dụng UTCTime trong yesod mà không có lỗi mô-đun ẩn? </a> </li> <li class="side_article_list_item"> 2. <a href="http://vi.voidcc.com/question/p-rcgeewrf-q.html" target="_blank" title="Cách thức sử dụng cú pháp Haskell trong [$ parseRoutes |/Home GET |]?"> Cách thức sử dụng cú pháp Haskell trong [$ parseRoutes |/Home GET |]? </a> </li> <li class="side_article_list_item"> 3. <a href="http://vi.voidcc.com/question/p-nlgoqynb-bg.html" target="_blank" title="Có chức năng nào chuyển từ HTML thuần sang cấu trúc Hamlet không?"> Có chức năng nào chuyển từ HTML thuần sang cấu trúc Hamlet không? </a> </li> <li class="side_article_list_item"> 4. <a href="http://vi.voidcc.com/question/p-wghlzpbk-bg.html" target="_blank" title="Liên kết tới tệp tĩnh trong Yesod không có mã định danh Haskell"> Liên kết tới tệp tĩnh trong Yesod không có mã định danh Haskell </a> </li> <li class="side_article_list_item"> 5. <a href="http://vi.voidcc.com/question/p-kjjarqon-bp.html" target="_blank" title="Trả lại trạng thái lỗi trong Haskell và Yesod"> Trả lại trạng thái lỗi trong Haskell và Yesod </a> </li> <li class="side_article_list_item"> 6. <a href="http://vi.voidcc.com/question/p-kvdtirvb-t.html" target="_blank" title="Có thể sử dụng Văn bản hoặc ByteString trên HXT trong Haskell không?"> Có thể sử dụng Văn bản hoặc ByteString trên HXT trong Haskell không? </a> </li> <li class="side_article_list_item"> 7. <a href="http://vi.voidcc.com/question/p-vunfytey-bd.html" target="_blank" title="Yesod: Sử dụng typesafe URL trong AJAX gọi"> Yesod: Sử dụng typesafe URL trong AJAX gọi </a> </li> <li class="side_article_list_item"> 8. <a href="http://vi.voidcc.com/question/p-balwbfcu-v.html" target="_blank" title="Sử dụng SSL trong Haskell"> Sử dụng SSL trong Haskell </a> </li> <li class="side_article_list_item"> 9. <a href="http://vi.voidcc.com/question/p-yuzzebpt-bp.html" target="_blank" title="Có yesod sử dụng bộ xử lý khi không hoạt động?"> Có yesod sử dụng bộ xử lý khi không hoạt động? </a> </li> <li class="side_article_list_item"> 10. <a href="http://vi.voidcc.com/question/p-yrmwsoap-d.html" target="_blank" title="Sử dụng Có thể gõ vào Haskell"> Sử dụng Có thể gõ vào Haskell </a> </li> </ul> </div> </div> </div> </div> </div> </div> </div><!-- wrap end--> <!-- footer --> <footer id="footer"> <div class="bg-simple lt"> <div class="container"> <div class="row padder-v m-t"> <div class="col-xs-8"> <ul class="list-inline"> <li><a href="http://vi.voidcc.com/contact">Liên lạc với chúng tôi</a></li> <li>© 2020 VI.VOIDCC.COM</li> <li><a rel="nofollow" href="https://beian.miit.gov.cn/" target="_blank">沪ICP备13005482号-13</a></li> <li><script type="text/javascript" src="https://s9.cnzz.com/z_stat.php?id=1280098168&web_id=1280098168"></script></li> <li><a href="http://cn.voidcc.com/" target="_blank" title="程序问答园区">简体中文</a></li> <li><a href="http://hk.voidcc.com/" target="_blank" title="程序問答園區">繁體中文</a></li> <li><a href="http://ru.voidcc.com/" target="_blank" title="поле вопросов и ответов">Русский</a></li> <li><a href="http://de.voidcc.com/" target="_blank" title="Frage - und - antwort - Park">Deutsch</a></li> <li><a href="http://es.voidcc.com/" target="_blank" title="Preguntas y respuestas">Español</a></li> <li><a href="http://hi.voidcc.com/" target="_blank" title="कार्यक्रम प्रश्न और उत्तर पार्क">हिन्दी</a></li> <li><a href="http://it.voidcc.com/" target="_blank" title="IL Programma di chiedere Park">Italiano</a></li> <li><a href="http://ja.voidcc.com/" target="_blank" title="プログラム問答園区">日本語</a></li> <li><a href="http://ko.voidcc.com/" target="_blank" title="프로그램 문답 단지">한국어</a></li> <li><a href="http://pl.voidcc.com/" target="_blank" title="program o park">Polski</a></li> <li><a href="http://tr.voidcc.com/" target="_blank" title="Program soru ve cevap parkı">Türkçe</a></li> <li><a href="http://vi.voidcc.com/" target="_blank" title="Đáp ứng viên">Tiếng Việt</a></li> <li><a href="http://fr.voidcc.com/" target="_blank" title="Programme interrogation Park">Française</a></li> </ul> </div> </div> </div> </div> </div> </footer> <!-- / footer --> <script async src="https://www.googletagmanager.com/gtag/js?id=UA-77509369-5"></script> <script> window.dataLayer = window.dataLayer || []; function gtag() { dataLayer.push(arguments); } gtag('js', new Date()); gtag('config', 'UA-77509369-5'); </script> <script> var _hmt = _hmt || []; (function () { var hm = document.createElement("script"); hm.src = "https://hm.baidu.com/hm.js?67d4731349f0b00136755b80364ce381"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); })(); </script> </body> </html>