目前web開發中充斥着各類各樣的模板引擎,從前端到後端,性能優劣暫且不論,剖析其大致工做方式,能夠歸納爲:實例化模板!也就是將Controller處理結果生產的Model數據經過模板引擎渲染View(模板引擎約定的模板),再把渲染後的結果呈現給用戶。只不過度前端模板引擎和後端模板引擎之分。 javascript
後端模板引擎,據我接觸的Beetl所言,就是在服務器端,實現頁面渲染。今天@九月推薦給個人一些前端模板引擎,是工做在前端(也就是客戶端,將渲染工做交給了客戶端瀏覽器處理)。比較了一下他們的工做原理,咱們站在更好的節省服務器性能的角度考慮,能夠實現一種新的web開發模式,這種模式,不只能夠兼顧Web顯示方式,並且還兼容客戶端訪問形式,並且不須要花費太多的代價。 html
首先咱們必需要明確一點,服務器的核心職責是什麼?網絡服務若是按照MVC模式來表述,服務器的核心職責應該是Controller,數據庫的核心職責是Model,客戶端或者瀏覽器的職責是View。從服務器的核心職責上講,它應該僅僅是接收客戶端的請求並做出應答!服務器只負責處理數據,對頁面的渲染應該徹底交給客戶端來完成,並且客戶端是能夠勝任的。若是你將瀏覽器當作是一個能夠提供豐富支持的客戶端就應該理解了,其實B/S模式本質上也是C/S。 前端
咱們之前開發的WEB程序,對瀏覽器的概念比較淡泊,形成這樣的緣由也許是咱們對瀏覽器的認識不夠形成的。可能咱們認爲瀏覽器很傻瓜,一切都須要咱們告訴他改怎麼作怎麼作才能正確的完成任務,因此咱們不得不把瀏覽器本該作的工做搶過來完成--渲染頁面!可是目前瀏覽器已經足夠強大,再配合強大的JavaScript,能夠說是「再也不傻瓜」了! java
那咱們如今就應該回歸本質,讓他們各司其責,作本身最拿手的事! git
好了,我作了這麼多鋪墊,最重要的目的就是提出一種新的WEB開發模式(也許這個模式早已經出現,我可能剛剛感覺到她的魅力而已),這種模式能夠兼顧爲客戶端與瀏覽器提供服務。 github
大體思路以下: web
當客戶端請求服務器時,服務器首先判斷請求介質類型,若是是瀏覽器,將請求處理後的數據匯同頁面反饋給瀏覽器,此頁面包含了頁面渲染邏輯和處理後的數據,剩下的任務交給瀏覽器解釋;若是請求介質是諸如移動定製客戶端,則僅僅須要將數據反饋給客戶端便可。 數據庫
做爲對上一步的優化,若是客戶端是瀏覽器,它需求再次請求同類資源時,徹底能夠告知服務器端只須要傳遞數據便可,仍舊沿用以前的頁面處理方式顯示數據。 後端
經過這樣的處理,能夠大大減小瀏覽器與服務器端交互數據,讓服務器更專一於業務,從而達到客戶端按需索取的目的。 瀏覽器
實現這樣的處理能夠藉助於簡單的服務器端模板引擎和稍微複雜的前端模板引擎,也就是把瀏覽器該乾的事,還給瀏覽器!
一些關於前端的模板引擎參考文檔:
(1)【javascript激增的思考03】MVVM與Knockout
(2)artTemplate--新一代 javascript 模板引擎
(3)JS的模板引擎實現(一)