0

我试图让我的头脑围绕已编译的接头。在之前的帮助下,我可以编译和呈现一些有用的结果。我不完全理解它的工作方式。

在解释模式下,算法很简单:构造根,调用给定映射url的处理函数,从数据库中提取数据,从提取的数据中构造和绑定拼接,将它们插入抢劫并调用适当的模板。

在编译模式下,这一切都是颠倒的。我将 url 直接映射到 cRender 并且不调用处理程序。所以我假设所有的拼接构造和数据处理函数都是在加载时调用的。

所以我的问题是什么时候调用数据库?这也发生在加载时吗?这只是我不明白的事件顺序。

由于拼接构造独立于特定的模板渲染,这是否意味着拼接绑定标签在整个应用程序中是唯一的?它们像全局变量吗?

谢谢

4

1 回答 1

3

是的,你是非常正确的。虽然我不会说它们就像全局变量。它们更像是全局常量或全局 API。我将编译后的拼接视为您的网页设计师可以用来与动态数据交互的 API。

编译后的拼接允许您在标记中插入在运行时填充数据的孔。在加载时运行的 monad 是HeistT n IO. 但在运行时,正在运行的 monad 是RuntimeSplice n. 因此,如果您正在查看已编译的 Heist API,很容易看出运行时代码(如数据库函数)需要位于何处:在RuntimeSplice nmonad.xml 中。

于 2013-10-26T15:22:02.837 回答