如何选择 Web 前端模板引擎?

{{pkg.Import}}

{{rep.synopsis}}

多数模板引擎都会实现 if 、each 这些指令,上面的 PowJS 模板中还有:

  • 全局对象 is、sel
  • 模板(函数)命名 repo 、list
  • 模板(函数)入口形参 data
  • 自定义局部变量 ctx
  • 下层模板(函数)形参推导 data.sha->sha
  • 遍历值到下层模板形参推导 (ctx.Package,val-pkg)->pkg 、(data.content,val-rep)->rep
  • DOM 节点操作 this.renew、 this.appendTo,这直接渲染到页面 DOM 树
  • 流程控制 break
  • 伪节点 if="':';",渲染时根本不生成 div 节点,它是个伪节点,相当于块代码符号 "{}"

关键是整个模板结构,指令语义和 ECMAScript 函数完全一致:

  • 没有数据绑定,你写的是 ECMAScript 函数,传参数好了,要什么绑定
  • 没有事件绑定,每个节点都是真实存在的,直接写 addEventListener 就好了
  • 要调试,随便找个 do 或 if 或 let 插入 _=console.log(x), 就好了,逗号表达式几乎可以无缝插入所有原生语句
  • 所有的业务逻辑都是使用者自己写的,PowJS 只负责把他们粘合成一个函数
  • 导出视图是 ECMAScript 源码,下图截取自演示 My Folders
如何选择 Web 前端模板引擎?

那么 PowJS 是最终的选择么?PowJS 的理念是原生性,原生的 DOM,原生的 ECMAScript。

原生也同样是 PowJS 的问题所在,不是所有的使用者都喜欢原生,我相信有的使用者更喜欢更抽象风格,他们眼中的原生总是带了点 "原始"。

原生意味着你可以扩展,引入其它 library 进行搭配,但 PowJS 永远不会出现 define setter/getter实现的 watcher,那超出了模板引擎的范围,如果有那一定是独立的项目。

最后,我的观点依然是:你的需求才是选择模板的关键,适合你的才是好的。

喻恒春,野生程序员,常年出没于 bug 丛林。


分享到:


相關文章: