主頁 > 前端設計 > Vue高頻面試題--面試必備(背)

Vue高頻面試題--面試必備(背)

2021-10-08 08:40:42 前端設計

作為全堆疊開發的我,不只是會Java哦,react和vue等熱門前端框架我在專案中也是經常用到哦,今天來一些高頻vue面試題,都是精華中的精華哦,如果你要面試前端,一定要背背哦,說不定你的面試老師也是用的這一套題哦,vue的知識體系還是很龐大的,以下是vue的知識體系,不妨驗證一下你都學了哪些了?

為大家精心準備了vue課程,微信搜索關注公眾號:【zhulin1028】,或者掃描以下二維碼,回復【vue課程】即可免費獲取,

目錄

1、 Vue的雙向資料系結原理是什么?

2、請詳細說下你對vue生命周期的理解?

3、請說出vue.cli專案中src目錄每個檔案夾和檔案的用法?

4、怎么定義vue-router的動態路由?怎么獲取傳過來的動態引數?

5、vue-router有哪幾種導航鉤子?

6、scss是什么?在vue.cli中的安裝使用步驟是?有哪幾大特性?

7、mint-ui是什么?怎么使用?說出至少三個組件使用方法?

8、請說下封裝 vue 組件的程序?

9、vue-loader是什么?使用它的用途有哪些?

10、vue.cli中怎樣使用自定義的組件?有遇到過哪些問題嗎?

11、說下你對mvvm的理解?雙向系結的理解?

12、請說下具體使用vue的理解?

13、你是怎么認識vuex的?

14、vuex有哪幾種屬性?

15、vuex的State特性是?

16、vuex的Getter特性是?

17、vuex的Mutation特性是?

18、的作用是什么?

19、vue中ref的作用是什么?

20、vue中組件直接的通信是如何實作的?

21. vue-cli 工程中常用的 npm 命令有哪些?

22. vue-router 路由的兩種模式,

23. Vue 打包命令是什么?Vue 打包后會生成哪些檔案?

24. Vue 如何優化首屏加載速度?


1、 Vue的雙向資料系結原理是什么?

vue.js 是采用資料劫持結合發布者-訂閱者模式的方式,通過 Object.de?neProperty()來劫持各個屬性的 setter,getter,在資料變動時發布訊息給訂閱者,觸發相應的監聽回呼, 具體步驟: 第一步:需要
observe 的資料物件進行遞回遍歷,包括子屬性物件的屬性,都加上 setter 和 getter,這樣的 話,給這個物件的某個值賦值,就會觸發 setter,那么就能監聽到了資料變化, 第二步:compile 決議模板指令,將模板中的變數替換成資料,然后初始化渲染頁面視圖,并將每個指令對 應的節點系結更新函式, 添加監聽資料的訂閱者,一旦資料有變動,收到通知,更新視圖, 第三步:Watcher 訂閱者是
Observer 和 Compile 之間通信的橋梁,主要做的事情是:1、在自身實體化時往屬 性訂閱器(dep)里面添加自己 2、自身必須有一個 update()方法 3、待屬性變動 dep.notice()通知時,能呼叫自身的update()方法,并觸發 Compile 中系結的回呼,則功成身退, 第四步:MVVM 作為資料系結的入口, 整合 Observer、Compile 和 Watcher 三者,通過 Observer 來監聽自己 的 model 資料變化,通過Compile 來決議編譯模板指令,最終利用 Watcher 搭起 Observer 和 Compile 之間的通信 橋梁,達到資料變化 -> 視圖更新;視圖互動變化(input)-> 資料 model 變更的雙向系結效果,

2、請詳細說下你對vue生命周期的理解?

總共分為 8 個階段創建前/后,載入前/后,更新前/后,銷毀前/后,創建前/后: 1、在 beforeCreated 階段,vue 實體的掛載元素$el 和資料物件 data 都為 unde?ned,還未初始化,2、在 created 階段,vue 實體的資料物件 data 有了,$el 還沒有,
3、載入前/后:在 beforeMount 階段,vue 實體的$el 和 data 都初始化了,但還是掛載之前為虛擬的
dom 節 點,data.message 還未替換,
4、在 mounted 階段,vue 實體掛載完成,data.message 成功渲染,
5、更新前/后:當 data 變化時,會觸發 beforeUpdate 和 updated 方法,
6、銷毀前/后:在執行 destroy 方法后,對 data 的改變不會再觸發周期函式,說明此時 vue 實體已經解除了 事件監聽以及和 dom 的系結,但是 dom 結構依然存在

3、請說出vue.cli專案中src目錄每個檔案夾和檔案的用法?

assets 檔案夾是放靜態資源;
components 是放組件;
router 是定義路由相關的配置;
view 視圖;
app.vue 是一個應用主組件;
main.js 是入口檔案

4、怎么定義vue-router的動態路由?怎么獲取傳過來的動態引數?

在 router 目錄下的 index.js 檔案中,對 path 屬性加上/:id, 使用 router 物件的 params.id

5、vue-router有哪幾種導航鉤子?

1、全域導航鉤子:router.beforeEach(to,from,next),作用:跳轉前進行判斷攔截,
2、組件內的鉤子;
3、單獨路由獨享組件

6、scss是什么?在vue.cli中的安裝使用步驟是?有哪幾大特性?

css 的預編譯, 使用步驟:
第一步:用 npm 下三個 loader(sass-loader、css-loader、node-sass)
第二步:在 build 目錄找到 webpack.base.con?g.js,在那個 extends 屬性中加一個拓展.scss 第三步:還是在同一個檔案,配置一個 module 屬性
第四步:然后在組件的 style 標簽加上 lang 屬性 ,例如:lang=”scss” 有哪幾大特性:1、可以用變數, 例如($變數名稱=值);2、可以用混合器;3、可以嵌套

7、mint-ui是什么?怎么使用?說出至少三個組件使用方法?

基于 vue 的前端組件庫,npm 安裝,然后 import 樣式和 js, vue.use(mintUi)全域引入, 在單個組件區域引入:import{Toast}from‘mint-ui’, 組件一:Toast(‘登錄成功’); 組件二:mint-header; 組件三:mint-swiper

8、請說下封裝 vue 組件的程序?

首先,組件可以提升整個專案的開發效率,能夠把頁面抽象成多個相對獨立的模塊,解決了我們傳統項 目開 發:效率低、難維護、復用性等問題, 然后,使用 Vue.extend 方法創建一個組件,然后使用
Vue.component 方法注冊組件,子組件需要資料,可以 在 props 中接受定義,而子組件修改好資料后,想把資料傳遞給父組件,可以采用 emit 方法

9、vue-loader是什么?使用它的用途有哪些?

決議.vue 檔案的一個加載器,跟 template/js/style 轉換成 js 模塊, 用途:js 可以寫 es6、style 樣式可以 scss 或 less、template 可以加 jade 等

10、vue.cli中怎樣使用自定義的組件?有遇到過哪些問題嗎?

第一步:在 components 目錄新建你的組件檔案(smithButton.vue),script 一定要 exportdefault
第二步:在需要用的頁面(組件)中匯入:
importsmithButtonfrom‘../components/smithButton.vue’
第三步:注入到 vue 的子組件的 components 屬性上面,components:{smithButton} 第四步:在 template 視圖 view 中使用,
問題有:smithButton 命名,使用的時候則 smith-button,

11、說下你對mvvm的理解?雙向系結的理解?

mvvm 就是 vm 框架視圖、m 模型就是用來定義驅動的資料、v 經過資料改變后的 html、vm 就是用來實作雙 向系結
雙向系結:一個變了另外一個跟著變了,例如:視圖一個系結了模型的節點有變化,模型對應的值會跟著 變

12、請說下具體使用vue的理解?

1、使用 vue 不必擔心布局更改和類名重復導致的 js 重寫,因為它是靠資料驅動雙向系結,底層是通過
Object.de?neProperty() 定義的資料 set、get 函式原理實作,
2、組件化開發,讓專案的可拓展性、移植性更好,代碼重用性更高,就好像農民工建房子,拿起自己 的工 具包就可以開工,專案經理坐等收樓就好,
3、單頁應用的體驗零距離接觸安卓原生應用,區域組件更新界面,讓用戶體驗更快速省時,
4、js 的代碼無形的規范,團隊合作開發代碼可閱讀性更高,

13、你是怎么認識vuex的?

1、vuex 可以理解為一種開發模式或框架,比如 PHP 有 thinkphp,java 有 spring 等,
2、通過狀態(資料源)集中管理驅動組件的變化(好比 spring 的 IOC 容器對 bean 進行集中管理),
3、應用級的狀態集中放在 store 中; 改變狀態的方式是提交 mutations,這是個同步的事物; 異步邏輯 應該封裝在 action 中,

14、vuex有哪幾種屬性?

有五種,分別是 State、 Getter、Mutation 、Action、 Module

15、vuex的State特性是?

1、Vuex 就是一個倉庫,倉庫里面放了很多物件,其中 state 就是資料源存放地,對應于與一般 Vue 物件 里面的 data,
2、state 里面存放的資料是回應式的,Vue 組件從 store 中讀取資料,若是 store 中的資料發生改變, 依賴 這個資料的組件也會發生更新,
3、它通過 mapState 把全域的 state 和 getters 映射到當前組件的 computed 計算屬性中,

16、vuex的Getter特性是?

1、getters 可以對 State 進行計算操作,它就是 Store 的計算屬性 2、 雖然在組件內也可以做計算屬性,但是 getters 可以在多組件之間復用
3、 如果一個狀態只在一個組件內使用,是可以不用 getters

17、vuex的Mutation特性是?

1、Action 類似于 mutation,不同在于:
2、Action 提交的是 mutation,而不是直接變更狀態,
3、Action 可以包含任意異步操作

18、的作用是什么?

包裹動態組件時,會快取不活動的組件實體,主要用于保留組件狀態或避免重新渲染,

19、vue中ref的作用是什么?

ref 被用來給 DOM 元素或子組件注冊參考資訊,參考資訊會根據父組件的 $refs 物件進行注冊,如果在普 通的 DOM 元素上使用,參考資訊就是元素; 如果用在子組件上,參考資訊就是組件實體 注意:只要想要在 Vue 中直接操作 DOM 元素,就必須用 ref 屬性進行注冊

20、vue中組件直接的通信是如何實作的?

組件關系可分為父子組件通信、兄弟組件通信,
1、父組件向子組件: 通過 props 屬性來實作
2、子組件向父組件: 子組件用 ( ) 來 觸 發 事 件 , 父 組 件 用on()來監昕子組件的事件, 父組件可以直接在子組件的自定義標簽上使用 v-on 來監昕子組件觸發的自定義事件,
3、兄弟之間的通信: 通過實體一個 vue 實體 Bus 作為媒介,要相互通信的兄弟組件之中都引入 Bus, 之后通過分別呼叫 Bus 事件觸發和監聽來實作組件之間的通信和引數傳遞,

21. vue-cli 工程中常用的 npm 命令有哪些?

npm install:下載 node_modules 資源包的命令
npm run dev:啟動 vue-cli 開發環境的 npm 命令
npm run build:vue-cli 生成生產環境部署資源的 npm 命令

22. vue-router 路由的兩種模式,

hash 模式:
后面的 hash 值的變化,并不會導致瀏覽器向服務器發出請求,瀏覽器不發出請求,也就不會重繪瀏覽器,每次 hash 值的變化會觸發 hashchange 事件,
history 模式:
利用了 HTML5 中新增的 pushState() 和 replaceState() 方法,這兩個方法應用于瀏覽器的歷史記錄堆疊,在當前已有的 back、forward、go 的基礎之上,它們提供了對歷史記錄進行修改的功能,只是當它們執行修改時,雖然改變了當前的 URL,但瀏覽器不會立即向后端發送請求,

23. Vue 打包命令是什么?Vue 打包后會生成哪些檔案?

npm run build :Vue 打包命令
Vue 打包后會在當前作業目錄下生成一個 dist 檔案夾,檔案夾中會有 static 靜態檔案以及
index.html 初始頁面,


24. Vue 如何優化首屏加載速度?


異步路由加載不打包庫檔案
關閉 sourcemap
開啟 gzip 壓縮

轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/306260.html

標籤:其他

上一篇:手把手教你發個Node.js包

下一篇:淘寶滑塊,詳情頁可以這樣過!(js逆向)

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • vue移動端上拉加載

    可能做得過于簡單或者比較low,請各位大佬留情,一起探討技術 ......

    uj5u.com 2020-09-10 04:38:07 more
  • 優美網站首頁,頂部多層導航

    一個個人用的瀏覽器首頁,可以把一下常用的網站放在這里,平常打開會比較方便。 第一步,HTML代碼 <script src=https://www.cnblogs.com/szharf/p/"js/jquery-3.4.1.min.js"></script> <div id="navigate"> <ul> <li class="labels labels_1"> ......

    uj5u.com 2020-09-10 04:38:47 more
  • 頁面為要加<!DOCTYPE html>

    最近因為寫一個js函式,需要用到$(window).height(); 由于手寫demo的時候,過于自信,其實對前端方面的認識也不夠體系,用文本檔案直接敲出來的html代碼,第一行沒有加上<!DOCTYPE html> 導致了$(window).height();的結果直接是整個document的高 ......

    uj5u.com 2020-09-10 04:38:52 more
  • WordPress網站程式手動升級要做好資料備份

    WordPress博客網站程式在進行升級前,必須要做好網站資料的備份,這個問題良家佐言是遇見過的;在剛開始接觸WordPress博客程式的時候,因為升級問題和博客網站的修改的一些嘗試,良家佐言是吃盡了苦頭。因為購買的是西部數碼的空間和域名,每當佐言把自己的WordPress博客網站搞到一塌糊涂的時候 ......

    uj5u.com 2020-09-10 04:39:30 more
  • WordPress程式不能升級為5.4.2版本的原因

    WordPress是一款個人博客系統,受到英文博客愛好者和中文博客愛好者的追捧,并逐步演化成一款內容管理系統軟體;它是使用PHP語言和MySQL資料庫開發的,用戶可以在支持PHP和MySQL資料庫的服務器上使用自己的博客。每一次WordPress程式的更新,就會牽動無數WordPress愛好者的心, ......

    uj5u.com 2020-09-10 04:39:49 more
  • 使用CSS3的偽元素進行首字母下沉和首行改變樣式

    網頁中常見的一種效果,首字改變樣式或者首行改變樣式,效果如下圖。 代碼: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, ......

    uj5u.com 2020-09-10 04:40:09 more
  • 關于a標簽的講解

    什么是a標簽? <a> 標簽定義超鏈接,用于從一個頁面鏈接到另一個頁面。 <a> 元素最重要的屬性是 href 屬性,它指定鏈接的目標。 a標簽的語法格式:<a href=https://www.cnblogs.com/summerxbc/p/"指定要跳轉的目標界面的鏈接">需要展示給用戶看見的內容</a> a標簽 在所有瀏覽器中,鏈接的默認外觀如下: 未被訪問的鏈接帶 ......

    uj5u.com 2020-09-10 04:40:11 more
  • 前端輪播圖

    在需要輪播的頁面是引入swiper.min.js和swiper.min.css swiper.min.js地址: 鏈接:https://pan.baidu.com/s/15Uh516YHa4CV3X-RyjEIWw 提取碼:4aks swiper.min.css地址 鏈接:https://pan.b ......

    uj5u.com 2020-09-10 04:40:13 more
  • 如何設定html中的背景圖片(全屏顯示,且不拉伸)

    1 <style>2 body{background-image:url(https://uploadbeta.com/api/pictures/random/?key=BingEverydayWallpaperPicture); 3 background-size:cover;background ......

    uj5u.com 2020-09-10 04:40:16 more
  • Java學習——HTML詳解(上)

    HTML詳解 初識HTML Hyper Text Markup Language(超文本標記語言) 1 <!--DOCTYPE:告訴瀏覽器我們要使用什么規范--> 2 <!DOCTYPE html> 3 <html lang="en"> 4 <head> 5 <!--meta 描述性的標簽,描述一些 ......

    uj5u.com 2020-09-10 04:40:33 more
最新发布
  • 我的第一個NPM包:panghu-planebattle-esm(胖虎飛機大戰)使用說明

    好家伙,我的包終于開發完啦 歡迎使用胖虎的飛機大戰包!! 為你的主頁添加色彩 這是一個有趣的網頁小游戲包,使用canvas和js開發 使用ES6模塊化開發 效果圖如下: (覺得圖片太sb的可以自己改) 代碼已開源!! Git: https://gitee.com/tang-and-han-dynas ......

    uj5u.com 2023-04-20 07:59:23 more
  • 生產事故-走近科學之消失的JWT

    入職多年,面對生產環境,盡管都是小心翼翼,慎之又慎,還是難免捅出簍子。輕則滿頭大汗,面紅耳赤。重則系統停擺,損失資金。每一個生產事故的背后,都是寶貴的經驗和教訓,都是專案成員的血淚史。為了更好地防范和遏制今后的各類事故,特開此專題,長期更新和記錄大大小小的各類事故。有些是親身經歷,有些是經人耳傳口授 ......

    uj5u.com 2023-04-18 07:55:04 more
  • 記錄--Canvas實作打飛字游戲

    這里給大家分享我在網上總結出來的一些知識,希望對大家有所幫助 打開游戲界面,看到一個畫面簡潔、卻又富有挑戰性的游戲。螢屏上,有一個白色的矩形框,里面不斷下落著各種單詞,而我需要迅速地輸入這些單詞。如果我輸入的單詞與螢屏上的單詞匹配,那么我就可以獲得得分;如果我輸入的單詞錯誤或者時間過長,那么我就會輸 ......

    uj5u.com 2023-04-04 08:35:30 more
  • 了解 HTTP 看這一篇就夠

    在學習網路之前,了解它的歷史能夠幫助我們明白為何它會發展為如今這個樣子,引發探究網路的興趣。下面的這張圖片就展示了“互聯網”誕生至今的發展歷程。 ......

    uj5u.com 2023-03-16 11:00:15 more
  • 藍牙-低功耗中心設備

    //11.開啟藍牙配接器 openBluetoothAdapter //21.開始搜索藍牙設備 startBluetoothDevicesDiscovery //31.開啟監聽搜索藍牙設備 onBluetoothDeviceFound //30.停止監聽搜索藍牙設備 offBluetoothDevi ......

    uj5u.com 2023-03-15 09:06:45 more
  • canvas畫板(滑鼠和觸摸)

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>canves</title> <style> #canvas { cursor:url(../images/pen.png),crosshair; } #canvasdiv{ bo ......

    uj5u.com 2023-02-15 08:56:31 more
  • 手機端H5 實作自定義拍照界面

    手機端 H5 實作自定義拍照界面也可以使用 MediaDevices API 和 <video> 標簽來實作,和在桌面端做法基本一致。 首先,使用 MediaDevices.getUserMedia() 方法獲取攝像頭媒體流,并將其傳遞給 <video> 標簽進行渲染。 接著,使用 HTML 的 < ......

    uj5u.com 2023-01-12 07:58:22 more
  • 記錄--短視頻滑動播放在 H5 下的實作

    這里給大家分享我在網上總結出來的一些知識,希望對大家有所幫助 短視頻已經無數不在了,但是主體還是使用 app 來承載的。本文講述 H5 如何實作 app 的視頻滑動體驗。 無聲勝有聲,一圖頂百辯,且看下圖: 網址鏈接(需在微信或者手Q中瀏覽) 從上圖可以看到,我們主要實作的功能也是本文要講解的有: ......

    uj5u.com 2023-01-04 07:29:05 more
  • 一文讀懂 HTTP/1 HTTP/2 HTTP/3

    從 1989 年萬維網(www)誕生,HTTP(HyperText Transfer Protocol)經歷了眾多版本迭代,WebSocket 也在期間萌芽。1991 年 HTTP0.9 被發明。1996 年出現了 HTTP1.0。2015 年 HTTP2 正式發布。2020 年 HTTP3 或能正... ......

    uj5u.com 2022-12-24 06:56:02 more
  • 【HTML基礎篇002】HTML之form表單超詳解

    ??一、form表單是什么

    ??二、form表單的屬性

    ??三、input中的各種Type屬性值

    ??四、標簽 ......

    uj5u.com 2022-12-18 07:17:06 more