摘要:載入前后在階段,實(shí)例的和都初始化了,但還是掛載之前為虛擬的節(jié)點(diǎn),還未替換。類似于,不同在于提交的是,而不是直接變更狀態(tài)可以包含任意異步操作。
vue基礎(chǔ)
1、 router 路由與 a 標(biāo)簽的區(qū)別:https://www.jianshu.com/p/34b...
2、 VUE雙向綁定的原理:
答:VUE實(shí)現(xiàn)雙向數(shù)據(jù)綁定的原理就是利用了 Object.defineProperty() 這個方法重新定義了對象獲取屬性值(get)和設(shè)置屬性值(set)的操作來實(shí)現(xiàn)的。Vue的雙向數(shù)據(jù)綁定就是只要在讀取值(getter)時(shí)收集觀察者,在賦值(setter)時(shí)觸發(fā)觀察者更新函數(shù),就可以實(shí)現(xiàn)數(shù)據(jù)變更,從而實(shí)現(xiàn)DOM重新渲染。
3、vue2.0中router-link詳解:https://blog.csdn.net/lhjueji...
4、 vue項(xiàng)目開發(fā)前的es6的知識儲備:https://www.cnblogs.com/untir...
5、 箭頭函數(shù)和普通函數(shù)的區(qū)別:https://www.jianshu.com/p/73c...
總結(jié):
1>箭頭函數(shù)寫代碼擁有更加簡潔的語法;
2>箭頭函數(shù)的this永遠(yuǎn)指向其上下文的 this,任何方法都改變不了其指向,如call(), bind(), apply(); 普通函數(shù)的this指向調(diào)用它的那個對象
6、Vue的生命周期,詳細(xì)介紹各個階段
創(chuàng)建前/后
在beforeCreated階段,vue實(shí)例的掛載元素$el和數(shù)據(jù)對象data都為undefined,還未初始化。
在created階段,vue實(shí)例的數(shù)據(jù)對象data有了,$el還沒有。
載入前/后
在beforeMount階段,vue實(shí)例的$el和data都初始化了,但還是掛載之前為虛擬的dom節(jié)點(diǎn),data.message還未替換。
在mounted階段,vue實(shí)例掛載完成,data.message成功渲染。
更新前/后
當(dāng)data變化時(shí),會觸發(fā)beforeUpdate和updated方法。
銷毀前/后
在執(zhí)行destroy方法后,對data的改變不會再觸發(fā)周期函數(shù),說明此時(shí)vue實(shí)例已經(jīng)解除了事件監(jiān)聽以及和dom的綁定,但是dom結(jié)構(gòu)依然存在
它可以總共分為8個階段:創(chuàng)建前/后, 載入前/后,更新前/后,銷毀前/銷毀后.
7、簡單描述每個周期具體適合哪些場景?
生命周期鉤子的一些使用方法:
beforecreate : 可以在這加個loading事件,在加載實(shí)例時(shí)觸發(fā)
created : 初始化完成時(shí)的事件寫在這里,如在這結(jié)束loading事件,異步請求也適宜在這里調(diào)用
mounted : 掛載元素,獲取到DOM節(jié)點(diǎn)
updated : 如果對數(shù)據(jù)統(tǒng)一處理,在這里寫上相應(yīng)函數(shù)
beforeDestroy : 可以做一個確認(rèn)停止事件的確認(rèn)框
nextTick : 更新數(shù)據(jù)后立即操作dom
8、 vue-router實(shí)現(xiàn)原理
根據(jù)url來path匹配相應(yīng)的 component ,在把匹配到的component渲染到指定的dom上就好了
vue-router是vue的路由插件,組件:router-link router-view說簡單點(diǎn),vue-router的原理就是通過對URL地址變化的監(jiān)聽,繼而對不同的組件進(jìn)行渲染。每當(dāng)URL地址改變時(shí),就對相應(yīng)的組件進(jìn)行渲染。原理是很簡單,實(shí)現(xiàn)方式可能有點(diǎn)復(fù)雜,主要有hash模式和history模式。
9、Vuex各個狀態(tài)
有 5 種,分別是 state、getter、mutation、action、modulestate Vuex 使用單一狀態(tài)樹,既每個應(yīng)用將僅僅包含一個store實(shí)例,單單一狀態(tài)樹和模塊化并不沖突。存放的數(shù)據(jù)狀態(tài),不可以直接修改里面的數(shù)據(jù)。
mutations mutations定義的方法動態(tài)修改Vuex的store中的狀態(tài)或數(shù)據(jù)。
getters 類似vue的計(jì)算屬性,主要用來過濾一些數(shù)據(jù)。
action action可以理解為通過mutations里面處理數(shù)據(jù)的方法變成可異步的處理數(shù)據(jù)的方法,簡單的說就是異步操作數(shù)據(jù)。view層通過store.dispath來分配action。Action 類似于 mutation,不同在于:Action 提交的是 mutation,而不是直接變更狀態(tài);Action 可以包含任意異步操作。
modeules 項(xiàng)目特別復(fù)雜的時(shí)候,可以讓每一個模塊擁有自己的state,mutation,action,getters,使得結(jié)構(gòu)非常清晰,方便管理
10、axios是什么?怎么使用?描述使用它實(shí)現(xiàn)登錄功能的流程
axios是請求后臺資源的模塊。 npm i axios -S
如果發(fā)送的是跨域請求,需在配置文件中 config/index.js 進(jìn)行配置
11、兄弟組件,父子傳值
父---子 父組件通過標(biāo)簽傳值,子組件通過props接收
子---父 通過this.$emit將方法和數(shù)據(jù)傳遞給父組件,父組件通過$on接收1.父組件與子組件傳值
父組件傳給子組件: 子組件通過props方法接受數(shù)據(jù);
子組件傳給父組件:$emit方法傳遞參數(shù);
2.非父子組件間的數(shù)據(jù)傳遞,兄弟組件傳值
EventBus,就是創(chuàng)建一個事件中心,相當(dāng)于中轉(zhuǎn)站,可以用它來傳遞事件和接受事件,項(xiàng)目比較小時(shí),用這個比較合適;
VueX,創(chuàng)建一個數(shù)據(jù)倉庫,整個項(xiàng)目全局都可以往這個倉庫存放數(shù)據(jù)和讀取數(shù)據(jù)
如果父組件想要調(diào)用子組件的方法
vue會給子組件添加一個ref屬性,通過this.$refs.ref的值便可以獲取到該子組件,然后便可以調(diào)用子組件中的任意方法
12、vue怎么實(shí)現(xiàn)頁面的權(quán)限控制
利用 vue-router 的 beforeEach 事件,可以在跳轉(zhuǎn)頁面前判斷用戶的權(quán)限(利用 cookie 或 token),是否能夠進(jìn)入此頁面,如果不能則提示錯誤或重定向到其他頁面,在后臺管理系統(tǒng)中這種場景經(jīng)常能遇到。
13、vue里面的虛擬dom
簡單來說,虛擬DOM是用Object來代表一顆節(jié)點(diǎn),這個Object叫做VNode,然后使用兩個VNode進(jìn)行對比,根據(jù)對比后的結(jié)果修改真實(shí)DOM。為什么是兩個VNode?因?yàn)槊看武秩径紩梢粋€新的VNode,然后和上一次渲染時(shí)用的VNode進(jìn)行對比。然后將這一次新生成的VNode緩存,用來進(jìn)行下一次對比。
14、vue中scoped的原理:https://www.jianshu.com/p/b92...
加了 scoped 的話,編譯的時(shí)候就把對應(yīng)的選擇器和對應(yīng)的元素綁定一個由全局唯一的字符串產(chǎn)生的屬性。vue通過在DOM結(jié)構(gòu)以及css樣式上加上唯一的標(biāo)記,保證唯一,達(dá)到樣式私有化,不污染全局的作用
15、如何解決vue開發(fā)中父組件添加scoped后無法修改子組件樣式問題
父組件:使用深度作用選擇器
http://www.php.cn/js-tutorial...
https://www.cnblogs.com/ruish...
子組件:
16、Vue國際化處理 vue-i18n 以及項(xiàng)目自動切換中英文
https://www.cnblogs.com/nxmin...
https://www.cnblogs.com/wangw...
17、Vue實(shí)現(xiàn)組件信息的緩存
https://blog.csdn.net/u014628...
18、Vue中data和computed的區(qū)別
https://segmentfault.com/a/11...
data 和 computed都是響應(yīng)式的
data中的屬性并不會隨賦值變量的改動而改動;當(dāng)需要這種隨賦值變量的改動而改動的時(shí)候,還是用計(jì)算屬性computed合適
如果實(shí)在要在data里面聲明屬性,可以先賦一個值,然后在methods里面定義方法操作該屬性,效果等同,也會有響應(yīng)式
var vm = new Vue({ el: "#app", data: { firstname: "", lastname: "" }, methods: { }, watch: { }, computed:{ // 在 computed 中,可以定義一些 屬性,這些屬性,叫做 【計(jì)算屬性】, 計(jì)算屬性的,本質(zhì),就是 一個方法,只不過,我們在使用 這些計(jì)算屬性的時(shí)候,是把 它們的 名稱,直接當(dāng)作 屬性來使用的;并不會把 計(jì)算屬性,當(dāng)作方法去調(diào)用; // 注意1: 計(jì)算屬性,在引用的時(shí)候,一定不要加 () 去調(diào)用,直接把它 當(dāng)作 普通 屬性去使用就好了; // 注意2: 只要 計(jì)算屬性,這個 function 內(nèi)部,所用到的 任何 data 中的數(shù)據(jù)發(fā)送了變化,就會 立即重新計(jì)算 這個 計(jì)算屬性的值 // 注意3: 計(jì)算屬性的求值結(jié)果,會被緩存起來,方便下次直接使用; 如果 計(jì)算屬性方法中,所以來的任何數(shù)據(jù),都沒有發(fā)生過變化,則,不會重新對 計(jì)算屬性求值; "fullname":function () { return this.firstname+this.lastname; } } })
19、后臺管理系統(tǒng)登錄、權(quán)限:
https://juejin.im/post/591aa1...
https://www.cnblogs.com/heroz...
20、Axios封裝:https://blog.csdn.net/qq_3814...
1、首先,在vue-cli項(xiàng)目的src路徑下新建一個axios文件夾,在axios文件夾里新建aps.js和request.js,api.js用于寫接口,對axios的封裝寫在request.js里
2、然后開始統(tǒng)一封裝axios, 首先引入axios、qs依賴,引入main.js主要是用于后面對接口進(jìn)行統(tǒng)一處理,比如調(diào)接口的時(shí)候,顯示loading等。
3、然后創(chuàng)建一個axios實(shí)例,這個process.env.BASE_URL在config/dev.evn.js、prod.evn.js里面進(jìn)行配置
4、axios實(shí)例創(chuàng)建好之后,開始使用request攔截器對axios請求配置做統(tǒng)一處理,然后是對response做統(tǒng)一處理
5、最后,將我們的axios實(shí)例暴露出去,整個axios的封裝就寫完了
6、axios封裝好之后,調(diào)用就很簡單了。我們把接口統(tǒng)一寫在api.js文件里。(當(dāng)然,如果你的業(yè)務(wù)非常復(fù)雜的話,建議把不同業(yè)務(wù)的api分開放到不同的文件里,這樣方便以后維護(hù))。然后在具體的組件中進(jìn)行調(diào)用。
21、Vue.mixin() 可以將自定義的方法混入所有的 Vue 實(shí)例中。:https://segmentfault.com/a/11...
22、Vue keep-alive 實(shí)現(xiàn)后退緩存,前進(jìn)刷新:https://blog.csdn.net/xyj3602...
在router.js里添加一個標(biāo)識用于判斷頁面是否需要緩存.
23、vue的兩大核心:數(shù)據(jù)驅(qū)動和組件
https://www.jianshu.com/p/293...
https://www.cnblogs.com/liuti...
24、路由傳遞參數(shù):https://blog.csdn.net/crazywo...
25、vue全家桶:http://doc.liangxinghua.com/v...
26、hash和history兩種模式之間的區(qū)別:
https://www.cnblogs.com/JRliu...
27、vue-router怎樣實(shí)現(xiàn)頁面跳轉(zhuǎn)
https://blog.csdn.net/u014689...
https://www.cnblogs.com/wisew...
https://blog.csdn.net/sunshao...
28、vue $router和$route的區(qū)別
https://blog.csdn.net/wangguo...
29、vue中內(nèi)置的組件
Vue中內(nèi)置的組件有以下幾種:
1)component
2)transition
3)transition-group
4)keep-alive
5)slot1)component組件:有兩個屬性---is? ? inline-template
渲染一個‘元組件’為動態(tài)組件,按照"is"特性的值來渲染成那個組件
2)transition組件:為組件的載入和切換提供動畫效果,具有非常強(qiáng)的可定制性,支持16個屬性和12個事件
3)transition-group:作為多個元素/組件的過渡效果
4)keep-alive:包裹動態(tài)組件時(shí),會緩存不活動的組件實(shí)例,而不是銷毀它們
5)slot:作為組件模板之中的內(nèi)容分發(fā)插槽,slot元素自身將被替換
30、Vue文本渲染三種方法 {{}}、v-html、v-text
{{ }}將元素當(dāng)成純文本輸出
v-html會將元素當(dāng)成HTML標(biāo)簽解析后輸出
v-text會將元素當(dāng)成純文本輸出
Vue文本渲染三種方法 {{hello}}
31、key
vue中列表循環(huán)需加:key="唯一標(biāo)識" 唯一標(biāo)識可以是item里面id index等,因?yàn)関ue組件高度復(fù)用
增加Key可以標(biāo)識組件的唯一性,為了更好地區(qū)別各個組件
key的作用主要是為了高效的更新虛擬DOMkey 的特殊屬性主要用在 Vue 的虛擬 DOM 算法,在新舊 nodes 對比時(shí)辨識 VNodes。如果不使用 key,Vue 會使用一種最大限度減少動態(tài)元素并且盡可能的嘗試修復(fù)/再利用相同類型元素的算法。使用 key,它會基于 key 的變化重新排列元素順序,并且會移除 key 不存在的元素。
有相同父元素的子元素必須有獨(dú)特的 key。重復(fù)的 key 會造成渲染錯誤。
最常見的用例是結(jié)合 v-for:
v-for為什么要加key: https://www.jianshu.com/p/4bd...
32、 頁面跳轉(zhuǎn)后,回到此頁面時(shí),頁面不刷新
https://www.cnblogs.com/yiyib...
33、Vue項(xiàng)目使用AES做加密:https://www.cnblogs.com/libo0...
前端對稱加密--js對用戶名密碼進(jìn)行DES加密:https://blog.csdn.net/frankch...(使用的是這種方式)
34、vue中使用vue-quill-editor富文本編輯器,自定義toolbar修改工具欄options:https://blog.csdn.net/div_ma/...
35、按鈕級權(quán)限控制:https://www.jianshu.com/p/e50...
vue + vuex + directives實(shí)現(xiàn)權(quán)限按鈕的思路: https://www.jianshu.com/p/eea...
要求權(quán)限控制到按鈕級別,也就是說對于不同的用戶,可操作的按鈕是不一樣的,換言之,有些按鈕對某些客戶是不可見的.例如:用戶A能看到"新增"按鈕,而用戶B看不到?1.定義一個全局方法,配合v-if實(shí)現(xiàn);在用戶登錄成功后,獲取用戶的按鈕權(quán)限(數(shù)組格式),存儲到store中,定義公共函數(shù)hasPermission,在main.js中引入,在需要的按鈕上使用即可
2、通過directives在全局main.js中注冊,自定義指令,頁面中按鈕只需加v-has即可。
1> meta字段里放入的是該用戶在此頁面能操作的按鈕權(quán)限的標(biāo)識permission,比如這個頁面有add、edit、delele權(quán)限,但是你只想讓這個用戶使用add,那么就"permission": ["add"]
{ "path": "/system", "component": "Layout", "redirect": "/system/userList", "name": "系統(tǒng)管理", "meta": { "title": "系統(tǒng)管理", "icon": "el-icon-setting" }, "children": [{ "path": "userList", "name": "用戶列表", "component": "user/index", "meta": { "title": "用戶列表", "icon": "el-icon-tickets", "permission": ["add"] //按鈕權(quán)限 } } ] }
接著自定義指令btnPermission.js,在mian.js導(dǎo)入
import Vue from "vue" /**權(quán)限指令**/ Vue.directive("has", { inserted: function (el, binding, vnode) { let permissionList = vnode.context.$route.meta.permission; if (!permissionList || !permissionList.includes(binding.value.role)) { el.parentNode.removeChild(el) } } }) export { has }
使用:
添加
36、vue權(quán)限控制:https://www.jianshu.com/p/e5e...
vue實(shí)現(xiàn)菜單權(quán)限控制:https://www.cnblogs.com/ssh-0...
VUE 動態(tài)菜單及視圖權(quán)限:https://www.jianshu.com/p/fca...
Vue 動態(tài)路由的實(shí)現(xiàn)(后臺傳遞路由,前端拿到并生成側(cè)邊欄):https://segmentfault.com/a/11...
Vue自定義指令實(shí)現(xiàn)按鈕級權(quán)限控制功能:https://www.cnblogs.com/leeke...
37、了解ESlint和其相關(guān)操作:https://www.jianshu.com/p/f75...
38、devtools調(diào)試工具
39、談?wù)勀銓ue的認(rèn)識:https://blog.csdn.net/keep789...
40、vue中的所有axios請求都會發(fā)送2次,但是第一次不返回?cái)?shù)據(jù)的原因
原因:跨域請求之前首先要發(fā)送options請求,詢問服務(wù)器是否有權(quán)限訪問,是否允許該請求類型,如果允許則發(fā)起實(shí)際請求。
瀏覽器分為簡單請求以及非簡單請求:
解決方案:
跨域請求需要先發(fā)一次Option預(yù)請求,OPTIONS是檢驗(yàn)是否允許跨域的,如果不希望OPTIONS請求, 直接讓后端遇到option直接返回就可以了,前端可不做處理。
跨域資源共享 CORS 詳解:http://www.ruanyifeng.com/blo...
41、VUE的兩種跳轉(zhuǎn)push和replace對比區(qū)別
https://www.cnblogs.com/both-...this.$router.push()
跳轉(zhuǎn)到不同的url,但這個方法會向history棧添加一個記錄,點(diǎn)擊后退會返回到上一個頁面。
this.$router.replace()
同樣是跳轉(zhuǎn)到指定的url,但是這個方法不會向history里面添加新的記錄,點(diǎn)擊返回,會跳轉(zhuǎn)到上上一個頁面。上一個記錄是不存在的。
this.$router.go(n)
相對于當(dāng)前頁面向前或向后跳轉(zhuǎn)多少個頁面,類似 window.history.go(n)。n可為正數(shù)可為負(fù)數(shù)。正數(shù)返回上一個頁面
42、computed和watch
computed用來監(jiān)控自己定義的變量,該變量不在data里面聲明,直接在computed里面定義,然后就可以在頁面上進(jìn)行雙向數(shù)據(jù)綁定展示出結(jié)果或者用作其他處理;
computed比較適合對多個變量或者對象進(jìn)行處理后返回一個結(jié)果值,也就是數(shù)多個變量中的某一個值發(fā)生了變化則我們監(jiān)控的這個值也就會發(fā)生變化,舉例:購物車?yán)锩娴纳唐妨斜砗涂偨痤~之間的關(guān)系,只要商品列表里面的商品數(shù)量發(fā)生變化,或減少或增多或刪除商品,總金額都應(yīng)該發(fā)生變化。這里的這個總金額使用computed屬性來進(jìn)行計(jì)算是最好的選擇
watch主要用于監(jiān)控vue實(shí)例的變化,它監(jiān)控的變量當(dāng)然必須在data里面聲明才可以,它可以監(jiān)控一個變量,也可以是一個對象
watch一般用于監(jiān)控路由、input輸入框的值特殊處理等等,它比較適合的場景是一個數(shù)據(jù)影響多個數(shù)據(jù)
43、全局鉤子router.beforeEach作用于所有路由,里面的參數(shù)
to表示即將要進(jìn)入的路由對象,
from表示即將要離開的路由對象,
next是繼續(xù)跳轉(zhuǎn)或中斷的方法。
router.beforeEach((to,from,next) => { console.log(to) console.log(from) })
44、vue+axios 前端實(shí)現(xiàn)登錄攔截(路由攔截、http攔截):https://www.cnblogs.com/guoxi...
首先在定義路由的時(shí)候就需要多添加一個自定義字段requireAuth(true or false),在需要登錄的路由的meta中添加響應(yīng)的權(quán)限標(biāo)識requireAuth,通過這個字段來判斷該路由是否需要登錄權(quán)限,再通過vuex state獲取當(dāng)前的token是否存在,需要的話,同時(shí)當(dāng)前應(yīng)用不存在token,則跳轉(zhuǎn)到登錄頁面,進(jìn)行登錄,登錄成功后跳轉(zhuǎn)到目標(biāo)路由。如果用戶已經(jīng)登錄,則順利進(jìn)入路由,否則就進(jìn)入登錄頁面。
//使用鉤子函數(shù)對路由進(jìn)行權(quán)限跳轉(zhuǎn) router.beforeEach((to, from, next) => { if (to.matched.some(r => r.meta.requireAuth)) { if (store.getters.token) { next(); } else { next({ path: "/login", query: {redirect: to.fullPath} // 將跳轉(zhuǎn)的路由path作為參數(shù),登錄成功后跳轉(zhuǎn)到該路由 }) } }else { next(); } });
45、動態(tài)路由加載權(quán)限菜單
vue項(xiàng)目實(shí)現(xiàn)動態(tài)路由的方式大體可分為兩種:
1.前端這邊把路由寫好,登錄的時(shí)候根據(jù)用戶的角色權(quán)限來動態(tài)展示路由(前端控制路由)
2.后臺傳來當(dāng)前用戶對應(yīng)權(quán)限的路由表,前端通過調(diào)接口拿到后處理(后端處理路由)
beforeEach路由攔截,進(jìn)入判斷,如果發(fā)現(xiàn)本地沒有路由數(shù)據(jù),那就利用axios后臺取一次,取完以后,利用localStorage存儲起來,利用addRoutes動態(tài)添加路由。
46、懶加載
component: resolve => require(["../page/my/my.vue"], resolve),//懶加載
懶加載的最終實(shí)現(xiàn)方案
1、路由頁面以及路由頁面中的組件全都使用懶加載
優(yōu)點(diǎn):(1)最大化的實(shí)現(xiàn)隨用隨載
(2)團(tuán)隊(duì)開發(fā)不會因?yàn)闇贤▎栴}造成資源的重復(fù)浪費(fèi)
缺點(diǎn):(1)當(dāng)一個頁面中嵌套多個組件時(shí)將發(fā)送多次的http請求,可能會造成網(wǎng)頁顯示過慢且渲染參差不齊的問題2、路由頁面使用懶加載, 而路由頁面中的組件按需進(jìn)行懶加載, 即如果組件不大且使用不太頻繁, 直接在路由頁面中導(dǎo)入組件, 如果組件使用較為頻繁使用懶加載
優(yōu)點(diǎn):(1)能夠減少頁面中的http請求,頁面顯示效果好
缺點(diǎn):(2)需要團(tuán)隊(duì)事先交流, 在框架中分別建立懶加載組件與非懶加載組件文件夾3、路由頁面使用懶加載,在不特別影響首頁顯示延遲的情況下,根頁面合理導(dǎo)入復(fù)用組件,再結(jié)合方案2
優(yōu)點(diǎn):(1)合理解決首頁延遲顯示問題
?。?)能夠最大化的減少http請求, 且做其他他路由界面的顯示效果最佳
缺點(diǎn):(1)還是需要團(tuán)隊(duì)交流,建立合理區(qū)分各種加載方式的組件文件夾
47、router-link 與 router-view:https://www.cnblogs.com/dongz...
在菜單欄使用router-link配置菜單連接地址,使用router-view 顯示連接地址的詳細(xì)內(nèi)容是用來渲染通過路由映射過來的組件,當(dāng)路徑更改時(shí), 中的內(nèi)容也會發(fā)生更改
48、easy-mock: https://segmentfault.com/a/11...
https://www.easy-mock.com/docs
49、Vue中v-if和v-show的使用場景:https://blog.csdn.net/grapelo...
50、v-show和v-if指令的共同點(diǎn)和不同點(diǎn):
共同點(diǎn):
v-if和v-show都是通過判斷綁定數(shù)據(jù)的truefalse來展示不同點(diǎn):
v-if只有在判斷為true的時(shí)候才會對數(shù)據(jù)進(jìn)行渲染,false的時(shí)候把包含的代碼進(jìn)行刪除。除非再次進(jìn)行數(shù)據(jù)渲染,v-if才會重新判斷??梢哉f是用法比較傾向于對數(shù)據(jù)一次操作。
v-show是無論判斷是什么都會先對數(shù)據(jù)進(jìn)行渲染,只是false的時(shí)候?qū)?jié)點(diǎn)進(jìn)行display:none;的操作。所以再不重新渲染數(shù)據(jù)的情況下,改變數(shù)據(jù)的值可以使數(shù)據(jù)展示或隱藏。
vue-show本質(zhì)就是標(biāo)簽display設(shè)置為none,控制隱藏
vue-if是動態(tài)的向DOM樹內(nèi)添加或者刪除DOM元素
51、如何讓CSS只在當(dāng)前組件中起作用:
將當(dāng)前組件的