過去数年間Seasideを使用してきたので、テンプレートシステムは悪いコードの臭いであることがわかりました。html、css、javascriptを生成するためにSeasideキャンバスシステムに似たものを使用する.netのフレームワークはありますか?または、テンプレートで見つけがちな重複を回避する方法。
[編集]NHamlは私が探しているものに近づいていません。重要なのは、(X)HTMLの省略形ではなく、コードをリファクタリングして再利用できるプログラミング言語を使用することです。
Seasideでは、次のようになります:(キャンバスはhtml [およびjavascript]のビルダーです)
renderContentOn: canvas
canvas form
class: 'eventEditor';
with:[
self renderWhoOn: canvas;
renderButtonsOn: canvas]
このメソッドでは、2つのサブルーチンを呼び出します
renderWhoOn: canvas
self decorateDivAndLabel: 'Who' on: canvas around: [
canvas select
id: tagId;
selected: model who;
list: model whoList;
callback: [:value | model who: value]]
1つ目は、選択したフォーム要素の周りにデコレータを呼び出します。
decorateDivAndLabel: aString on: canvas around: aBlock
canvas div: [
canvas label
for: (tagId := canvas nextId);
with: aString,':'.
aBlock value]
これにより、ほとんどすべての重複を排除できます。