Vue中如何定義數(shù)據(jù)示例詳解
前言
在開發(fā)的過程中,定義變量是一件非常高頻且十分基礎(chǔ)的事情,如何合理的根據(jù)變量的使用場景和作用域范圍進(jìn)行定義變量,是一件很小缺很容易犯錯(cuò)的事情
Vue2已經(jīng)流行使用了這么多年,多數(shù)開發(fā)者在開發(fā)過程中喜愛在data選項(xiàng)中梭哈定義很多變量,這樣做非常不利于代碼的閱讀性、維護(hù)性和性能,想要很好的使用變量,需要結(jié)合Vue和JS的特性
在Vue中,按照是否需要雙向數(shù)據(jù)綁定,可以將變量分為兩種:
一種是需要被Vue的數(shù)據(jù)劫持,將data的變化實(shí)時(shí)響應(yīng)到view上
只要data只能夠的msg變化, template中綁定的msg會(huì)實(shí)時(shí)響應(yīng)
<template> <div>{{msg}}</div> </template> <script> export default { data() { msg: "" } }; </script>
還有一種不需要被Vue數(shù)據(jù)劫持:
僅在script中生效,在template中沒有使用,不需要數(shù)據(jù)劫持
name僅在concatName函數(shù)中生效,那么將其作為局部變量定義即可
age在函數(shù)getAge和concatName中都需要使用,作為局部變量使用不合適,那么可以將其作用域提升,方便在多個(gè)地方使用
<script> const age = 'bar' export default { methods: { getAge() { return age }, concatName() { let name = 'nordon' reutrn `name:${name}, age: ${age} ` } }, }; </script>
僅僅是在template中作為渲染數(shù)據(jù)使用,自定義之后便不會(huì)在后續(xù)的操作中對其修改,這種數(shù)據(jù)如果使用Vue對其數(shù)據(jù)劫持會(huì)浪費(fèi)一些性能
<template> <div v-for="item in arr">{{item.name}}</div> </template> <script> const arr = Object.freeze([{ name: 'nordon', age: 18 }]) export default { data() { return { arr } } }; </script>
使用Object.freeze將不需要數(shù)據(jù)劫持的數(shù)據(jù)進(jìn)行凍結(jié)操作,在Vue中遞歸遍歷數(shù)據(jù)進(jìn)行數(shù)據(jù)劫持的時(shí)候便不會(huì)對其進(jìn)行數(shù)據(jù)劫持,特別對于大量的表格類的數(shù)據(jù)性能提升會(huì)顯著一些
可以從Vue源碼中看到,為何使用了Object.freeze對數(shù)據(jù)處理之后,便不會(huì)再進(jìn)行數(shù)據(jù)劫持
function defineReactive (obj, key) { // 刪除無關(guān)代碼 只保留了判斷條件 const property = Object.getOwnPropertyDescriptor(obj, key) if (property && property.configurable === false) { return } }
總結(jié)
到此這篇關(guān)于Vue中如何定義數(shù)據(jù)的文章就介紹到這了,更多相關(guān)Vue定義數(shù)據(jù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Vue?入口與?initGlobalAPI實(shí)例剖析
這篇文章主要為大家介紹了Vue?入口與?initGlobalAPI實(shí)例剖析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-08-08使用vue2實(shí)現(xiàn)帶地區(qū)編號(hào)和名稱的省市縣三級聯(lián)動(dòng)效果
我們知道省市區(qū)縣都有名稱和對應(yīng)的數(shù)字唯一編號(hào),使用編號(hào)可以更方便查詢以及程序處理,我們今天來了解一下使用vue2來實(shí)現(xiàn)常見的省市區(qū)下拉聯(lián)動(dòng)選擇效果,需要的朋友可以參考下2018-11-11vue?elementui?實(shí)現(xiàn)圖片上傳后拖拽排序功能示例代碼
這篇文章主要介紹了vue?elementui?實(shí)現(xiàn)圖片上傳后拖拽排序功能,本文通過示例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-01-01element帶輸入建議el-autocomplete的使用
本文主要介紹了element帶輸入建議el-autocomplete的使用,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-03-03vue2 中如何實(shí)現(xiàn)動(dòng)態(tài)表單增刪改查實(shí)例
本篇文章主要介紹了vue2 中如何實(shí)現(xiàn)動(dòng)態(tài)表單增刪改查實(shí)例,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-06-06Vue路由之JWT身份認(rèn)證的實(shí)現(xiàn)方法
這篇文章主要介紹了Vue路由之JWT身份認(rèn)證的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-08-08