过去几年使用 Seaside 后,我发现模板系统的代码味道不好。是否有.net 框架使用类似于 Seaside 画布系统的东西来生成 html、css 和 javascript?或者一种避免我在模板中发现的重复的方法。
[编辑] NHaml 并不接近我正在寻找的东西。重点不在于 (X)HTML 的简写,而是拥有一种我可以重构和重用代码的编程语言。
在 Seaside 中,它可能看起来像这样:(画布是 html [和 javascript] 的构建器)
renderContentOn: canvas
canvas form
class: 'eventEditor';
with:[
self renderWhoOn: canvas;
renderButtonsOn: canvas]
在这个方法中,我调用了两个子程序
renderWhoOn: canvas
self decorateDivAndLabel: 'Who' on: canvas around: [
canvas select
id: tagId;
selected: model who;
list: model whoList;
callback: [:value | model who: value]]
第一个调用围绕选择表单元素的装饰器:
decorateDivAndLabel: aString on: canvas around: aBlock
canvas div: [
canvas label
for: (tagId := canvas nextId);
with: aString,':'.
aBlock value]
这允许消除几乎所有的重复。