问题标签 [haskell-lucid]

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 回答
367 浏览

html - 使用 Lucid 做简单的例子

鉴于:

我收到以下编译时错误:

请问我该如何解决这个编译时错误?

0 投票
2 回答
156 浏览

haskell - 我想将 Lucid 添加到 Yesod 的 defaultLayout

我正在尝试为模态使用动态 HTML id。

如果哈姆雷特接受类似的东西,基本上我的问题就会得到解决[hamlet| <div .modal .fade ##{modalIdFunction i}> |]

由于我在 Hamlet 中无法做到这一点,因此我正在尝试使用 Lucid 来做到这一点,但它与 Yesod 的 defaultLayout 不兼容。

这是我的意图:

这是错误消息:

有没有办法将 Lucid 的 LucidHtml 转换为 Blaze 的 Html?

我的整个代码在:https ://github.com/hhefesto/laurus-nobilis 和相关文件是 /src/Yesod/Lucid.hs 和 /src/Handler/Support.hs

0 投票
1 回答
171 浏览

haskell - 如何将任意动态 HTML 字符串嵌入到 Haskell 的 Lucid Html 类型中?

例如,如何解析 html 字符串<p>Test</p>并将其转换为类似于的值p_ "Test"

所以函数类型是String -> Html ().

我找到了以下项目https://github.com/dbaynard/lucid-from-html但这会生成实际的 Haskell 源代码作为String.

我知道有 HTML 解析库,但我只是想知道是否已经存在实现此功能的库?

0 投票
1 回答
182 浏览

html - 如何正确堆叠单子以最终呈现为 html?

我的目标是正确地提供带有HtmlT m类型(理想情况下)的 html 函数(如 Spock-core 中定义的那样Html ())。在这之间,我正在执行一些 Network.Http.Simple 请求。显然我对Haskell的了解不够,我没有找到强制正确单子的方法。据我所知(并理解 monad 的全部含义),没有办法组成不同的 monad,例如(Monad M, Monad N => M a -> (a -> N b) -> N b).

我设法实现的最好的方法是设置一个HtmlT IO ()类型,但后来我陷入了转换功能lucid :: HtmlT IO () -> SpockAction dtb sess state ()

这是我的连接函数(Auth是托管授权密钥和令牌的 FromJSON 数据结构)

接下来,这将连接到getRequest类型的函数中String -> HtmlT IO ()

在这里我们来到 lucid 函数,Lucid 可以处理转换Html () -> SpockAction ...Html ()无非HtmlT Identity ()如此,我的第一次尝试是用HtmlT IO ().

也许IO不是这里的好单子?当我尝试 Identity monad (拥有 a HtmlT Identity ())时,如果我将 connect 定义为,connect :: Identity Auth那么自然会要求我提供 Identity 的 FromJSON 实例(由使用 httpJSON 引起),一旦我进入 Identity monad,这可能是一个潜在的解决方案我能够将事情连接起来,并可能以一个干净的Html ()类型完成,然后我的 lucid 函数将顺利执行。

感谢您提供任何线索或提示,也许我的方法是完全错误的,我正在做的整个事情是查询一个 restAPI 网站并在使用 Spock 运行的 Web 服务器上查看结果。

0 投票
1 回答
42 浏览

haskell - Lucid nav 元素给出关于属性列表的错误

我目前正在用 Lucid 重写一个 HTML 文件,以便与 Spock Web 服务器一起使用。但是,由于某种原因,这个特定的片段给了我一个错误:

即,错误是:

我注意到删除 div 并h3解决问题,但这不是我想要的。我进行了一些谷歌搜索以尝试找到问题,但从我所见,图书馆并没有那么多我可以尝试查看的在线示例。Stackoverflow 和 Reddit 搜索也没有发现任何内容。

这是我使用 Lucid 的第一个实际项目,因此完全有可能某处存在明显的错误。

0 投票
1 回答
221 浏览

haskell - 如何使用 Spock 和 Lucid 提供静态文件?

开始使用 Haskell、Spock 和 Lucid 进行 Web 开发,我不知道如何提供我的静态文件。在Main.hsI have的目录中/static/css/main.css,它只包含一个背景颜色,以查看是否确实应用了 css。所以我的目录树看起来像

但是,使用以下配置,main.css找不到该文件(使用 Firefox 检查时它包含 404)。除此之外,该网站显示良好。

在提供这些文件(使用 Wai)时,我尝试模仿funblog示例,将其更改为 Lucid 而不是 Blaze。特别是middleware $ staticPolicy (addBase "static")fromWeb/Blog.hs和我们链接 css from 的行Web/Views/Site.hs


编辑/添加将 Lucid 翻译为 Blaze 会得到相同的结果(翻译如下),所以我一定在其他地方遗漏了一些东西。

0 投票
1 回答
83 浏览

html - Lucid“术语”类型的真正含义

我一直在玩 Haskell,尝试使用 Servant 和 Lucid 创建一个非常简单的网站。此刻我达到了“我的代码有效,我不知道为什么”的阶段。我尝试创建引导按钮。根据文档,它应该定义为:

所以我找到了 Lucid.Html5 文档:https ://hackage.haskell.org/package/lucid-2.9.11/docs/Lucid-Html5.html并制定了创建按钮的功能:

在花了一些时间尝试找出正确的语法之后,我想出了这个:

通常情况下,我会称其为胜利并专注于其他任务,但这对我来说似乎是一件真正的魔法。

文档说“button_”是一个函数,它接受一个参数“arg”并返回一个泛型类型“result”的值。但是,在我的应用程序中,“button_”显然需要两个参数并返回“Html ()”。

它必须对“Term”类型类做一些事情,但我不知道如何理解它。有人可以帮我弄这个吗 ?我尝试将模块加载到 ghci 并使用“:t”检查类型,但这对我没有太大帮助。

0 投票
1 回答
126 浏览

haskell - 使用 Lucid WebUI 导航 Haskell Servant API

我了解到我可以通过以下方式使用仆人和 Lucid 定义我的 API:

然后,如果我想在我的 HTML 中添加指向其中一个端点的链接,我可以使用 Lucid 提供的“a_”函数,例如

这种方法的问题是我需要重复端点的名称两次。“用户”同时出现在 API 定义和 a_ 标记中。结果,如果我在一个地方更改它,另一个立即停止工作。

有没有办法定义一个可以在两个地方都使用的符号?就像是:

0 投票
1 回答
75 浏览

haskell - 运行包装在HtmlT中的Reader,产生Html()

我正在使用 Lucid 为静态站点生成代码,在HtmlT (Reader MyEnv)monad 中编写代码以透明地传递存储在MyEnv.

我使用的框架封装了从Html ()到文件输出的转换,所以我想写一个函数来转换HtmlT (Reader MyEnv) ()Html ();就像是:

但是我还没有想出一个简单的方法来实现它。我错过了一些基本的东西,还是有解决方法?

0 投票
1 回答
66 浏览

haskell - 无法在 Spock 和 Lucid 中创建的应用程序中显示 IO [[String]]

我对 Haskell 中的 Spock、Lucid 和 IO 有疑问。我有一个功能

的输出f是语句“SELECT * FROM TABLE”的结果,其中将 [MySQLValue] 列表转换为 [String] 列表。

然后我想使用fSpock 中的函数在我的应用程序中显示输出。我尝试使用类似的东西:

Wherec用于创建与 DB 的连接。但它不起作用。错误是:“没有因使用‘mapM’而产生的(可遍历 IO)实例”。

如果我尝试:

它是正确的。所以我的问题是 - 我如何f在这个应用程序中使用结果?