Gra*_*ham 8 python template-engine
是否有优秀的Python库可以为所谓的"模板动画","不显眼的服务器脚本"或"将数据绑定到标记"提供优雅的解决方案?
换句话说,我正在寻找一个好的API来将数据绑定到纯HTML以生成动态网页.
如果它将API调用和HTML编译成HTML发射代码,那么奖励点就是如此,因为它解析HTML的速度很慢,操纵它然后序列化回HTML.
这个问题是由" 你的模板引擎糟透了,你写的所有东西都是意大利面条代码(是的,你) "博客文章提倡纯HTML的模板动画,以避免混合模板系统固有的语言.
不是在单个模板(view.tmpl)中混合数据绑定和标记,而是将数据绑定分离到它自己的代码文件(view.py),只在模板中保留HTML(view.html).
分离的明显好处是设计人员可以独立于开发人员和后端实现在HTML中编写视图.然后,设计人员可以在他选择的工具集中迭代地改进视图HTML.设计人员通常不喜欢用模板语言进行攻击并运行完整的开发环境和Web服务器来可视化更改.
性能缓慢.解析HTML,操纵结构来绑定数据,然后序列化回HTML,比处理编译模板慢3倍.毕竟模板语言对于打印HTML的代码来说确实是语法糖.hquery Ruby库通过将hquery代码和HTML编译成传统模板来解决这个问题.很好地展示了基于Ruby的DSL的强大功能.可以用Python完成吗?
仅限于HTML和XML.模板动画依赖于HTML的结构,与许多模板语言相比,它们并不关心标记,而是像HTML一样快乐地生成纯文本或CSS.我不认为这对Web应用程序来说是一个问题,而像Genshi这样的模板语言则以在有效XML结构中工作而自豪.
太复杂了.使用DOM操作HTML非常痛苦.希望正确的API能够在代码中操作HTML,就像向HTML添加模板指令一样简单.
用于Ruby的hquery,被称为"不显眼的服务器脚本",是一种从数据结构中填充HTML的DSL.这些HTML操作编译为ERB模板以便快速执行.
用于PHP的queryTemplates,描述为"DOM和CSS驱动的模板",提供"数据注入方法".API使用jQuery启发的调用链.该代码描述了如何将PHP数据结构绑定到HTML,并将结果编译为.php模板以接受具体的数据结构
用于将JSON绑定到HTML的纯 JavaScript库.需要额外的"指令"JSON,描述如何将JSON数据与HTML元素相关联.
diazo for Python.需要一个rules.xml,它与设计者的纯HTML主题一起编译为一个XSLT"模板",它将动态HTML或XML从webapp绑定到主题.
queryTemplates,pure和diazo需要一个关于如何将数据绑定到HTML的抽象描述 - 分别以链式API调用,JSON和XML规则的形式.然后系统编译模板以接受用于绑定的具体数据.抽象数据绑定描述添加了一个间接层,我怀疑需要使用更多的心理体操,而不是将模板指令添加到HTML.
然而,hquery通过让它的API调用接受数据查找表达式而使自己脱颖而出,这些表达式在某种程度上未被评估并保留在已编译的ERB中.它是一种类似于lisp的"代码作为数据"操作模式,至少非常酷,并且可能更容易编写.
PyMeld for Python,基于字符串替换的类似DOM.我试了一下,发现它很麻烦.填充表格涉及从表格中删除样本行,然后使用记录数据重复填充该行并将副本附加到表格中.啊.
Node.js的板块 "将数据绑定到标记"(即JSON到HTML).这就像胡子没有任何小胡子的模板语法.我希望从JSON直接填充HTML限制了它非常简单的数据绑定.甚至没有看到一个循环的例子.
HTML :: Zoom for Pearl.这是Perl的jQuery.不编译.
lxml.etree事实上的Python XML/HTML库.也许和DOM一样痛苦.是为解析/生成XML而编写的,而不是与现有HTML绑定的数据.但它是构建模板动画库的一个不错的基础.
pyquery建立在lxml.etree和lxml.cssquery之上.逐个方法地模拟jQuery API.这使得它优于HTML操作,但缺乏将数据结构绑定到HTML的便利功能.这些可以添加,只有回退会很慢,因为它本身就是一个解析操作序列化过程.
傀儡通过brandizzi,建立在lxml.etree和lxml.cssquery的顶部.它刚刚开始,但是专门用于数据绑定的过程API.
即使有一个很好的API将数据绑定到HTML,它也会很慢,除非它可以编译成HTML发射代码,或者至少编译成传统的模板语言.
处理包含共享页脚或导航以及处理布局主页(也称为模板继承)是一个相关问题.纯HTML必须完整并扩展为可用作预览,因此这些扩展在数据绑定步骤之前发生.存在用于管理常见包含和布局的工具 - DreamWeaver for one具有用于共享页脚等的库系统.
| 归档时间: | 
 | 
| 查看次数: | 425 次 | 
| 最近记录: |