我為什么選擇Nunjucks作為NodeJS模板引擎打賞

最近換了工作,在新的工作中,需要實現后端渲染,故而一改最初的純html+js形式,選擇頁面框架、TDK及部分頁面后端渲染,由于后臺采用java開發,一開始曾考慮另起一個tomcat服務,用于渲染前端頁面,而實際搭建完框架后發現,一年多不碰java(期間雖然用過Groovy、kotlin,但實際開發起來還是不如js來得暢快),已經對java的繁瑣有些不耐煩,最后轉而選擇采用NodeJS做后端渲染,一來部分前端模板可以復用(后面發現復用其實是個很糾結的想法),二來做前端開發的兄弟也可以快速上手,相比他們并不懂的java來說,畢竟NodeJS更容易學習接受。

確定了適用NodeJS,下面就確定一下大概框架,采用了目前常見的組合——express+template,因為最初前端使用了所謂最快的模板引擎artTemplate,這里tempate想進行復用,就采用了服務器版artTemplate,實際測試發現并不符合我的需求,由于最近一年使用PHP的YII框架,其中模板layout可以使用block,很方便重寫樣式、腳本等部分,這里實測后發現,后端模板如果沒有layout,基本和寫純靜態無異了。既然要layout,當然還想有類似繼承等能力,ejs、handlebars這些雖然強大,但是功能不夠齊全,這時候想到了備受推崇的express4默認模板引擎——jade,使用jade寫幾個模板后發現,jade這樣的東西對于沒有學過的前端兄弟還是一門頭疼的事,甚至比寫jsp還頭疼,于是放棄jade另尋他路,doT、dustjs都有嘗試,但都略有不足,最后無意間發現Nunjucks完全符合我的需求,而且是mozilla在維護的一套模板引擎,類似dustjs,都提供異步api,語法幾乎是完全移植自python重的模板引擎——jinja2,最主要的,這貨還提供了中文api,這下感覺已經為公司做前端的兄弟考慮得夠周全了,最終確定下來采用Nunjucks移植頁面框架以及部分需要做seo的頁面,至于artTemplate部分,由于語法不同,可以完全作為文本輸出,保留前端異步渲染,這樣可以一步步平滑移植,降低工作量。

啰嗦這么多,想必已經表達清楚我的意思,沒錯,就是富功能模板引擎,可以定義全局函數、變量,可以定義過濾器,可以定義宏,可以模板繼承,可以……。不過套用網上那句話,合適的就是最好的,大家可以理性選擇自己需要的模板引擎。下面介紹下主角Nunjucks,名字有點怪,功能前面差不多都提及了,試用后發現確實挺實用,而且自帶watch,可以熱加載模板(雖然部署后配合pm2完全用不上熱加載,但還是值得一提的),定界符默認使用{{}}輸出數據,使用{%%}插入指令,不像dustjs,放眼望去雖然簡潔實際上很多種定界符(個人見解)。

Nunjucks地址:http://mozilla.github.io/nunjucks

感興趣的同學可以直接去官網學習一下,當然,如果你不是像我一樣需要一個富功能的模板引擎,大可以選擇ejs,如果你正在使用jade,但又不爽jade那種把html寫得不倫不類的模板語言,推薦你試試Nunjucks。

補充一點,由于是jinja的語法,這里面if內的邏輯判斷有些啰嗦,不能使用js原生的||、&&、!等用于判斷,取而代之的是or、and、not等。不過稍稍習慣后使用起來還是挺順利的。

我為什么選擇Nunjucks作為NodeJS模板引擎
文章《我為什么選擇Nunjucks作為NodeJS模板引擎》二維碼
  • 微信打賞
  • 支付寶打賞

已有4條評論

  1. zhangnew

    你們前端的東西好亂啊。。。

    2017-03-29 15:33 回復
  2. 運營-子客

    ejs,任務易來啦

    2016-10-25 13:52 回復
  3. 整形醫生排名大全

    不錯 js插件有的挺好用的

    2016-10-25 11:12 回復

(必填)

(必填)

(可選)

黑龙江22选5开奖