模板函数编程

上面的例子都是通过定义模板然后编译成模板函数,其实知道了模板函数的原理后,我们也可以直接定义模板函数,而不需要经过编译处理。由于不需要编译,所以你没必要遵循模板最后必须定义一个标签的约束,而只需要返回是个合法的虚拟DOM就行。

Intact内部Animate组件,就是直接定义的模板函数。

例如:

  1. Intact.extend({
  2. template: function(self, Vdt) {
  3. var h = Vdt.miss.h;
  4. // 我们根据button是否传入了href属性来决定是否使用a标签
  5. if (self.get('href')) {
  6. return h('a', self.get(), self.get('children'));
  7. } else {
  8. return h('button', self.get(), self.get('children'));
  9. }
  10. },
  11. defaults: function() {
  12. return {
  13. href: 'javascript:;',
  14. children: 'hello'
  15. }
  16. }
  17. });