我在my-snap-app/snaplets/heist/templates
(main.tpl
,page1.tpl
,page2.tpl
,page3.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
:
page1.tpl
我怎么能:
a)在我的网络应用程序中提供所有模板?这意味着,我希望能够访问page2.tpl
,page3.tpl
,localhost://page1
localhost://page2
,localhost://page3
,main.tpl
。我是否必然为每个页面添加路线?或者我是否可以添加路线以使其可以一次性全部?
2)page[123]
是主要模板(布局)。如何使main.tpl
使用System.Data.OleDb.OleDbConnection newconn = new System.Data.OleDb.OleDbConnection();
try
{
string pathOfFileToCreate = "U:\\Visual Studio 2013\\Projects\\ANN\\FresnoDataCOC102-2.xlsx";
newconn.ConnectionString = String.Format(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=""Excel 12.0 Xml;HDR=YES"";", pathOfFileToCreate);
newconn.Open();
var cmd = newconn.CreateCommand();
cmd.CommandText = "CREATE TABLE sheet1 (Date1 String/varhcar(100), PanEObserved DOUBLE, PanECalculated DOUBLE)"; //Check how to declare a varchar exactly.
cmd.ExecuteNonQuery();
for (int i = 0; i < training; i++) // Sample Data Insert
{
int day = Convert.ToInt32(Convert.ToString(ds.Tables[0].Rows[i][ds.Tables[0].Columns.Count - 1]).Substring(0, 2));
int month = Convert.ToInt32(Convert.ToString(ds.Tables[0].Rows[i][ds.Tables[0].Columns.Count - 1]).Substring(3, 2));
int year = Convert.ToInt32(Convert.ToString(ds.Tables[0].Rows[i][ds.Tables[0].Columns.Count - 1]).Substring(6, 4));
DateTime date = new DateTime(year, month, day);
String dateAux = date.ToString("dd/MM/yyyy");
cmd.CommandText = String.Format("INSERT INTO Sheet1 (Date1, PanEObserved, PanECalculated) VALUES({0},{1},{2})", "#" + dateAux + "#", ds.Tables[0].Rows[i][inputunits], outputs[i]);
cmd.ExecuteNonQuery(); // Execute insert query against excel file.
}
}
finally
{
conn.Close();
}
作为主布局模板?
答案 0 :(得分:2)
Heist snaplet的函数serveHeist
与serveDirectory
非常相似。这将为模板/路线中的所有模板提供服务。黑线鳕有更多细节,例如:隐藏某些自己没有意义的模板。
要将不同的模板组合在一起,请考虑类似函数的模板 - 您可以将它们应用于其他模板,结果本身就是模板。这些都发生在海斯特本身,而不是快照。
<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。