介绍Asta4D
介绍Asta4D
友好的开发框架-Asta4D(4)
开始介绍Asta4D的主要特点和功能。
1. 可继承的模板与参数化嵌入
模板文件是可继承的,同时,子模板文件允许对父模板的指定位置进行覆盖,追加,插入操作。
parent.html
< html > < head > < afd:block id ="block1" > < link href ="parent1.css" rel ="stylesheet" type ="text/css" /> </ afd:block > < afd:block id ="block2" > < link href ="parent2.css" rel ="stylesheet" type ="text/css" /> </ afd:block > < title > extension sample </ title > </ head > < body > < afd:block id ="content" > content </ afd:block > </ body > </ html >
child.html
< html > < head ></ head > < body > <!-- (1) --> < afd:extension parent ="parent.html" > <!-- (2) --> < afd:block append ="block1" > < link href ="child1.css" rel ="stylesheet" type ="text/css" /> </ afd:block > <!-- (3) --> < afd:block insert ="block2" > < link href ="child2.css" rel ="stylesheet" type ="text/css" /> </ afd:block > <!-- (4) --> < afd:block override ="content " > < div > hello </ div > <!-- (5) --> < afd:embed target ="/templates/embed.html" ></ afd:embed > </ afd:block > </ afd:extension > </ body > </ html >
embed.html
< html > < head ></ head > < body > <!-- (6) --> < afd:block append ="block1" > < link href ="embed.css" rel ="stylesheet" type ="text/css" /> </ afd:block > < div > good embed </ div > </ body > </ html >
上述示例中,child模板通过extension标记声明继承关系(1),同时,通过简单的block声明,对父模板的指定block进行追加,插入和覆盖操作(2,3,4)。另外,子模板中通过embed标记声明了直接导入外部模板文件(5),更进一步的,在被导入的外部模板文件中,也同样可以声明对已有的block的操作(6),这对于模板文件中header的合并非常有用。上面的例子会由Asta4D的模板引擎合并成下面的内容输出:
< html > < head > <! —block1 -- > < link href ="parent1.css" rel ="stylesheet" type ="text/css" /> < link href ="child1.css" rel ="stylesheet" type ="text/css" /> < link href ="embed.css" rel ="stylesheet" type ="text/css" /> <! —block2 -- > < link href ="child2.css" rel ="stylesheet" type ="text/css" /> < link href ="parent2.css" rel ="stylesheet" type ="text/css" /> < title > extension sample </ title > </ head > < body > <! —content -- > < div > hello </ div > <! —embed -- > < div > good embed </ div > </ body > </ html >
在通过embed标记导入外部模板文件时,可以通过指定DOM属性的方式向外部模板文件传入参数:
< afd:embed target ="/xxx/showList.html" showLimit ="30" ></ afd:embed >
上述例子中指定的showLimit参数在外部模板文件showList.html的渲染逻辑中可以通过参数注入访问,从而实现参数化渲染逻辑。这个特性对于定义页面组件非常有用,将通用的HTML片段封装起来通过embed引入,同时通过参数传递来控制行为,基本上来说,在模板中引用一个embed文件,类似于一次可传参的函数调用。特别需要指出的是,这里的参数并不限于在模板文件中静态指定,在运行时同样可以动态指定embed参数,而且,参数类型也不仅限于可字符串化的字符或者数值类型,在运行时动态指定的embed参数可以是任意Java类型。更详细的关于参数化嵌入的说明,可以参考后述的渲染逻辑的部分。
简单的讲,Asta4D的模板思想类似于传统的OOP模式,可以将父子模板视同为父子类的关系,而block则可以被视作可覆盖的虚方法。至于embed的外部文件,可以视同函数调用,记住,既然你可以向embed的文件传递任意类型的参数,因此它事实上和函数调用的确没有什么区别。
当前标签: asta4d
友好的开发框架-Asta4D(3) xzer 2013-03-24 16:32 阅读:48 评论:0
友好的开发框架-Asta4D(2) xzer 2013-03-24 16:31 阅读:66 评论:0
友好的开发框架-Asta4D(1) xzer 2013-03-15 19:14 阅读:98 评论:0
作者: Leo_wl
出处: http://www.cnblogs.com/Leo_wl/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
版权信息