最近跟强类型干上了,呵呵。拿JAVA5的语法和CGLIB小试了一把,试验成果如下:
[code]
public abstract class DemoPage implements XHTMLToolkit {
public Element content(String pageTitle) {
return html(xmlns("http://www.w3.org/1999/xhtml")).$(
head().$(
title(pageTitle)
),
body().$(
table()
)
);
}
public static void main(String[] args) {
Element content = PageRender.render(DemoPage.class).content("hello");
System.out.println(content);
}
}
[/code]
执行结果如下
[code]
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>hello</title>
</head>
<body>
<table>
</table>
</body>
</html>
[/code]
优点:
1、模板引用的变量是强类型,重构安全
2、强制XHTML规范,比如把table()放在html下就会出类型错误。
3、强制括号匹配
4、任意scripting
缺点:
1、无法可视化编辑,与美工的团队协作(纯靠CSS。。。)
2、灵活性(只支持XHTML)
由于产生出了整个DOM。所以可以用Java操作DOM,然后利用Instrumention在JVM启动的时候做二次编译,把Java操作DOM的代码编译成Javascript。不过这样做难度要高过GWT了,因为GWT是编译Java源代码的,如果用Instrumention来做的话,就变成了拿Java的字节码做源代码来编译出对等的Javascript了。只有理论上的可能性……
[code]
public abstract class DemoPage implements XHTMLToolkit {
public Element content(String pageTitle) {
return html(xmlns("http://www.w3.org/1999/xhtml")).$(
head().$(
title(pageTitle)
),
body().$(
table()
)
);
}
public static void main(String[] args) {
Element content = PageRender.render(DemoPage.class).content("hello");
System.out.println(content);
}
}
[/code]
执行结果如下
[code]
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>hello</title>
</head>
<body>
<table>
</table>
</body>
</html>
[/code]
优点:
1、模板引用的变量是强类型,重构安全
2、强制XHTML规范,比如把table()放在html下就会出类型错误。
3、强制括号匹配
4、任意scripting
缺点:
1、无法可视化编辑,与美工的团队协作(纯靠CSS。。。)
2、灵活性(只支持XHTML)
由于产生出了整个DOM。所以可以用Java操作DOM,然后利用Instrumention在JVM启动的时候做二次编译,把Java操作DOM的代码编译成Javascript。不过这样做难度要高过GWT了,因为GWT是编译Java源代码的,如果用Instrumention来做的话,就变成了拿Java的字节码做源代码来编译出对等的Javascript了。只有理论上的可能性……