编程是一门艺术

Creative Commons License
本作品采用知识共享署名-非商业性使用-相同方式共享 2.5 中国大陆许可协议进行许可。
raptor.zh(at)gmail.com

archives 存档

01 Jan - 31 Dec 2011
01 Jan - 31 Dec 2010
01 Jan - 31 Dec 2009
01 Jan - 31 Dec 2008
01 Jan - 31 Dec 2007
01 Jan - 31 Dec 2006
01 Jan - 31 Dec 2005
01 Jan - 31 Dec 2004
01 Jan - 31 Dec 2003
01 Jan - 31 Dec 2002
01 Jan - 31 Dec 2001
01 Jan - 31 Dec 2000
01 Jan - 31 Dec 1999

--

links 链接

--

Genshi笔记

正式决定从KID改到Genshi。虽然Jinja的性能的确好,但是Script风格的Web template毕竟还是不如XML风格的好看和规范。试了一下发现,Genshi与KID的差别也不是很大,迁移过来还是很方便的。

Genshi是一个日文词汇“原糸(げんし)”——咋又是日本人整出来的捏?啥时国人能整出点像样的东东来,别只会弄些烧香的熊猫之类,一点建设性都木有——它的设计目标就是修改KID以提供更好的性能

不过试用Genshi还是碰到一些困难,最主要的是因为我对KID也不熟,而Genshi的资料又太少,除了一个并不详尽的Guide以外,就是一个Example。研究了一阵才理出一点头绪,这里就拿Example来说明一下吧。

把下载的Genshi压缩包解开后,在examples/turbogears下是一个完整的例子,它的创建方法与标准的project(使用KID)是完全一样的。不同之处主要有两个:

1、需要修改config/app.cfg
2、修改templates下的模板文件

app.cfg的修改很简单,把其中kid.xxx的项目都注释掉,再增加如下一行内容:

tg.defaultview = "genshi"

修改模板文件则要麻烦一些。主要是几个方面:

1、TG默认的KID基本模板sitetemplate不能用了,需要把Genshi的Example里的那个sitetemplate.html拿来用。
2、模板的xmlns不同,模板的继承方式不同(详见Example);注意:在Genshi里,最终要用于显示的模板,在include标记中不能包含fallback标记。
3、其它XML tag不同。

列简表如下:

  KIDGenshi 
xmlns xmlns:py="http://purl.org/kid/ns#" xmlns:py="http://genshi.edgewall.org/"
xmlns:xi="http://www.w3.org/2001/XInclude"
继承 py:extends="sitetemplate" <xi:include href="sitetemplate.html"><xi:fallback/></xi:include>
不过在最终显示页面的模板(即不是用于被继承的模板)是这样的:
<xi:include href="master.html" />
其它XML tag
(如在master模板中包含
welcome模板内容的部分位置)
<div py:replace="[item.text]+item[:]"/> <div py:replace="select('*|text()')"/> 

基本上就是这样,更多的东东还在研究中。

Trackback link:

Please enable javascript to generate a trackback url

No trackbacks

评论(0)


 
   
 
  表情图标 

 


提示: 除了 <b> 和 <i> 之外,其他的Html标签都将从您的评论中去除.url或mail地址会被自动加上链接.