冬天温泉的小庭院

使用icanhazjs模板

要想要jsp实现rails的tamplate实在是太困难了,jsp:include一个页面只是把别的东西拿过来应用,而没法把自己当作内容填充到模板上。再加上这个在做的东东主要用的是ajax方式得到数据,虽然有jquery这东西能节省很多时间,不过使用的时候还是很不方便,需要写一堆的链式才能生成一个完整的html片段出来,痛苦。

不知道要是没有github的话,现在还有没有那么多好玩的东西。在上面找到了一个叫做ICanHaz.js的tamplate实现,基本上满足了现在的需求,yeah。

其实这东西就跟String.format实现的东西差不多,只不过这能给在string文本内定义变量名,然后format的时候传入一个对象,模板就能自动填充返回一个html片段。
(友情介绍,nutz的“代码模板”功能也能实现这样的需求哦,请看这里的介绍)

基本用法参照ICanHaz.js的官网介绍,然后应该就能应付大多数情况了。
因为这个东西还用到了mustache.js这么一个Mustache template,因此有关mustache.js的东西你还是需要到这里了解一下的。

用javascript代码的方式使用partial的时候需要注意

1
2
3
4
5
6
7
8
9
10
11
12
13
var welcome = '<p>Welcome, {{name}}! {{>winnings}}</p>';
var winnings = 'You just won ${{value}} (which is ${{taxed_value}} after tax)';
// 设置模板的id
ich.addTemplate("welcome", welcome);
ich.addTemplate("winnings", winnings);
var data = {
name: "icanhazjs",
value: "1000",
taxed_value: "800",
}
var html = ich.welcome(data)

这时候是不需要单独给winnings模板进行赋值的,而前提是传入的对象里面有相应的属性才行。
(传入的对象如果该属性不存在的话,则不会在模板中显示对应的部分。)

enjoy it.