当我使用yesod devel
时,每次更改模板文件或任何模块时,它都会重新编译整个应用程序。
有没有办法更快地获得有关开发的反馈?我的意思是不要重新编译,而是使用ghci
或者Yesod?
答案 0 :(得分:1)
我自己从未尝试过,但我认为你所寻找的是wai-handler-devel。引用文档:
此处理程序会在任何更改时自动重新加载源代码。它通过使用提示包工作,实质上是在处理程序中嵌入GHC。
在yesod book中也提到了它,它也提供了有用的信息:
(...)wai-handler-devel允许您开发应用程序而无需担心停止编译。
Yesod为开发服务器提供了另一种方法,称为yesod devel。与wai-handler-devel的不同之处在于yesod devel实际上每次编译代码,尊重cabal文件中的所有设置。这是一般Yesod开发的推荐方法。
答案 1 :(得分: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上直接使用过这个非常成功。