在 Snap 中使用路线和 html (Heist)
Working with routes and html (Heist) in Snap
我在 my-snap-app/snaplets/heist/templates
(main.tpl
、page1.tpl
、page2.tpl
、page3.tpl
)中有模板 (*.tpl
)。
这是我的 Main.hs
:
import Snap.Http.Server
import Snap.Core
import Snap.Snaplet
import Snap.Snaplet.Heist
import Snap.Util.FileServe
import Snap.Util.GZip
import Heist.Interpreted
import Heist
--.......
data App = App { _heist :: Snaplet (Heist App) }
makeLenses ''App
instance HasHeist App where
heistLens = subSnaplet heist
我怎样才能:
a) 让所有模板在我的网络应用程序中可用?意思是,我希望能够访问 page1.tpl
、page2.tpl
、page3.tpl
localhost://page1
、localhost://page2
、localhost://page3
。我是否应该 必须 为 每个 页面添加一个路由,或者我是否可以添加一个路由使它们可以一次性访问 [=39] =]?
2) main.tpl
是主模板(布局)。如何让 page[123]
使用 main.tpl
作为主布局模板?
Heist snaplet 有一个函数 serveHeist
that acts a lot like serveDirectory
。这将为 templates/ at routes 中的所有模板提供服务。黑线鳕有更多细节,例如。隐藏某些本身没有意义的模板。
要将不同的模板组合在一起,请将模板视为函数 - 您可以将它们应用于其他模板,结果本身就是一个模板。这些事情都发生在海斯特本身,而不是瞬间。
<apply>
标签执行函数应用。参数是<apply>
里面的内容,比如page1.tpl
:
<apply>
<h1>I'm a function parameter</h1>
</apply>
应用的函数是main.tpl
,参数是<apply-content>
:
<html><head></head>
<body>
<h1>Main template.</h1>
<apply-content/>
</body>
</html>
使用 <apply>
和 <apply-content>
执行函数应用程序并计算完整页面,这将在 /page1
路由中可用。
Heist Tutorial 中有更多解释。我想知道函数应用类比是否有助于记住更多抢劫案 API.
我在 my-snap-app/snaplets/heist/templates
(main.tpl
、page1.tpl
、page2.tpl
、page3.tpl
)中有模板 (*.tpl
)。
这是我的 Main.hs
:
import Snap.Http.Server
import Snap.Core
import Snap.Snaplet
import Snap.Snaplet.Heist
import Snap.Util.FileServe
import Snap.Util.GZip
import Heist.Interpreted
import Heist
--.......
data App = App { _heist :: Snaplet (Heist App) }
makeLenses ''App
instance HasHeist App where
heistLens = subSnaplet heist
我怎样才能:
a) 让所有模板在我的网络应用程序中可用?意思是,我希望能够访问 page1.tpl
、page2.tpl
、page3.tpl
localhost://page1
、localhost://page2
、localhost://page3
。我是否应该 必须 为 每个 页面添加一个路由,或者我是否可以添加一个路由使它们可以一次性访问 [=39] =]?
2) main.tpl
是主模板(布局)。如何让 page[123]
使用 main.tpl
作为主布局模板?
Heist snaplet 有一个函数 serveHeist
that acts a lot like serveDirectory
。这将为 templates/ at routes 中的所有模板提供服务。黑线鳕有更多细节,例如。隐藏某些本身没有意义的模板。
要将不同的模板组合在一起,请将模板视为函数 - 您可以将它们应用于其他模板,结果本身就是一个模板。这些事情都发生在海斯特本身,而不是瞬间。
<apply>
标签执行函数应用。参数是<apply>
里面的内容,比如page1.tpl
:
<apply>
<h1>I'm a function parameter</h1>
</apply>
应用的函数是main.tpl
,参数是<apply-content>
:
<html><head></head>
<body>
<h1>Main template.</h1>
<apply-content/>
</body>
</html>
使用 <apply>
和 <apply-content>
执行函数应用程序并计算完整页面,这将在 /page1
路由中可用。
Heist Tutorial 中有更多解释。我想知道函数应用类比是否有助于记住更多抢劫案 API.