1幸海、axios和ajax有啥區(qū)別蜜自?
axios是封裝后的ajax,ajax不符合現(xiàn)在mvvm的架構(gòu)司澎,所以對(duì)其進(jìn)行了封裝欺缘。ajax的缺點(diǎn):(1)基于原生的XHR開發(fā),XHR本身的架構(gòu)不清晰挤安;
(2)JQuery整個(gè)項(xiàng)目太大谚殊,單純使用ajax卻要引入整個(gè)JQuery非常的不合理;
(3)不符合關(guān)注分離(Separation of Concerns)的原則蛤铜;
(4)配置和調(diào)用方式非衬坌酰混亂丛肢,而且基于事件的異步模型不友好。
axios的優(yōu)點(diǎn):
(1)從瀏覽器中創(chuàng)建 XMLHttpRequest剿干;
(2)支持 Promise API蜂怎;
(3)從 node.js 創(chuàng)建 http 請(qǐng)求;
(4)轉(zhuǎn)換請(qǐng)求和響應(yīng)數(shù)據(jù)置尔;
(5)自動(dòng)轉(zhuǎn)換JSON數(shù)據(jù)杠步。
2、axios怎么實(shí)現(xiàn)并發(fā)請(qǐng)求榜轿?
axios.all 在all里面?zhèn)魅霐?shù)組幽歼,在數(shù)組里寫上想要發(fā)送的請(qǐng)求 然后.then拿到最終的請(qǐng)求結(jié)果
3、typeof 和 instanceof區(qū)別
typeof和instanceof的區(qū)別是:typeof的返回值是一個(gè)字符串谬盐,用來說明變量的數(shù)據(jù)類型试躏;instanceof的返回值是布爾值,用于判斷一個(gè)變量是否屬于某個(gè)對(duì)象的實(shí)例设褐。
typeof 一般只能返回如下幾個(gè)結(jié)果: number, boolean, string, function, object, undefined颠蕴,symbol
對(duì)于Array,Null等特殊對(duì)象使用typeof一律返回object,這是typeof的局限性助析。
4犀被、symbol是什么?
symbol 是ES6 引入了一種新的基本數(shù)據(jù)類型外冀,表示獨(dú)一無二的值寡键,是 JavaScript 語言的第七種數(shù)據(jù)類型
Symbol數(shù)據(jù)類型的特點(diǎn)
1、Symbol的值是唯一的雪隧,用來解決命名沖突的問題
2西轩、Symbol值不能與其他數(shù)據(jù)類型進(jìn)行運(yùn)算
3、Symbol定義得的對(duì)象的屬性不能使用for…in 循環(huán)遍歷脑沿,但是可以使用Reflect.ownKeys來獲取對(duì)象 的所有鍵名
5藕畔、怎么減少項(xiàng)目打包后的體積
1.壓縮圖片
2.路由懶加載
3.移除源代碼,替換壓縮后的源碼
4.修改babel.config.js配置文件
5.組件庄拇、api按需引入
6.靜態(tài)資源文件的托管(CDN)
6注服、webpack打包原理?
webpack打包原理是將根據(jù)文件間的依賴關(guān)系對(duì)其進(jìn)行靜態(tài)分析措近,然后將這些模塊按指定規(guī)則生成靜態(tài)資源溶弟,當(dāng) webpack處理程序時(shí),會(huì)遞歸地構(gòu)建一個(gè)依賴關(guān)系圖瞭郑,其中包含應(yīng)用程序需要的每個(gè)模塊辜御,然后將所所有這些模塊打包成bundle。
webpack只是一個(gè)打包模塊的機(jī)制屈张,只是把依賴的模塊轉(zhuǎn)化成可以代表這些包的靜態(tài)文件擒权。并不是什么commonjs或者amd之類的模塊化規(guī)范苇本。webpack就是識(shí)別你的入口文件。識(shí)別你的模塊依賴菜拓,來打包你的代碼瓣窄。
至于你的代碼使用的是commonjs還是amd或者es6的import。webpack都會(huì)對(duì)其進(jìn)行分析纳鼎。來獲取代碼的依賴俺夕。
webpack做的就是分析代碼。轉(zhuǎn)換代碼贱鄙,編譯代碼劝贸,輸出代碼。webpack本身是一個(gè)node的模塊逗宁,所以webpack.config.js是以commonjs形式書寫的(node中的模塊化是commonjs規(guī)范的)
webpack中每個(gè)模塊有一個(gè)唯一的id映九,是從0開始遞增的。整個(gè)打包后的bundle.js是一個(gè)匿名函數(shù)自執(zhí)行瞎颗。參數(shù)則為一個(gè)數(shù)組件甥。數(shù)組的每一項(xiàng)都為個(gè)function。function的內(nèi)容則為每個(gè)模塊的內(nèi)容哼拔,并按照require的順序排列引有。
7、如果項(xiàng)目打包后html文件打開是空白頁面倦逐,一般是啥問題譬正,咋解決?
1檬姥、關(guān)掉router.js中的哈希模式 mode:hash
2曾我、vue.config.js里的publicPatrh的/改成./
8、用css實(shí)現(xiàn)一個(gè)三角形健民?
div{
width:0;
height:0;
border:10px solid transparent;
border-top:10px solid pink;
}
9抒巢、js獲取原型的四種方法
基礎(chǔ)代碼:
function R(){
}
let obj=new R();
//第一種:
obj.__proto__
//第二種:
R.prototype
//第三種:
obj.constuctor.prototype
//第四種:
Object.getPrototypeOf(obj)
10、如何將字符串轉(zhuǎn)化為數(shù)字荞雏?
1虐秦、使用 Number() 方法平酿,前提是所包含的字符串不包含不合法字符凤优。
2、用 parseInt() 方法蜈彼,parseInt() 函數(shù)可解析一個(gè)字符串筑辨,并返回一個(gè)整數(shù)。還可以設(shè)置要解析的數(shù)字的基數(shù)幸逆。當(dāng)基數(shù)的值為 0棍辕,或沒有設(shè)置該參數(shù)時(shí)暮现,parseInt() 會(huì)根據(jù) string 來判斷數(shù)字的基數(shù)。
3楚昭、使用 parseFloat() 方法栖袋,該函數(shù)解析一個(gè)字符串參數(shù)并返回一個(gè)浮點(diǎn)數(shù)。
4抚太、使用 + 操作符的隱式轉(zhuǎn)換塘幅。 // if(+"123"<100)
5、使用 - * /等隱式轉(zhuǎn)換尿贫。 // '123'-0电媳;