1.怎么設(shè)置12px一下的字體
使用transform:scale(0.8);
2.css的盒子模型,用哪個屬性是切換盒模型的
box-sizing:content-box|border-box
3.rem,em,px,vw,vh單位的區(qū)別?
rem相對于html的font-size:改變而改變,em相對于父級容器的font-size而改變,vw相對與屏幕的寬度1%
4.Vue中有時(shí)改變了值但是沒有渲染怎么解決?
vue.$set(obj,propo,val);//第一個參數(shù):修改的對象,第二個參數(shù):想改的屬性,第三個參數(shù),修改的值
5.vue中v-for 的key一般用什么值,有什么用處?
一般使用index當(dāng)作key的值,但是有時(shí)使用index會影響渲染效率,key的作用主要是為了高效的更新虛擬DOM
6.es6中你用的最多的有哪些?
模板字符串,箭頭函數(shù),擴(kuò)展運(yùn)算符,塊級作用域,promise,模塊import,export,解構(gòu)賦值
7.js中的數(shù)據(jù)類型,怎么判斷是什么類型的 ?
字符串用typeof,數(shù)組用intranceof(),判斷構(gòu)造函數(shù)是否在實(shí)例的prototype上
8.前端的頁面優(yōu)化?
1.減少http請求
2.壓縮js,css
- 減少dom操作
9.事件防抖節(jié)流?
防抖:
給一個定時(shí)器,當(dāng)定時(shí)器結(jié)束時(shí)執(zhí)行邏輯代碼,并清除定時(shí)器,當(dāng)定時(shí)器沒有結(jié)束,再次觸發(fā)后清楚定時(shí)器,并重新開始定時(shí)器
const on = Vue.prototype.$on
// 防抖處理
Vue.prototype.$on = function (event, func) {
let timer
let newFunc = func
if (event === 'click') {
newFunc = function () {
clearTimeout(timer)
timer = setTimeout(function () {
func.apply(this, arguments)
}, 500)
}
}
on.call(this, event, newFunc)
}
節(jié)流:
定時(shí)器:
const on = Vue.prototype.$on
// 節(jié)流
Vue.prototype.$on = function (event, func) {
let previous = 0
let newFunc = func
if (event === 'click') {
newFunc = function () {
const now = new Date().getTime()
if (previous + 1000 <= now) {
func.apply(this, arguments)
previous = now
}
}
}
on.call(this, event, newFunc)
}
10.事件委托與vue中怎么實(shí)現(xiàn)事件委托
在父級中綁定事件在事件中使用e.target.nodeName
11.html5離線存儲有幾種方式?他們有什么區(qū)別?
localStorage.sessionStorage,cookies,離線儲存manifest,cache那些文件需要緩存
12.移動端時(shí)經(jīng)常會碰到設(shè)配問題,你怎么解決不懂屏幕的適配問題
動態(tài)的設(shè)置html的font-size值,在頁面中除了文字大小其他的用rem,設(shè)置視口與設(shè)備的寬度相同
13.v-if與v-show的區(qū)別?
v-if一般是作為條件渲染時(shí)使用,當(dāng)有不同的條件顯示不同的頁面時(shí)可以使用,不顯示的東西在dom中找不到
而v-show只是控制dom的display變?yōu)閚one
14.http狀態(tài)碼?200,300,400,500
200:成功
301:永久重定向,表示請求的資源被分配了新的URL,之后應(yīng)使用更改的URL
302:臨時(shí)行重定向,表示請求的資源被分配了新的url,本次訪問使用新的URL
303:表示請求的資源被分配了新的URL,應(yīng)使用GET方法定向獲取資源
304:表示客戶端發(fā)送附帶條件(是指采用GET方法的請求報(bào)文中包含if-Match、If-Modified-Since、If-None-Match、If-Range、If-Unmodified-Since中任一首部)的請求時(shí),服務(wù)器端允許訪問資源,但是請求為滿足條件的情況下返回改狀態(tài)碼;
307:與303有著相同的含義,307會遵照瀏覽器標(biāo)準(zhǔn)不會從POST變成GET;(不同瀏覽器可能會出現(xiàn)不同的情況);
400:請求報(bào)文中存在語法錯誤
401:未經(jīng)許可,需要通過http認(rèn)證
403:服務(wù)器拒絕該次訪問
404:表示服務(wù)器上無法找到請求的資源
500:表示服務(wù)器在執(zhí)行請求時(shí)發(fā)生了錯誤,也有可能是web應(yīng)用存在的bug或某些臨時(shí)的錯誤時(shí);
503:表示服務(wù)器暫時(shí)處于超負(fù)載或正在進(jìn)行停機(jī)維護(hù),無法處理請求;
15.webpack中的plugins與loader的區(qū)別是什么?
loader :loader 用于對模塊的源代碼進(jìn)行轉(zhuǎn)換。loader 可以使你在 import 或"加載"模塊時(shí)預(yù)處理文件。因此,loader 類似于其他構(gòu)建工具中“任務(wù)(task)”,并提供了處理前端構(gòu)建步驟的強(qiáng)大方法。loader 可以將文件從不同的語言(如 TypeScript)轉(zhuǎn)換為 JavaScript,或?qū)?nèi)聯(lián)圖像轉(zhuǎn)換為 data URL。loader 甚至允許你直接在 JavaScript 模塊中 import CSS文件!
總結(jié)區(qū)別
1 .文檔定義loader為在模塊加載時(shí)的預(yù)處理文件,故loader運(yùn)行在打包文件之前。
2 . plugins的定義為處理loader無法處理的事物,例如loader只能在打包之前運(yùn)行,但是plugins在整個編譯周期都起作用。
16.uniapp中的.nvue 與.vue區(qū)別
在App端,如果使用vue頁面,則使用webview渲染;如果使用nvue頁面(native vue的縮寫),則使用原生渲染。一個App中可以同時(shí)使用兩種頁面
18.vue中數(shù)據(jù)綁定的原理是什么?怎么實(shí)現(xiàn)的數(shù)據(jù)渲染
VUE實(shí)現(xiàn)雙向數(shù)據(jù)綁定的原理就是利用了 Object.defineProperty() 這個方法重新定義了對象獲取屬性值(get)和設(shè)置屬性值(set)的操作來實(shí)現(xiàn)的。
19.瀏覽器輸入url按下回車后會怎么樣?
20.什么是閉包,閉包會出現(xiàn)什么問題?怎么手動清除內(nèi)存泄露
閉包是指有權(quán)訪問另一個函數(shù)作用域中變量的函數(shù),創(chuàng)建閉包的最常見的方式就是在一個函數(shù)內(nèi)創(chuàng)建另一個函數(shù),通過另一個函數(shù)訪問這個函數(shù)的局部變量,利用閉包可以突破作用鏈域,將函數(shù)內(nèi)部的變量和方法傳遞到外部。
21.git你對git了解的多嗎?一般都是怎么使用的
git clone
git pull
git push
git branch //查看分支
git branch name 創(chuàng)建分支
git checkout -b name 創(chuàng)建并切換分支
22.Vue加載時(shí)會出現(xiàn)短暫的白屏怎么解決?
1、bundle太大,沒有壓縮混淆。
2、bundle沒有使用異步模塊加載。
3、bundle沒有拆分css樣式或者base64了圖片。
解決方法:1、路由懶加載
import ShowBlogs from '@/components/ShowBlogs'
routes:[ path: 'Blogs', name: 'ShowBlogs', component: ShowBlogs ]
//改為
routes:[
path: 'Blogs',
name: 'ShowBlogs',
component: () => import('./components/ShowBlogs.vue')
]