天天看點

【Hybrid_APICloud_其他】vue.js與dot模闆

伴随項目的日漸成熟,作為産品開發亦是對ApiCloud日漸熟悉,回過頭看當時界面渲染子產品選擇時,因為doT的屬于極為輕量(壓縮之後4K),再加上doT是官方自主配套渲染子產品,其穩定性比較好,是以當時選擇了doT模闆為工程界面渲染子產品。 在實際使用中,其穩定性無可厚非,但是其在書寫邏輯上,總覺得還有所欠妥。下面列舉個人實際開發中覺得不舒服的地方,簡單論述下:

doT模闆需要給元素重新指派時,需要對該元素綁定id,通過id去尋找該元素再去指派;

清單渲染中,需要提前判斷,目前加載的頁數,用來判别是直接渲染還是添加渲染,另外需要手動給渲染到界面上的數組綁定index(該模闆會預設每次的渲染都是從0開始);

doT不存在局部渲染的概念,全局渲染總能引起‘閃動’,雖然可以通過id去尋找元素,模拟局部渲染,但是如果局部渲染元素較多的話,代碼量就增加了;

doT的書寫格式,比較容易出錯,少些一個“}”或者多寫一個,也不指定哪裡出錯了,代碼少的話,還好,多的話,排查起來就比較費時間;

【Hybrid_APICloud_其他】vue.js與dot模闆

doT模闆在渲染時,一次隻能插入一個對象,有幾個不同對象建立幾個對應的template。

……

如果是簡單界面的渲染,doT絕對首選,但是如果是複雜的界面,尤其是清單加載,doT渲染着實讓開發者覺得有點不舒服。作為曾經用過Vue開發的我來說,也是不曾一次的和同僚探讨過,為什麼不能用Vue?

帶着自己的疑問,在不斷的自我學習中,一次看到官方視訊裡有推薦開發者可以使用vue.js進行ApicCloud工程開發,當即用vue.js做了一個簡單的demo,其流暢性和渲染速度跟doT相比,隻強不差。下面對應上述doT暴露的比較明顯的問題,做下簡單的比較論述:

雙向資料綁定:vue.js會自動響應資料的變化情況,并且根據使用者在代碼中預先寫好的綁定關系,對所有綁定在一起的資料和視圖内容都進行修改。這也就是vue.js最大的優點,通過MVVM思想實作資料的雙向綁定,讓開發者不用再操作dom對象,有更多的時間去思考業務邏輯;

視圖,資料,結構分離:使資料的更改更為簡單,不需要進行邏輯代碼的修改,隻需要操作資料就能完成相關操作。比如,清單加載數組時隻需向該數組push即可,清單會随數組長度變化而變化,并且index為自增;

vue.js 除了資料雙向綁定中直接的局部渲染操作,還提供了其他API 對對象、數組等進行局部渲染;

vue.js書寫規範,可閱讀性很高;

可以同時插入多個對象(數組)一起渲染,提高了渲染效率,也大大減少了界面邏輯的書寫和重複邏輯的判斷。

針對渲染效率,做了一個vue.js和doT渲染相同表格的比較:

隻渲染一次:

vue: 1.94189453125ms

dot: 4.362060546875ms

連續渲染三次:

【Hybrid_APICloud_其他】vue.js與dot模闆

從運作時間來看,清單資料渲染的多少對doT影響還是挺大的。

另外,vue發展至今其所包含的api幾乎都能用(目前的業務邏輯我還沒發現不能用的),與主流的web架構相比,vue.js壓縮之後的包也僅僅八九十KB,屬于輕量級,但是其api與doT相比也算海量了,就像一個判斷語句,v-if 和 v-show 都可以當做條件判斷,兩者差別僅僅是v-show可以用來判斷頻率(切換頻率)比較高的,渲染效果更好。

總而言之,vue.js的引入,從開發角度可以少寫部分代碼,以及不需要判斷某些邏輯,提高開發效率。

vue.js使用注意事項:

在style中加入 [v-cloak] { display: none; }

在body中需要vue渲染的div包裹進一個div内,該div加上v-cloak,避免渲染慢。

詳細使用可見: 本部門共同維護工程FunTemplateApp,其中一頁分别加載了含有相同的二十個對象的數組(資料為靜态資料,圖檔為網絡資源),作為兩個子產品的渲染比較。對應的APP界面位置在第三個界面,Vue.js渲染清單和doT渲染清單;對應的代碼界面為html/vuedot/vuehtml.html 和html/vuedot/dothtml.html,demo運作,二維碼下載下傳可見。

繼續閱讀