2

当我使用yesod devel它时,每次更改模板文件或任何模块时都会重新编译整个应用程序。

有什么方法可以更快地获得开发反馈?我的意思是不要重新编译,而是使用ghciYesod或其他东西?

4

2 回答 2

1

我自己从未尝试过,但我认为您正在寻找的是wai-handler-devel。引用文档:

此处理程序会在任何更改时自动重新加载您的源代码。它通过使用提示包来工作,本质上是将 GHC 嵌入到处理程序中。

yesod book中也提到了它,其中也有有用的信息:

(...) wai-handler-devel 让您开发应用程序而不必担心停止编译。

Yesod 为开发服务器提供了另一种方法,称为 yesod devel。与 wai-handler-devel 的区别在于 yesod devel 实际上每次都会编译您的代码,并尊重您的 cabal 文件中的所有设置。这是一般 Yesod 开发的推荐方法。

于 2014-01-07T21:54:17.113 回答
0

我对 Yesod 不熟悉,但我经常通过不断重启 Web 服务器在 GHCi 中构建 Web 应用程序。例如,使用类似async我们可以设置一个在 15 秒后终止的服务器线程(足够的时间可能足以测试一个特性)。

-- | run 'defaultMain' for a few seconds then kill it
quicky :: IO ()
quicky = Async.withAsync defaultMain $ \_ ->
  replicateM_ 3 (threadDelay (round 5e6) >> putStrLn "(tick)")

过去,我已经非常成功地直接在 Warp 上使用它。

于 2014-01-06T18:06:20.867 回答