Vue和JsRender/JsViews是基于數(shù)據(jù)驅(qū)動(dòng)視圖渲染引擎的大趨勢(shì),它們都提供了框架級(jí)別的數(shù)據(jù)綁定和響應(yīng)式組件化編程模型。在它們構(gòu)建的應(yīng)用中,大大減少了手動(dòng)DOM操作及其維護(hù)成本,同時(shí)也極大地提升了應(yīng)用性能和開(kāi)發(fā)效率。
Vue是一種輕量級(jí)MVVM數(shù)據(jù)模型視圖綁定庫(kù),它最初是在Mobile World Congress 2015上發(fā)布的,并且很快得到了vuejs的支持。Vue提供了雙向數(shù)據(jù)綁定(data-binding)、組件化(components)、事件處理(event-handling)、路由(routing)等特性,其中最為顯著的是模板語(yǔ)法糖,這使得開(kāi)發(fā)者可以像編寫(xiě)HTML和CSS一樣編寫(xiě)Vue文件。另外,Vue還用Virtual DOM技術(shù)充分發(fā)揮了瀏覽器性能的潛力,高效處理數(shù)據(jù)變更更新視圖。
const app = new Vue({
el: '#app',
data: {
message: 'Hello, Vue!'
}
});
JsRender/JsViews是Borland公司的部分團(tuán)隊(duì)通過(guò)jQuery Foundation的授權(quán)推出的視圖渲染引擎和MVVM框架,其核心是獨(dú)有的模板引擎,可以將HTML標(biāo)記變?yōu)镴avaScript函數(shù),而不是字符串拼接。使用JsRender/JsViews,開(kāi)發(fā)者可以創(chuàng)建強(qiáng)大、動(dòng)態(tài)和靈活的應(yīng)用程序界面。在JsRender/JsViews中,模板引擎部分的代碼被拆分出來(lái),并單獨(dú)作為一個(gè)獨(dú)立的jsrender.js腳本,使得應(yīng)用可以輕松地?cái)U(kuò)展JS模板引擎,或者在以后的版本中維護(hù)和升級(jí)模板。其強(qiáng)大的條件表達(dá)式、過(guò)濾器(filter)和擴(kuò)展標(biāo)簽都是其優(yōu)點(diǎn)。
var tmpl = $.templates("<div>\n <h1>{{:title}}</h1>\n <div>{{:body}}</div>\n</div>");
var data = {
title: "Template demo",
body: "This is a demo"
};
var html = tmpl.render(data);
Vue與JsRender/JsViews作為兩種主流的視圖渲染引擎,雖然有著不同的設(shè)計(jì)理念和實(shí)現(xiàn)機(jī)制,但它們都具有優(yōu)秀的性能、可擴(kuò)展性和生產(chǎn)力。它們都是數(shù)據(jù)驅(qū)動(dòng)的組件式架構(gòu),提供了數(shù)據(jù)綁定和模板語(yǔ)法,易于使用且增加了聚焦關(guān)注點(diǎn)的能力。從目前的市場(chǎng)趨勢(shì)來(lái)看,Vue發(fā)展勢(shì)頭強(qiáng)勁,并獲得了強(qiáng)大的開(kāi)發(fā)者社區(qū)和企業(yè)支持。