知識梳理

1、active-class 是哪個(gè)組件的屬性?嵌套路由怎么定義

(1)、active-class 是 vue-router 模塊的 router-link 組件的屬性   (2)、使用 children 定義嵌套路由

2、怎么定義 vue-router 的動(dòng)態(tài)路由? 怎么獲取傳過來的值

在 router 目錄下的 index.js 文件中,對 path 屬性加上 /:id。

使用 router 對象的 params.id 獲取

3、vue-router 有哪幾種導(dǎo)航鉤子?

三種,

(1)、全局導(dǎo)航鉤子

router.beforeEach(to, from, next),

router.beforeResolve(to, from, next),

router.afterEach(to, from ,next)

(2)、組件內(nèi)鉤子

           beforeRouteEnter, beforeRouteUpdate, beforeRouteLeave

(3)、單獨(dú)路由獨(dú)享組件

beforeEnter
4、v-model 是什么?怎么使用? vue中標(biāo)簽怎么綁定事件

v-model 可以實(shí)現(xiàn)雙向綁定,

綁定事件:<input @click="doLog" />

5、axios 是什么?怎么使用?描述使用它實(shí)現(xiàn)登錄功能的流程

axios 是請求后臺資源的模塊。 npm i axios -S

如果發(fā)送的是跨域請求,需在配置文件中 config/index.js 進(jìn)行配置

6、vuex 是什么?怎么使用?哪種功能場景使用它

vuex 是專門為 vue 開發(fā)的數(shù)據(jù)狀態(tài)管理模式。組件之間數(shù)據(jù)狀態(tài)共享

使用場景:音樂播放、登錄狀態(tài)、購物車

// 新建 store.js
import vue from 'vue'
import vuex form 'vuex'
vue.use(vuex)
export default new vuex.store({
    //...code
})
 
//main.js
import store from './store'
...

7、mvvm 框架是什么?它和其他框架(jquery) 的區(qū)別是什么?哪些場景適合

mvvm 是 model + view + viewmodel 框架,通過 viewmodel 連接數(shù)據(jù)模型model 和 view

區(qū)別:vue 是數(shù)據(jù)驅(qū)動(dòng),通過數(shù)據(jù)來顯示視圖層而不是節(jié)點(diǎn)操用

場景:數(shù)據(jù)操作比較多的場景,更加快捷

8、自定義指令(v-check, v-focus) 的方法有哪些? 它有哪些鉤子函數(shù)? 還有哪些鉤子函數(shù)參數(shù)

全局定義指令:在 vue 對象的 directive 方法里面有兩個(gè)參數(shù), 一個(gè)是指令名稱, 另一個(gè)是函數(shù)。

組件內(nèi)定義指令:directives

鉤子函數(shù): bind(綁定事件出發(fā))、inserted(節(jié)點(diǎn)插入時(shí)候觸發(fā))、update(組件內(nèi)相關(guān)更新)

鉤子函數(shù)參數(shù): el、binding

9、說出至少 4 種 vue 當(dāng)中的指令和它的用法

v-if(判斷是否隱藏)、v-for(把數(shù)據(jù)遍歷出來)、v-bind(綁定屬性)、v-model(實(shí)現(xiàn)雙向綁定)

11、vue 的雙向綁定的原理是什么

參考地址 https://ustbhuangyi.github.io/vue-analysis/reactive/summary.html
  vue.js 是采用數(shù)據(jù)劫持結(jié)合發(fā)布者-訂閱者模式的方式,通過Object.defineProperty()來劫持各個(gè)屬性的setter,getter,在數(shù)據(jù)變動(dòng)時(shí)發(fā)布消息給訂閱者,觸發(fā)相應(yīng)的監(jiān)聽回調(diào)。

具體步驟:

第一步:需要 observe 的數(shù)據(jù)對象進(jìn)行遞歸遍歷,包括子屬性對象的屬性,都加上 setter 和 getter 這樣的話,給這個(gè)對象的某個(gè)值賦值,就會觸發(fā)setter,那么就能監(jiān)聽到了數(shù)據(jù)變化

第二步:compile解析模板指令,將模板中的變量替換成數(shù)據(jù),然后初始化渲染頁面視圖,并將每個(gè)指令對應(yīng)的節(jié)點(diǎn)綁定更新函數(shù),添加監(jiān)聽數(shù)據(jù)的訂閱者,一旦數(shù)據(jù)有變動(dòng),收到通知,更新視圖

第三步:Watcher訂閱者是Observer和Compile之間通信的橋梁,主要做的事情是:

1、在自身實(shí)例化時(shí)往屬性訂閱器(dep)里面添加自己

2、自身必須有一個(gè)update()方法

3、待屬性變動(dòng)dep.notice()通知時(shí),能調(diào)用自身的 update() 方法,并觸發(fā)Compile中綁定的回調(diào),則功成身退。

第四步:MVVM作為數(shù)據(jù)綁定的入口,整合Observer、Compile和Watcher三者,通過Observer來監(jiān)聽自己的model數(shù)據(jù)變化,通過Compile來解析編譯模板指令,最終利用Watcher搭起Observer和Compile之間的通信橋梁,達(dá)到數(shù)據(jù)變化 -> 視圖更新;視圖交互變化(input) -> 數(shù)據(jù)model變更的雙向綁定效果。

12、請?jiān)敿?xì)說下你對vue生命周期的理解

總共分為8個(gè)階段創(chuàng)建前/后,載入前/后,更新前/后,銷毀前/后。

創(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)依然存在

1、vue的工作原理

參考網(wǎng)站 https://juejin.im/post/5af8eb55f265da0b814ba766
vue的數(shù)據(jù)雙向綁定是:數(shù)據(jù)劫持+發(fā)布訂閱模式實(shí)現(xiàn)的

5、MVVM的理解

參考網(wǎng)站 https://www.cnblogs.com/iovec/p/7840228.html
MVVM 是一種軟件架構(gòu)模式,他的核心就是viewmodel(視圖數(shù)據(jù)層);
V:view 視圖層 ;前端主要由 HTML 和 CSS 來構(gòu)建,為了更方便地展現(xiàn) ViewModel 或者 Model 層的數(shù)據(jù)
M:model 數(shù)據(jù)模型層 ;泛指后端進(jìn)行的各種業(yè)務(wù)邏輯處理和數(shù)據(jù)操控,主要圍繞數(shù)據(jù)庫系統(tǒng)展開
vm:視圖數(shù)據(jù)層 ;前端開發(fā)者對從后端獲取的 Model 數(shù)據(jù)進(jìn)行轉(zhuǎn)換處理,做二次封裝,以生成符合 View 層使用預(yù)期的視圖數(shù)據(jù)模型(view與model直接的通信橋梁);注意vm封裝的數(shù)據(jù)模型包括視圖狀態(tài)和行為兩部分,model層返回的數(shù)據(jù)模型只有狀態(tài),這里展示什么那里展示什么,而視圖行為包括:頁面加載進(jìn)來展示什么,點(diǎn)擊這個(gè)按鈕會發(fā)生什么,滾動(dòng)下會發(fā)生什么等都是數(shù)據(jù)視圖行為(交互),視圖狀態(tài)和行為都封裝在viewmodel里面,就使得vm可以完整的去描述view層;

5.1、Vue中給data中的對象屬性添加一個(gè)新的屬性時(shí)會發(fā)生什么,如何解決?
如果這個(gè)新的屬性沒有再data里面初始化,新增的時(shí)候是不是被渲染再視圖中的,解決方法1,再data中初始化定義,2,用vueapi set() //this.set(this.obj, 'b', 'obj.b')

5.2、Vue中如何監(jiān)控某個(gè)屬性值的變化?
computed 去監(jiān)聽 ,或者watch 監(jiān)聽

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • OC的理解與特性 OC作為一門面向?qū)ο蟮恼Z言,自然具有面向?qū)ο蟮恼Z言特性:封裝、繼承、多態(tài)。它既具有靜態(tài)語言的特性...
    失憶的程序員閱讀 534評論 0 1
  • 序言 目前形勢,參加到iOS隊(duì)伍的人是越來越多,甚至已經(jīng)到供過于求了。今年,找過工作人可能會更深刻地體會到今年的就...
    獨(dú)酌丿紅顏閱讀 2,465評論 18 60
  • 序言目 前形勢,參加到iOS隊(duì)伍的人是越來越多,甚至已經(jīng)到供過于求了。今年,找過工作人可能會更深刻地體會到今年的就...
    階梯閱讀 506評論 0 1
  • 一:什么是閉包?閉包的用處? (1)閉包就是能夠讀取其他函數(shù)內(nèi)部變量的函數(shù)。在本質(zhì)上,閉包就 是將函數(shù)內(nèi)部和函數(shù)外...
    xuguibin閱讀 10,053評論 1 52
  • vue是什么? vue是構(gòu)建數(shù)據(jù)驅(qū)動(dòng)的web界面的漸進(jìn)式框架。Vue.js 的目標(biāo)是通過盡可能簡單的 API 實(shí)現(xiàn)...
    九四年的風(fēng)閱讀 8,824評論 2 131

友情鏈接更多精彩內(nèi)容