问题标签 [hamlet]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
229 浏览

haskell - Hamlet 模板中的紧凑 if-then-else

我试图理解 Yesod 的 Hamlet 中的变量插值,特别是实现 if-then-else-like 逻辑。假设我想根据整数的值添加 CSS 样式xx来自模板中的 for 循环,即我无法从 Haskell 代码中访问它。

期望的结果:

尝试内联if

尝试使用$with

两者都不起作用;两者都导致

显然,#{...}解析器中没有实现 Haskell 语法的一部分。有没有一种干净的方法可以做到这一点?我目前只能看到一种出路,而且非常丑陋:

0 投票
1 回答
72 浏览

yesod - Yesod Hamlet 通过用双引号替换单引号来破坏 HTML

我有一些在 Hamlet 中使用的 HTML 代码:

请注意,单引号 fordata-options允许在字符串中使用双引号。

问题是当哈姆雷特呈现页面时,哈姆雷特放置"',所以 HTML 被破坏了:

一些外部 JS 库插件代码运行,它尝试解析内部的 JSONdata-options并失败。

如何告诉 Hamlet 包含文字字符串?

我尝试了以下各种组合:

在 hamlet 文件中:

但是所有尝试都会在字符串中产生无效的 HTML 或无效的 JSON。

如何指示 Hamlet 在输出 HTML 中简单地包含文字字符串?

更新:

尝试了更多的东西,没有结果。

string2示例不起作用,因为哈姆雷特似乎认为我正在尝试id="{"按照https://www.yesodweb.com/book/shakespearean-templates#shakespearean-templates_attributes进行设置

0 投票
1 回答
30 浏览

haskell - 如何将键/值对附加到在yesod的小村庄块中生成的url

我想创建一个链接,将键/值对附加到 hamlet 块内的 href 上的 URL。

以上似乎不太奏效。我能够让它在小村庄以外的另一个部分工作,如下所示。

我在 Yesod 书中找到了一个类似的例子,但我无法将它翻译成我想要的。

以上是示例,但它用于将#变量附加到 URL。我尝试了一些变体来代替#with?但到目前为止没有任何效果。

我只想链接到/loadingprocesses?processlist=<variable>

0 投票
1 回答
47 浏览

haskell - 哈姆雷特 html 未注册或 tags correctly for my home route handler</h1> <div id="body"><p>For some reason the <code><head></code> tag for the home of my website is not being processed the way I would like. Here is the sourc</a> </h3> <div class="s-post-summary--content-excerpt"> </div> <div class="s-post-summary--meta"> <div class="s-post-summary--meta-tags tags js-tags t-cñ t-ûnet t-aspûnet-mvc t-aspûnet-mvc-4 t-actionfilterattribute"> <a href="/tags/haskell" class="post-tag flex--item mt0 js-tagname-cñ" title="" rel="tag">haskell</a><a href="/tags/yesod" class="post-tag flex--item mt0 js-tagname-cñ" title="" rel="tag">yesod</a><a href="/tags/hamlet" class="post-tag flex--item mt0 js-tagname-cñ" title="" rel="tag">hamlet</a> </div> <div class="s-user-card s-user-card__minimal"> <div class="s-user-card--info"> <div class="s-user-card--link d-flex gs4"> </div> </div> <time class="s-user-card--time" style="margin-left:5px;"> <span title="2022-04-18 08:34:11Z" class="relativetime"> 2020-11-29T00:28:49.863</span></time> </div> </div> </div> </div><div id="question-summary-71909431" class="s-post-summary js-post-summary" data-post-id="71909431" data-post-type-id="1"> <div class="s-post-summary--stats js-post-summary-stats"> <div class="s-post-summary--stats-item s-post-summary--stats-item__emphasized" title="Score of 0"> <span class="s-post-summary--stats-item-number">0</span> <span class="s-post-summary--stats-item-unit">投票</span> </div> <div class="s-post-summary--stats-item " title="0 answers"> <span class="s-post-summary--stats-item-number">0</span> <span class="s-post-summary--stats-item-unit">回答</span> </div> <div class="s-post-summary--stats-item " title="16 views"> <span class="s-post-summary--stats-item-number">16</span> <span class="s-post-summary--stats-item-unit">浏览</span> </div> </div> <div class="s-post-summary--content"> <h3 class="s-post-summary--content-title"> <a href="/questions/68327730" class="s-link">url - 如何在 Hamlet, Yesod 中创建一个以键为参数的类型安全 url?</a> </h3> <div class="s-post-summary--content-excerpt"> <p>如何在 Hamlet 中为 id=4 的人创建一个类型安全的 url。所以一个到 person/4 的类型安全链接</p> </div> <div class="s-post-summary--meta"> <div class="s-post-summary--meta-tags tags js-tags t-cñ t-ûnet t-aspûnet-mvc t-aspûnet-mvc-4 t-actionfilterattribute"> <a href="/tags/url" class="post-tag flex--item mt0 js-tagname-cñ" title="" rel="tag">url</a><a href="/tags/yesod" class="post-tag flex--item mt0 js-tagname-cñ" title="" rel="tag">yesod</a><a href="/tags/typesafe" class="post-tag flex--item mt0 js-tagname-cñ" title="" rel="tag">typesafe</a><a href="/tags/hamlet" class="post-tag flex--item mt0 js-tagname-cñ" title="" rel="tag">hamlet</a> </div> <div class="s-user-card s-user-card__minimal"> <div class="s-user-card--info"> <div class="s-user-card--link d-flex gs4"> </div> </div> <time class="s-user-card--time" style="margin-left:5px;"> <span title="2022-04-18 08:34:11Z" class="relativetime"> 2021-07-10T12:29:55.687</span></time> </div> </div> </div> </div><div id="question-summary-71909431" class="s-post-summary js-post-summary" data-post-id="71909431" data-post-type-id="1"> <div class="s-post-summary--stats js-post-summary-stats"> <div class="s-post-summary--stats-item s-post-summary--stats-item__emphasized" title="Score of 0"> <span class="s-post-summary--stats-item-number">0</span> <span class="s-post-summary--stats-item-unit">投票</span> </div> <div class="s-post-summary--stats-item " title="4 answers"> <span class="s-post-summary--stats-item-number">4</span> <span class="s-post-summary--stats-item-unit">回答</span> </div> <div class="s-post-summary--stats-item " title="244 views"> <span class="s-post-summary--stats-item-number">244</span> <span class="s-post-summary--stats-item-unit">浏览</span> </div> </div> <div class="s-post-summary--content"> <h3 class="s-post-summary--content-title"> <a href="/questions/69652866" class="s-link">reactjs - 为不同的组件加载不同的JS库文件</a> </h3> <div class="s-post-summary--content-excerpt"> <p>我有一个用 ReactJS 制作的网站。中<code>public/index.html</code>,我有</p> <p>其中<code>analyzejs-v1.js</code>有6Mo,<code>analyzejs-v2.js</code>有3Mo;它们都是我无法修改的固定文件。</p> <p>这两个文件不是模块;它们的功能被声明(例如,<code>declare function f1(address: string): string;</code>在<code>src/defines/analyzejs-v1.d.ts</code>)。所以有些组件<code>analyzejs-v1.js</code>通过使用函数名来调用函数,比如<code>f1(...)</code>直接不带任何命名空间、导入或导出。其余组件<code>analyzejs-v2.js</code>通过使用函数名称<code>f2(...)</code>直接调用函数,而不需要任何命名空间、导入或导出。</p> <p>加载这两个js库文件需要时间。所以我正在寻找一种方法来加载<code>analyzejs-v1.js</code>或<code>analyzejs-v2.js</code>根据组件(或 URL)。</p> <p>那么有没有人知道为不同组件加载不同 JS 库文件的常规方法?</p> </div> <div class="s-post-summary--meta"> <div class="s-post-summary--meta-tags tags js-tags t-cñ t-ûnet t-aspûnet-mvc t-aspûnet-mvc-4 t-actionfilterattribute"> <a href="/tags/reactjs" class="post-tag flex--item mt0 js-tagname-cñ" title="" rel="tag">reactjs</a><a href="/tags/webpack" class="post-tag flex--item mt0 js-tagname-cñ" title="" rel="tag">webpack</a><a href="/tags/react-scripts" class="post-tag flex--item mt0 js-tagname-cñ" title="" rel="tag">react-scripts</a><a href="/tags/script-tag" class="post-tag flex--item mt0 js-tagname-cñ" title="" rel="tag">script-tag</a><a href="/tags/hamlet" class="post-tag flex--item mt0 js-tagname-cñ" title="" rel="tag">hamlet</a> </div> <div class="s-user-card s-user-card__minimal"> <div class="s-user-card--info"> <div class="s-user-card--link d-flex gs4"> </div> </div> <time class="s-user-card--time" style="margin-left:5px;"> <span title="2022-04-18 08:34:11Z" class="relativetime"> 2021-10-20T20:49:02.107</span></time> </div> </div> </div> </div><div id="question-summary-71909431" class="s-post-summary js-post-summary" data-post-id="71909431" data-post-type-id="1"> <div class="s-post-summary--stats js-post-summary-stats"> <div class="s-post-summary--stats-item s-post-summary--stats-item__emphasized" title="Score of 0"> <span class="s-post-summary--stats-item-number">0</span> <span class="s-post-summary--stats-item-unit">投票</span> </div> <div class="s-post-summary--stats-item " title="1 answers"> <span class="s-post-summary--stats-item-number">1</span> <span class="s-post-summary--stats-item-unit">回答</span> </div> <div class="s-post-summary--stats-item " title="35 views"> <span class="s-post-summary--stats-item-number">35</span> <span class="s-post-summary--stats-item-unit">浏览</span> </div> </div> <div class="s-post-summary--content"> <h3 class="s-post-summary--content-title"> <a href="/questions/71161964" class="s-link">haskell - OptionalSubsite 的哈姆雷特路线</a> </h3> <div class="s-post-summary--content-excerpt"> <p>我正在使用一个 OptionalSubsite,如下所示:<a href="https://gist.github.com/snoyberg/8d85d41c5b4d0da002ae" rel="nofollow noreferrer">https ://gist.github.com/snoyberg/8d85d41c5b4d0da002ae</a></p> <p>如何创建指向此子站点中提供的文件的 hamlet 链接/路由?</p> <p>我不能依赖模板 haskell 函数,例如为<code>staticFiles</code>服务文件夹的内容生成路由,因为它并不总是存在,因此 OptionalSubsite。</p> </div> <div class="s-post-summary--meta"> <div class="s-post-summary--meta-tags tags js-tags t-cñ t-ûnet t-aspûnet-mvc t-aspûnet-mvc-4 t-actionfilterattribute"> <a href="/tags/haskell" class="post-tag flex--item mt0 js-tagname-cñ" title="" rel="tag">haskell</a><a href="/tags/yesod" class="post-tag flex--item mt0 js-tagname-cñ" title="" rel="tag">yesod</a><a href="/tags/hamlet" class="post-tag flex--item mt0 js-tagname-cñ" title="" rel="tag">hamlet</a> </div> <div class="s-user-card s-user-card__minimal"> <div class="s-user-card--info"> <div class="s-user-card--link d-flex gs4"> </div> </div> <time class="s-user-card--time" style="margin-left:5px;"> <span title="2022-04-18 08:34:11Z" class="relativetime"> 2022-02-17T16:32:49.377</span></time> </div> </div> </div> </div> </div> <br class="cbt"> <div class="s-pagination site1 themed pager float-left"> <a class="s-pagination--item js-pagination-item " href="/tags/hamlet?p=1" rel="" title="Go to page 2">1</a><a class="s-pagination--item js-pagination-item " href="/tags/hamlet?p=2" rel="" title="Go to page 2">2</a><a class="s-pagination--item js-pagination-item " href="/tags/hamlet?p=3" rel="" title="Go to page 2">3</a><a class="s-pagination--item js-pagination-item " href="/tags/hamlet?p=4" rel="" title="Go to page 2">4</a><a class="s-pagination--item js-pagination-item " href="/tags/hamlet?p=5" rel="" title="Go to page 2">5</a><a class="s-pagination--item js-pagination-item " href="/tags/hamlet?p=6" rel="" title="Go to page 2">6</a><a class="s-pagination--item js-pagination-item " href="/tags/hamlet?p=7" rel="" title="Go to page 2">7</a><a class="s-pagination--item js-pagination-item " href="/tags/hamlet?p=8" rel="" title="Go to page 2">8</a><a class="s-pagination--item js-pagination-item is-selected" href="/tags/hamlet?p=9" rel="" title="Go to page 2">9</a><a class="s-pagination--item js-pagination-item " href="/tags/hamlet?p=10" rel="" title="Go to page 2">10</a></div> </div> <div id="sidebar" class="show-votes" role="complementary" aria-label="sidebar"> <div class="module js-gps-related-tags" id="related-tags"> <h4 id="h-related-tags">Reference</h4> <div data-name="javascript"> <a href="https://php.github.net.cn" class="post-tag no-tag-menu js-gps-track" >php</a> <span class="item-multiplier"><span class="item-multiplier-x">×</span> <span class="item-multiplier-count">1429865</span> </span> </div> <div data-name="javascript"> <a href="https://c-cpp.com" class="post-tag no-tag-menu js-gps-track" >c/c++</a> <span class="item-multiplier"><span class="item-multiplier-x">×</span> <span class="item-multiplier-count">756500</span> </span> </div> <div data-name="javascript"> <a href="https://nginx.github.net.cn" class="post-tag no-tag-menu js-gps-track" target="_blank">nginx</a> <span class="item-multiplier"><span class="item-multiplier-x">×</span> <span class="item-multiplier-count">49975</span> </span> </div> <div data-name="javascript"> <a href="https://mongodb.net.cn" class="post-tag no-tag-menu js-gps-track" >mongodb</a> <span class="item-multiplier"><span class="item-multiplier-x">×</span> <span class="item-multiplier-count">159057</span> </span> </div> <div data-name="javascript"> <a href="https://mybatis.net.cn" class="post-tag no-tag-menu js-gps-track" >mybatis</a> <span class="item-multiplier"><span class="item-multiplier-x">×</span> <span class="item-multiplier-count">3233</span> </span> </div> <div data-name="javascript"> <a href="https://anaconda.org.cn" class="post-tag no-tag-menu js-gps-track" >anaconda</a> <span class="item-multiplier"><span class="item-multiplier-x">×</span> <span class="item-multiplier-count">13410</span> </span> </div> <div data-name="javascript"> <a href="https://pycharm.net.cn" class="post-tag no-tag-menu js-gps-track" >pycharm</a> <span class="item-multiplier"><span class="item-multiplier-x">×</span> <span class="item-multiplier-count">14671</span> </span> </div> <div data-name="javascript"> <a href="https://python.github.net.cn" class="post-tag no-tag-menu js-gps-track" >python</a> <span class="item-multiplier"><span class="item-multiplier-x">×</span> <span class="item-multiplier-count">1902243</span> </span> </div> <div data-name="javascript"> <a href="https://vscode.github.net.cn" class="post-tag no-tag-menu js-gps-track" >vscode</a> <span class="item-multiplier"><span class="item-multiplier-x">×</span> <span class="item-multiplier-count">56040</span> </span> </div> <div data-name="javascript"> <a href="https://dockerdocs.cn" class="post-tag no-tag-menu js-gps-track" >docker</a> <span class="item-multiplier"><span class="item-multiplier-x">×</span> <span class="item-multiplier-count">110988</span> </span> </div> <div data-name="javascript"> <a href="https://github.net.cn" class="post-tag no-tag-menu js-gps-track" >github</a> <span class="item-multiplier"><span class="item-multiplier-x">×</span> <span class="item-multiplier-count">49000</span> </span> </div> <div data-name="javascript"> <a href="https://flask.github.net.cn" class="post-tag no-tag-menu js-gps-track" >flask</a> <span class="item-multiplier"><span class="item-multiplier-x">×</span> <span class="item-multiplier-count">49129</span> </span> </div> <div data-name="javascript"> <a href="https://ffmpeg.github.net.cn" class="post-tag no-tag-menu js-gps-track" >ffmpeg</a> <span class="item-multiplier"><span class="item-multiplier-x">×</span> <span class="item-multiplier-count">24037</span> </span> </div> <div data-name="javascript"> <a href="https://jmeter.net" class="post-tag no-tag-menu js-gps-track" >jmeter</a> <span class="item-multiplier"><span class="item-multiplier-x">×</span> <span class="item-multiplier-count">16910</span> </span> </div> <div data-name="javascript"> <a href="https://matplotlib.net" class="post-tag no-tag-menu js-gps-track" >matplotlib</a> <span class="item-multiplier"><span class="item-multiplier-x">×</span> <span class="item-multiplier-count">63493</span> </span> </div> <div data-name="javascript"> <a href="https://getbootstrap.net" class="post-tag no-tag-menu js-gps-track" >bootstrap</a> <span class="item-multiplier"><span class="item-multiplier-x">×</span> <span class="item-multiplier-count">54641</span> </span> </div> </div> </div> </div> </div> <footer id="footer" class="site-footer js-footer" role="contentinfo"> <div class="site-footer--container"> <div class="site-footer--logo"> <a href="https://stackoverflow.com"><svg aria-hidden="true" class="native svg-icon iconLogoGlyphMd" width="32" height="37" viewBox="0 0 32 37"><path d="M26 33v-9h4v13H0V24h4v9h22Z" fill="#BCBBBB"/><path d="m21.5 0-2.7 2 9.9 13.3 2.7-2L21.5 0ZM26 18.4 13.3 7.8l2.1-2.5 12.7 10.6-2.1 2.5ZM9.1 15.2l15 7 1.4-3-15-7-1.4 3Zm14 10.79.68-2.95-16.1-3.35L7 23l16.1 2.99ZM23 30H7v-3h16v3Z" fill="#F48024"/></svg></a> </div> <nav class="site-footer--nav"> <div class="site-footer--col"> <h5 class="-title"><a href="https://stackoverflow.org.cn" class="js-gps-track" data-gps-track="footer.click({ location: 3, link: 15})">Stack Overflow 中文网</a></h5> <p>遵从 CC BY-SA 知识共享许可协议。</p> </div> </nav> </div> </footer> <script> var _hmt = _hmt || []; (function() { var hm = document.createElement("script"); hm.src = "https://hm.baidu.com/hm.js?709ff2ad9744e86b5b0eee677fc13ede"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); })(); </script> <!-- Google tag (gtag.js) --> <script async src="https://www.googletagmanager.com/gtag/js?id=G-1MW5BV8G8E"></script> <script> window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'G-1MW5BV8G8E'); </script> <script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-6117966252207595" crossorigin="anonymous"></script> </body> </html>