2016-02-26 85 views
2

與路線和HTML(搶劫)工作我在my-snap-app/snaplets/heist/templatesmain.tplpage1.tplpage2.tplpage3.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 

如何我:

一)讓我的web應用程序中所有可用的模板?意思是,我希望能夠訪問page1.tplpage2.tpl,page3.tpl on localhost://page1,localhost://page2,localhost://page3。我應該必然添加每個頁的路線或我可以添加路線,使他們可以訪問一次全部

2)main.tpl是一個主要的模板(佈局)。我如何使page[123]作爲主佈局模板使用main.tpl

回答

3

Heist snaplet有一個功能serveHeist,它的行爲很像0​​。這將爲模板/路線中的所有模板提供服務。黑線鱈還有一些關於如隱藏某些自己無意義的模板。

爲了將不同的模板組合在一起,可以將模板想象爲函數 - 您可以將它們應用於其他模板,結果本身就是一個模板。這些事情都發生在Heist本身,而不是簡單的。

<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有很多更多的解釋。我想知道函數應用程序類比是否有助於記住更多的heist API。