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