3.9日面試的第一家比較水,問的很簡(jiǎn)單,可能是我比較菜的原因
1:了解w3c嗎?
web標(biāo)準(zhǔn)主要分為結(jié)構(gòu)表現(xiàn)行為,w3c對(duì)web標(biāo)準(zhǔn)提出了規(guī)劃范要求即代碼規(guī)范
2:垂直居中
設(shè)置子元素父元素行高一樣 line-height
子元素設(shè)置為行內(nèi)塊,添加vertical-align:middle
彈性盒子:父元素設(shè)置display:flex? 子元素:align-self:center
3:ES6新特性
let和const(let 命令 用于聲明局部變量,let 和 const 的塊級(jí)作用域,有暫時(shí)性死區(qū),不會(huì)變量提升,在預(yù)編譯和進(jìn)行之間不允許訪問)
解構(gòu)賦值(ES6允許按照一定的模式,從數(shù)組或?qū)ο笾腥〕鲋担瑢?duì)變量進(jìn)行賦值。?如果解構(gòu)不成功,變量的值就等于undefined。)
模板字符串(模板字符串指是增強(qiáng)版的字符串,用反引號(hào)(`)標(biāo)識(shí)。)
箭頭函數(shù)
symbol、set、map
數(shù)組方法:fill,用途: 用于填充數(shù)組對(duì)象? Array.from,用途: 將偽數(shù)組轉(zhuǎn)換為真數(shù)組,
4:用過哪些修飾符?
.lazy(改變事件后觸發(fā),光標(biāo)離開input框的時(shí)候,值才會(huì)發(fā)生改變)
.number(將輸出的字符串轉(zhuǎn)為number類型).trim(自動(dòng)過濾用戶輸入的首位空格)
事件修飾符:.stop.prevent(防止執(zhí)行預(yù)設(shè)行為)
.capture(添加事件偵聽器時(shí),使用事件捕獲模式,誰有改事件修飾符就觸發(fā)誰)
.once(只執(zhí)行一次)
.self(只觸發(fā)自己范圍內(nèi)的時(shí)間,不包括子元素)
5:vue路由嵌套
配置完父路由之后添加子路由
將子路由放在父路由需要映射的位置,示例需要引入的頁面
6:解釋一下promise?
promise:解決回調(diào)地獄,異步問題,一般和ajax一起使用
promise有三種狀態(tài):pending,resolved,rejected
promise對(duì)象特點(diǎn):promise對(duì)象狀態(tài)一旦發(fā)生改變就不可逆,
promise有兩個(gè)操作方法:
.then()成功后執(zhí)行的方法,參數(shù)是匿名函數(shù),參數(shù)可以有一個(gè)也可以有兩個(gè),有一個(gè)參數(shù)時(shí),函數(shù)表示成功后執(zhí)行,有兩個(gè)時(shí),第二個(gè)表示失敗后執(zhí)行,
.catch()失敗后執(zhí)行
7:vuex的組成
1)state
state是存儲(chǔ)的單一狀態(tài),是存儲(chǔ)的基本數(shù)據(jù)。
2)Getters
getters是store的計(jì)算屬性,對(duì)state的加工,是派生出來的數(shù)據(jù)。就像computed計(jì)算屬性一樣,getter返回的值會(huì)根據(jù)它的依賴被緩存起來,且只有當(dāng)它的依賴值發(fā)生改變才會(huì)被重新計(jì)算。
3)Mutations
mutations提交更改數(shù)據(jù),使用store.commit方法更改state存儲(chǔ)的狀態(tài)。(mutations同步函數(shù))
4)Actions
actions像一個(gè)裝飾器,提交mutation,而不是直接變更狀態(tài)。(actions可以包含任何異步操作)
5)Module
Module是store分割的模塊,每個(gè)模塊擁有自己的state、getters、mutations、actions。
6)輔助函數(shù)
Vuex提供了mapState、MapGetters、MapActions、mapMutations等輔助函數(shù)給開發(fā)在vm中處理store。
8:token的封裝
1:因?yàn)橐话愕卿浟酥蠖紩?huì)放到localstorage里面去,在每次請(qǐng)求的時(shí)候封裝這個(gè)方法去取一遍,把localstorage取出來,寫一個(gè)把token放到header里面的一行代碼,
2:登錄成功之后,服務(wù)端會(huì)返回一個(gè)token(該token是一個(gè)唯一標(biāo)識(shí)用戶身份的一個(gè)key)之后我們將token存在本地的cookie里面,這樣下次在打開頁面或者刷新頁面的時(shí)候就能記住用戶登錄狀態(tài),不用再去登錄頁面重新登陸了。
用axios的話直接使用請(qǐng)求攔截
9:vue2中不建議子組件修改父組件中的值,有時(shí)候又不得不這樣做,該怎么去實(shí)現(xiàn)
1:修飾符解決(.sync)
在有些情況下,我們可能需要對(duì)一個(gè) prop 進(jìn)行“雙向綁定”。不幸的是,真正的雙向綁定會(huì)帶來維護(hù)上的問題,因?yàn)樽咏M件可以變更父組件,且在父組件和子組件兩側(cè)都沒有明顯的變更來源。
注意帶有?.sync?修飾符的?v-bind?不能和表達(dá)式一起使用 (例如?v-bind:title.sync=”doc.title + ‘!’”?是無效的)。取而代之的是,你只能提供你想要綁定的 property 名,類似?v-model。
當(dāng)我們用一個(gè)對(duì)象同時(shí)設(shè)置多個(gè) prop 的時(shí)候,也可以將這個(gè)?.sync?修飾符和?v-bind?配合使用:
這樣會(huì)把?doc?對(duì)象中的每一個(gè) property (如?title) 都作為一個(gè)獨(dú)立的 prop 傳進(jìn)去,然后各自添加用于更新的?v-on?監(jiān)聽器。
將?v-bind.sync?用在一個(gè)字面量的對(duì)象上,例如?v-bind.sync=”{ title: doc.title }”,是無法正常工作的,因?yàn)樵诮馕鲆粋€(gè)像這樣的復(fù)雜表達(dá)式的時(shí)候,有很多邊緣情況需要考慮。
2:v-model
10:vue自定義指令
【全局指令】
Vue.filter()
【局部指令】
也可以注冊(cè)局部指令,組件或Vue構(gòu)造函數(shù)中接受一個(gè) directives 的選項(xiàng),然后可以在模板中任何元素上使用新的 v-focus 屬性
11:vue生命周期
beforeCreate(創(chuàng)建前)vue實(shí)例的掛載元素$el和數(shù)據(jù)對(duì)象data都是undefined,還未初始化(創(chuàng)建了掛載元素跟數(shù)據(jù)對(duì)象還未初始化)
created(創(chuàng)建后)完成了data數(shù)據(jù)初始化,el還未初始化(數(shù)據(jù)初始化,掛載元素還未初始化)
beforeMount(載入前)vue實(shí)例的$el和data都初始化了,已經(jīng)生成了html,此時(shí)還沒有掛載到頁面上。(掛數(shù)據(jù)初始化完后并且生成了html,但是還沒有掛在到頁面)
mounted(載入后)在el新被創(chuàng)建的vm.$el替換,并掛載到實(shí)例上去之后調(diào)用。實(shí)例已經(jīng)完成了以下的配置:用上面編譯好的html內(nèi)容替換el屬性指向dom元素。完成模板中html渲染到html頁面中,此過程中進(jìn)行ajax交互。(用編譯完后的html內(nèi)容替換el屬性,進(jìn)行ajax的交互,進(jìn)行頁面的渲染)
beforeUpdate(更新前)在數(shù)據(jù)更新之前調(diào)用,發(fā)生在虛擬dom重新渲染和打補(bǔ)丁之前調(diào)用??梢栽巽^子中進(jìn)一步地更新狀態(tài),不會(huì)觸發(fā)附加的重渲染過程(進(jìn)一步的更新狀態(tài),不會(huì)觸發(fā)重渲染)
Update(更新后)由于數(shù)據(jù)更改導(dǎo)致的虛擬dom重新渲染和打補(bǔ)丁之后調(diào)用。調(diào)用時(shí),組件dom已經(jīng)更新,所以可以執(zhí)行依賴于dom的操作。然而在大多數(shù)情況下,應(yīng)該避免在此期間更改狀態(tài),因?yàn)檫@可能會(huì)導(dǎo)致更新無限循環(huán)。該鉤子在服務(wù)器端渲染期間不被調(diào)用。(由于數(shù)據(jù)的更改導(dǎo)致需要重新調(diào)用,因?yàn)檎{(diào)用時(shí)dom已經(jīng)進(jìn)行更新,所有要執(zhí)行依賴于dom的操作,但是大多情況下應(yīng)該避免此時(shí)更新狀態(tài)。因?yàn)榭赡軙?huì)導(dǎo)致更新的無限循環(huán))
beforeDestroy(銷毀前)在實(shí)例銷毀之前調(diào)用。實(shí)例仍然完全可用
dastory(銷毀后)在實(shí)例銷毀之后調(diào)用。調(diào)用后,所有的事件監(jiān)聽器會(huì)被移除,所有的子實(shí)例也會(huì)被銷毀。該鉤子在服務(wù)器端渲期間不被調(diào)用。(在實(shí)例銷毀之前調(diào)用,并且所有的事件監(jiān)聽器都被移除子實(shí)例全部銷毀。)
講一下vue聲明周期,有用過update嗎?
這道題沒有回答到點(diǎn)上