在Compiled Heist(Haskell)中,为什么必须事先创建拼接?

时间:2016-08-28 14:46:56

标签: haskell haskell-snap-framework heist

我可以理解为什么必须事先处理HTML模板(.tpl文件)(使用loadTemplates)并将其放入HeistConfig。这允许Heist事先将HTML处理成更有效的格式。

但是,我不明白为什么还必须事先创建拼接并放入HeistConfig。这有什么好处?我没有看到好处,因为无论如何在运行时计算接头。这背后的思考过程是什么?

我认为这可能是因为拼接也可以在加载时执行代码(除了运行时)。这是主要的解释吗?

1 个答案:

答案 0 :(得分:1)

拼接功能(编译和解释)在节点上运行。将拼接视为具有Node -> m [Node]的类型签名。这是一项相对昂贵的操作,因为它在DOM级别运行。 splice的结果节点被插回到DOM树中,然后整个树必须被渲染为ByteString。编译抢劫背后的想法是在应用程序初始化时尽可能多地执行此渲染工作。初始化的输出为[Chunk],其中Chunk可以是静态ByteString,也可以是动态m ByteString(实际类型略有不同)。在初始化将整个模板从[Node]转换为[Chunk]之前,必须处理编译的拼接。并且为了最大化运行时效率,转换发生在应用程序初始化时。

有关详细信息,请查看以下链接:

http://snapframework.com/docs/tutorials/compiled-splices

https://github.com/snapframework/heist/wiki/Compiled-Splice-Formulations

相关问题