您現在的位置是:首頁 > 遊戲
Vue前端最新面試題(三)
圖片怎麼轉換成url
DOM 事件有哪些階段?談談對事件代理的理解
分為三大階段:捕獲階段——目標階段——冒泡階段
事件代理簡單說就是:事件不直接繫結到某元素上,而是繫結到該元素的父元素上,進行觸發事件操作時(例如‘click’),再透過條件判斷,執行事件觸發後的語句(例如‘alert(e。target。innerHTML)’)
好處:
(1)
使程式碼更簡潔;
(2)
節省記憶體開銷
1。什麼是元件
js元件就是把一系列的功能封裝起來,包裝成一個物件。比如一個表格元件,一個表單元件等等。一個元件必然包含了某種特定的職能,目的在於可以複用。
2。元件分類和使用
元件分為全域性元件和區域性元件。
全域性元件使用:1。定義 2。使用
區域性元件使用有三步:1。定義 2。註冊 3。使用
全域性元件
Vue。component(“my-nav”, {
template: “
- {{item}}
// 自定義元件裡面的資料一定要寫成data函式並且有return 返回物件。
data() {
return {
arr: [1, 2, 3, 4, 5, 6]
}
}
});
1
區域性元件的使用:
//定義元件
let search = {
template:‘
};
let vm = new Vue({
el:‘#app’,
data:{
},
//第二步 註冊元件
components:{
search
}
})
<!——第三步,使用元件——>
3。元件
巢狀
巢狀規則,子元件要在父元件上註冊,父元件要到Vue例項上去註冊。
例如:
let grandson = {
template: ‘
};
//grandson 元件要到父元件上註冊
let son = {
template:‘
components:{
grandson,
}
};
let vm = new Vue({
el:‘#app’,
data:{},
components:{
//son元件到到vm上去註冊
son,
}
})
4。父元件向子元件傳遞訊息
方法:props
let son = {
template:‘
props:[‘money’]
};
let father = {
template:‘
components:{
son
},
data(){
return {m:500}
}
};
let vm = new Vue({
el:‘#app’,
data:{
},
components:{father}
})
5。子元件向父元件傳遞訊息
方法 $emit
let son = {
props:[‘money’],
template:‘
methods:{
getmore(){
this。$emit(‘more’,1000);
}
},
}
let father = {
template:‘
data(){
return {
m:500
}
},
methods:{
givemore(val){
this。m = val;
}
},
components:{
son
}
}
let vm = new Vue({
el:‘#app’,
data:{
},
components:{
father
}
})
目錄結構
www:整個專案的根目錄
order-www:訂單模組根目錄
config:配置目錄
src:開發人員開發的目錄
api:呼叫ajax的相關js
components:頁面相關元件目錄
router:路由目錄
store:存放store目錄
main。js:入口js
1、vue中 this。A = this。B會改變B的值怎麼辦
原因:這是一個引用傳遞而不是值傳遞,A、B指向的是同一個記憶體地址
解決辦法:this。A = JSON。parse(JSON,stringify(this。B))(B轉換成字串,然後在轉換成物件 )
1、如何獲取dom?
答:ref=“domName” 用法:this。$refs。domName
2、說出幾種vue當中的指令和它的用法?
答:v-model雙向資料繫結;v-for迴圈 key值——給每個節點做一個唯一標識,Diff演算法就可以正確的識別此節點,找到正確的位置區插入新的節點,高效的更新虛擬dom;
v-if v-show 顯示與隱藏;
v-on事件;v-once: 只繫結一次。
3、如何讓CSS只在當前元件中起作用?
答:在元件中的style前面加上scoped
4、請說出vue。cli專案中src目錄每個資料夾和檔案的用法?
assets資料夾是放靜態資源;components是放元件;router是定義路由相關的配置; app。vue是一個應用主元件;main。js是入口檔案。
目錄結構
build——配置
mock——-前端模擬資料配置相關檔案
public——-前端靜態資原始檔
src——專案原始檔
api——HTTP請求介面資料
assets——前端主題、字型、圖片等資原始檔
components——全域性元件
directive——全域性指令
filters——全域性過濾器
icons——公共圖示資源
layout——佈局相關元件
router——-路由配置相關檔案
store——資料狀態管理檔案
styles——-css樣式檔案
utils——公共方法
vendor——第三方js庫資源
view——相關頁面元件
App。vue ——-專案的根元件
main。js——入口檔案
permission。js——許可權相關配置
5、Vue中雙向資料繫結是如何實現的?
答:vue 雙向資料繫結是透過 資料劫持 結合 釋出訂閱模式的方式來實現的, 也就是說資料和檢視同步,資料發生變化,檢視跟著變化,檢視變化,資料也隨之發生改變;
核心:關於VUE雙向資料繫結,其核心是 Object。defineProperty()方法。
6、單頁面應用和多頁面應用區別及優缺點
答:
單頁面應用(
SPA
),
通俗一點說就是指只有一個主頁面的應用,瀏覽器一開始要載入所有必須的 html, js, css。所有的頁面內容都包含在這個所謂的主頁面中。但在寫的時候,還是會分開寫(頁面片段),然後在互動的時候由路由程式動態載入,單頁面的頁面跳轉,僅重新整理區域性資源。多應用於pc端。
多頁面(
MPA
)
,就是指一個應用中有多個頁面,頁面跳轉時是整頁重新整理
單頁面的優點:
使用者體驗好,快,內容的改變不需要重新載入整個頁面,基於這一點spa對伺服器壓力較小;前後端分離;頁面效果會比較炫酷(比如切換頁面內容時的專場動畫)。
單頁面缺點:
不利於seo;導航不可用,如果一定要導航需要自行實現前進、後退。(由於是單頁面不能用瀏覽器的前進後退功能,所以需要自己建立堆疊管理);初次載入時耗時多;頁面複雜度提高很多。
7、v-if和v-for的優先順序
答:當 v-if 與 v-for 一起使用時,v-for 具有比 v-if 更高的優先順序,這意味著 v-if 將分別重複運行於每個 v-for 迴圈中。所以,不推薦v-if和v-for同時使用。
如果v-if和v-for一起用的話,vue中的的會自動提示v-if應該放到外層去。
附加知識點:在v-for遍歷中,都需要宣告:key,那麼:key的作用是什麼呢?
答:vue和react都實現了一套虛擬DOM,使我們可以不直接操作DOM元素,只操作資料便可以重新渲染頁面。而隱藏在背後的原理便是其高效的Diff演算法。vue和react的虛擬DOM的Diff演算法大致相同,其核心是基於兩個簡單的假設:
假設1、 兩個相同的元件產生類似的DOM結構,不同的元件產生不同的DOM結構。
假設2、 同一層級的一組節點,他們可以透過唯一的id進行區分。
簡單的說, :key的作用主要是為了高效的更新虛擬DOM
8、vue常用的修飾符
。stop:等同於JavaScript中的event。stopPropagation(),防止事件冒泡;
。prevent:等同於JavaScript中的event。preventDefault(),防止執行預設的行為(如果事件可取消,則取消該事件,而不停止事件的進一步傳播);
。capture:與事件冒泡的方向相反,事件捕獲由外到內;
。self:只會觸發自己範圍內的事件,不包含子元素;
。once:只會觸發一次。
9、vue的兩個核心點
答:資料驅動、元件系統
資料驅動:ViewModel,保證資料和檢視的一致性。
元件系統:應用類UI可以看作全部是由元件樹構成的。
10、vue和jQuery的區別
答:jQuery是使用選擇器($)選取DOM物件,對其進行賦值、取值、事件繫結等操作,其實和原生的HTML的區別只在於可以更方便的選取和操作DOM物件,而資料和介面是在一起的。比如需要獲取label標籤的內容:$(“lable”)。val();,它還是依賴DOM元素的值。
Vue則是透過Vue物件將資料和View完全分離開來了。對資料進行操作不再需要引用相應的DOM物件,可以說資料和View是分離的,他們透過Vue物件這個vm實現相互的繫結。這就是傳說中的MVVM。
11、引進元件的步驟
答: 在template中引入元件;
在script的第一行用import引入路徑;
用component中寫上元件名稱。
12、Vue-router跳轉和location。href有什麼區別
答:使用location。href=‘/url’來跳轉,簡單方便,但是重新整理了頁面;
使用history。pushState(‘/url’),無重新整理頁面,靜態跳轉;
引進router,然後使用router。push(‘/url’)來跳轉,使用了diff演算法,實現了按需載入,減少了dom的消耗。
其實使用router跳轉和使用history。pushState()沒什麼差別的,因為vue-router就是用了history。pushState(),尤其是在history模式下。
13、vue slot
答:簡單來說,假如父元件需要在子元件內放一些DOM,那麼這些DOM是顯示、不顯示、在哪個地方顯示、如何顯示,就是slot分發負責的活。
14、vue專案是打包了一個js檔案,一個css檔案,還是有多個檔案?
答:根據vue-cli腳手架規範,一個js檔案,一個CSS檔案。
15、Vue裡面router-link在電腦上有用,在安卓上沒反應怎麼解決?
Vue路由在Android機上有問題,babel問題,安裝babel polypill外掛解決。
16、Vue2中註冊在router-link上事件無效解決方法
答: 使用@click。native。原因:router-link會阻止click事件,。native指直接監聽一個原生事件。
17、RouterLink在IE和Firefox中不起作用(路由不跳轉)的問題
答: 方法一:只用a標籤,不適用button標籤;方法二:使用button標籤和Router。navigate方法
18、axios的特點有哪些
答:從瀏覽器中建立XMLHttpRequests;
node。js建立http請求;
支援Promise API;
攔截請求和響應;
轉換請求資料和響應資料;
取消請求;
自動換成json。
axios中的傳送欄位的引數是data跟params兩個,兩者的區別在於params是跟請求地址一起傳送的,data的作為一個請求體進行傳送
params一般適用於get請求,data一般適用於post put 請求。
19、請說下封裝 vue 元件的過程?
答:1。 建立元件的模板,先把架子搭起來,寫寫樣式,考慮好元件的基本邏輯。(os:思考1小時,碼碼10分鐘,程式猿的準則。)
2。 準備好元件的資料輸入。即分析好邏輯,定好 props 裡面的資料、型別。
3。 準備好元件的資料輸出。即根據元件邏輯,做好要暴露出來的方法。
4。 封裝完畢了,直接呼叫即可
20、params和query的區別
用法
:query要用path來引入,params要用name來引入,接收引數都是類似的,分別是this。$route。query。name和this。$route。params。name。
url
地址顯示:
query更加類似於我們ajax中get傳參,params則類似於post,說的再簡單一點,前者在瀏覽器位址列中顯示引數,後者則不顯示
注意點
:query重新整理不會丟失query裡面的資料
params重新整理 會 丟失 params裡面的資料。
21、vue更新陣列時觸發檢視更新的方法
答:push();pop();shift();unshift();splice(); sort();reverse()
22、vue常用的UI元件庫
Mint UI,element,VUX
23、mvvm 框架是什麼?
答:vue是實現了雙向資料繫結的mvvm框架,當檢視改變更新模型層,當模型層改變更新檢視層。在vue中,使用了雙向繫結技術,就是View的變化能實時讓Model發生變化,而Model的變化也能實時更新到View。
24、vuex是什麼?怎麼使用?哪種功能場景使用它?
答:vue框架中狀態管理。在main。js引入store,注入。
新建了一個目錄store。js,…。。 export 。
場景有:單頁應用中,元件之間的狀態。音樂播放、登入狀態、加入購物車
25、vuex有哪幾種屬性?
答:有五種,分別是 State、 Getter、Mutation 、Action、 Module
state => 基本資料(資料來源存放地)
getters => 從基本資料派生出來的資料
mutations => 提交更改資料的方法,同步!
actions => 像一個裝飾器,包裹mutations,使之可以非同步。
modules => 模組化Vuex
26、js延遲載入的方式有哪些?
defer和async、動態建立DOM方式(建立script,插入到DOM中,載入完畢後callBack)、按需非同步載入js
27、如何判斷當前指令碼執行在瀏覽器還是node環境中?
透過判斷Global物件是否為window,如果不為window,當前指令碼沒有執行在瀏覽器中
一個頁面從輸入 URL 到頁面載入顯示完成,這個過程中都發生了什麼?
分為4個步驟:
(1),當傳送一個URL請求時,不管這個URL是Web頁面的URL還是Web頁面上每個資源的URL,瀏覽器都會開啟一個執行緒來處理這個請求,同時在遠端DNS伺服器上啟動一個DNS查詢。這能使瀏覽器獲得請求對應的IP地址。
(2), 瀏覽器與遠端Web伺服器透過TCP三次握手協商來建立一個TCP/IP連線。該握手包括一個同步報文,一個同步-應答報文和一個應答報文,這三個報文在瀏覽器和伺服器之間傳遞。該握手首先由客戶端嘗試建立起通訊,而後伺服器應答並接受客戶端的請求,最後由客戶端發出該請求已經被接受的報文。
(3),一旦TCP/IP連線建立,瀏覽器會透過該連線向遠端伺服器傳送HTTP的GET請求。遠端伺服器找到資源並使用HTTP響應返回該資源,值為200的HTTP響應狀態表示一個正確的響應。
(4),此時,Web伺服器提供資源服務,客戶端開始下載資源。
請求返回後,便進入了我們關注的前端模組
簡單來說,瀏覽器會解析HTML生成DOM Tree,其次會根據CSS生成CSS Rule Tree,而javascript又可以根據DOM API操作DOM
28、ajax過程
(1)建立XMLHttpRequest物件,也就是建立一個非同步呼叫物件。
(2)建立一個新的HTTP請求,並指定該HTTP請求的方法、URL及驗證資訊。
(3)設定響應HTTP請求狀態變化的函式。
(4)傳送HTTP請求。
(5)獲取非同步呼叫返回的資料。
(6)使用JavaScript和DOM實現區域性重新整理。
29、盒模型
1、複製
/* 紅色區域的大小是多少?200 - 20*2 - 20*2 = 120 */
。box {
width: 200px;
height: 200px;
padding: 20px;
margin: 20px;
background: red;
border: 20px solid black;
box-sizing: border-box;
}
/* 標準模型 */
box-sizing:content-box;
/*IE模型*/
box-sizing:border-box;
2、如何實現一個最大的正方形
用 padding-bottom 撐開邊距
section {
width:100%;
padding-bottom: 100%;
background: #333;
}
3、水平垂直居中
兩欄佈局,左邊固定,右邊自適應,左右不重疊
flex做自適應佈局很容易,但相容性不好,這裡統一不用flex佈局
。left{
float:left;
width:300px;
margin-right: 10px;
background: red;
}
。right{
overflow: hidden; /* 建立BFC */
background: yellow;
}
4、畫三角形
複製
。shape {
width: 0;
height: 0;
border-left: 50px solid transparent;
border-right: 50px solid transparent;
border-top: 50px solid transparent;
border-bottom: 50px solid blue;
background: white;
}
30、BFC理解(Formatting context(格式化上下文) 是 W3C CSS2。1 規範中的一個概念)
BFC觸發條件:
根元素,即html
float的值不為none(預設)
position的值為absolute或fixed
overflow的值不為visible(預設)
display的值為inline-block、table-cell、table-caption
BFC特性:
內部的Box會在垂直方向上一個接一個放置。
B ox垂直方向的距離由margin決定,屬於同一個BFC的兩個相鄰Box的margin會發生重疊。
每個元素的margin box 的左邊,與包含塊border box的左邊相接觸。
BFC的區域不會與float box重疊。(可用於清浮動)
BFC是頁面上的一個隔離的獨立容器,容器裡面的子元素不會影響到外面的元素。
計算BFC的高度時,浮動元素也會參與計算。
Vue實現吸頂效果
原理:首先我們獲取容器的滾動距離scrollTop ,然後我們再用這個滾動距離和咱們需要吸頂的容器距離頂部的距離做一個比較
https://blog。csdn。net/zbwroom/article/details/81911909
上一篇:在月球上,過地球日子
推薦文章
- 涉嫌“傳銷、非法集資”?認養一頭牛的泡沫,終於被戳破了!
”近幾年,“認養一頭牛”憑藉別具心裁的廣告語和營銷模式成功出圈,成為頻繁活躍在消費者視野的新晉“網紅”奶製品企業...
- 東航迴應“C919計劃2月28日商業首飛”:確有計劃,尚未完全確定
相關閱讀:《國產大飛機 C919 首航航班曝光:2 月 28 日北京上海往返》《總訂單超 1200 架,C919 國產客機預計今年 3 月開始載客》...
- 評估機構未經法定程式選定,補償決定合法嗎?
xx區相關部門對涉案房屋進行評估,並於2019年3月11日作出《關於對羅x國有土地上房屋徵收補償的決定書》,且予以送達...