如何選擇 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 叢林。


分享到:


相關文章: