{{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
那麼 PowJS 是最終的選擇麼?PowJS 的理念是原生性,原生的 DOM,原生的 ECMAScript。
原生也同樣是 PowJS 的問題所在,不是所有的使用者都喜歡原生,我相信有的使用者更喜歡更抽象風格,他們眼中的原生總是帶了點 "原始"。
原生意味著你可以擴展,引入其它 library 進行搭配,但 PowJS 永遠不會出現 define setter/getter實現的 watcher,那超出了模板引擎的範圍,如果有那一定是獨立的項目。
最後,我的觀點依然是:你的需求才是選擇模板的關鍵,適合你的才是好的。
喻恆春,野生程序員,常年出沒於 bug 叢林。
閱讀更多 IT技術之家 的文章
關鍵字: 源代碼 ECMAScript 引擎