vue中如何封裝一個組件?
首先定義一個后綴名為.vue的文件,文件內部由三部分組成,template模板部分,script邏輯部分,style樣式部分。這三部分是組件的核心部分,組件需要哪些結構,在模板部分書寫,需要什么樣的外觀樣式,通過style部分書寫,有哪些行為在script部分書寫。一定要在script部分使用es6模塊化的導出語法(export default{}),進行導出。然后在需要調用組件的地方使用es6模塊化導入語法導入即可,組件需要哪些參數,直接在調用部分進行傳遞即可。主要邏輯還是在組件中完成。
談談對vue中插槽的理解?
vue中的插槽分為三種,匿名插槽,具名插槽,作用域插槽。
通過插槽可以動態(tài)指定某一個組件模板部分的渲染,我們在調用組件的時候,在組件的調用標簽中間傳遞了什么樣的標簽結構,那么該組件就會把我們傳遞的標簽結構放在他的模板部分進行渲染。
v-show和v-if在隱藏一個元素的時候有什么不同,應該如何來選擇?
v-show是通過css的方式來隱藏元素,而v-if是根據條件是否成立決定是否要創(chuàng)建元素。如果某個元素需要頻繁切換顯示狀態(tài)的話,建議使用v-show,因為頻繁創(chuàng)建銷毀DOM需要性能消耗。
什么是Vuex,在哪種場景下使用?
Vuex是針對vue的一個狀態(tài)管理工具,有幾個核心部分:
state 存儲狀態(tài)數據;
mutations 更新數據的方法;
actions 調用mutations中的方法,更新state數據;
getters 對state中的數據進行預處理;
當組件關系比較復雜的時候,可以使用vuex簡化組件間的傳值。
說說vue路由的使用步驟?
第一步:下載路由模塊vue-router;
第二步:創(chuàng)建路由對象;
第三步:配置路由規(guī)則;
第四步:將路由對象注冊為vue實例對象的成員屬性
常見的vue組件庫有哪些?
PC端:element-ui(餓了么團隊),ant-design(阿里螞蟻金服團隊),iview
移動端:mint-ui,vant,vux
談下對于MVVM的理解?
MVVM由三部分組成M(model數據層),V(view視圖層),VM(view-model視圖模型層)。是一種框架的設計思想,vue就是基于mvvm來設計的。其中M(model)層負責初始化數據,V(view)只負責頁面展示,VM(view-model)用來連接view層和model層,將數據層的數據傳遞一個視圖層進行展示,將視圖層的操作傳遞到數據層進行持久化。
談下vue的聲明周期?
創(chuàng)建階段:只執(zhí)行一次
beforeCreate(開始進行一些數據和方法的初始化操作,data中的數據和methods中的方法還不能用),
created(已經完成數據和方法的初始化,data中的數據和methods中的方法可以使用了),
beforeMount(開始渲染虛擬DOM),
mounted(已經完成了虛擬DOM的渲染,可以操作DOM了,只執(zhí)行一次)
運行階段:執(zhí)行多次
beforeUpdate(data中的數據即將被更新,會執(zhí)行多次)
updated(data中的數據已經更新完畢,會執(zhí)行多次)
銷毀階段:只執(zhí)行一次
beforeDestroy(vue實例即將銷毀,此時data中的數據和methods中的方法依然處于可用狀態(tài))
destroyed(vue實例已經銷毀,此時data中的數據和methods中的方法已經不可用)
Vue中有幾種路由模式?
vue中的路由模式有兩種;hash和history;默認是hash模式;可以在創(chuàng)建路由對象的時候,使用mode屬性來切換路由模式。
const router = new Router({mode:'history'})
vue路由導航守衛(wèi)是什么?以及它的應用場景?
路由守衛(wèi)是在頁面進行路由跳轉的時候做一些處理,比如攔截。
vue-router中提供了下面幾種路由導航守衛(wèi):
全局前置守衛(wèi)
const router = new VueRouter({ ... })
router.beforeEach((to,from,next) =>{
// from 從哪來
// to 到哪里去
// next是否要放行
})
全局后置鉤子
router.afterEach((to,from)=>{
// ...
})
路由獨享守衛(wèi):在聲明路由的時候,針對特定路由的構造函數
const router = new VueRouter({
routes: [
{
path: '/foo',
component: Foo,
beforeEach: (to,from,next)=>{
// ...
}
}
]
})
Vue有哪些常用的事件修飾符?
.prevent 阻止默認事件;
.stop 阻止冒泡;
.once 事件執(zhí)行一次;
.self 只當在event.target是當前元素自身時觸發(fā)處理函數
列舉vue中常用的指令?
v-model:實現雙向數據綁定;
v-bind:綁定屬性;
v-on:注冊事件;
v-html:設置標簽內容(允許內容html)
v-text:設置標簽的內容(不允許包含html)
v-cloak:解決插值表達式閃爍問題
v-for:循環(huán)遍歷數組或對象
vue中如何解決插值表達式閃爍問題?
使用v-html或v-text替代插值表達式;
使用v-cloak解決插值表達式閃爍,
第一步:聲明屬性選擇器[v-cloak]{display:none}
第二步:在插值表達式所在標簽添加屬性v-cloak