學(xué)習(xí)重點(diǎn)
學(xué)習(xí)資源
前端知識(shí)架構(gòu)
題目
apply,call,bind 的區(qū)別及用法
apply 接收的是數(shù)組奸鸯,并會(huì)立即執(zhí)行
call 接收的是用逗號(hào)隔開(kāi)的參數(shù)辙谜,并會(huì)立即執(zhí)行
bind 接收的是用逗號(hào)隔開(kāi)的參數(shù)鉴扫,但是不會(huì)立即執(zhí)行烦秩,而是返回一個(gè)新的函數(shù)
Http的狀態(tài)碼以及意義
1開(kāi)頭 代表請(qǐng)求已被接受狞贱,需要繼續(xù)處理
1)狀態(tài)碼100 表示服務(wù)器已接收請(qǐng)求頭刻获,正在等待接下來(lái)的請(qǐng)求,或者如果請(qǐng)求已經(jīng)完成瞎嬉。
2)狀態(tài)碼101 表示服務(wù)器已理解客戶端請(qǐng)求蝎毡,通知客戶端采用不同的協(xié)議來(lái)完成這個(gè)請(qǐng)求。
3)狀態(tài)碼102 表示服務(wù)器已經(jīng)收到并正在處理請(qǐng)求氧枣,但無(wú)響應(yīng)可用沐兵。
2開(kāi)頭 (請(qǐng)求成功)表示成功處理了請(qǐng)求的狀態(tài)代碼
1)狀態(tài)碼200表示響應(yīng)成功
2)狀態(tài)碼202表示接受請(qǐng)求
3)狀態(tài)碼204表示請(qǐng)求成功但無(wú)資源返回
3開(kāi)頭 (請(qǐng)求被重定向)表示要完成請(qǐng)求,需要進(jìn)一步操作便监。 通常扎谎,這些狀態(tài)代碼用來(lái)重定向。
1)狀態(tài)碼301表示永久性重定向烧董,資源URI已更新
2)狀態(tài)碼302表示臨時(shí)性重定向毁靶,本次使用新URI
3)狀態(tài)碼304表示原來(lái)緩存的文檔可以繼續(xù)使用
4開(kāi)頭 (請(qǐng)求錯(cuò)誤)這些狀態(tài)代碼表示請(qǐng)求可能出錯(cuò),妨礙了服務(wù)器的處理解藻。
1)狀態(tài)碼400表示請(qǐng)求錯(cuò)誤老充,請(qǐng)求報(bào)文中存在語(yǔ)法錯(cuò)誤葡盗,URL 可能拼寫錯(cuò)誤
2)狀態(tài)碼403表示禁止請(qǐng)求螟左,請(qǐng)求被服務(wù)器拒絕
3)狀態(tài)碼404表示無(wú)資源啡浊,服務(wù)器上無(wú)法找到請(qǐng)求的資源
vue的生命周期
beforeCreate(創(chuàng)建前) 在數(shù)據(jù)觀測(cè)和初始化事件還未開(kāi)始
created(創(chuàng)建后)完成數(shù)據(jù)觀測(cè),屬性和方法的運(yùn)算胶背,初始化事件巷嚣,$sel屬性還沒(méi)有顯示出來(lái)
beforeMount(載入前)在掛載開(kāi)始之前被調(diào)用,相關(guān)的render函數(shù)首次被調(diào)用钳吟,實(shí)列已完成以下的配置廷粒,編譯模板,吧data里面的數(shù)據(jù)和模板生成html红且,注意此時(shí)還沒(méi)有掛載html到頁(yè)面上坝茎。
mounted(載入后)在el被新創(chuàng)建的vm.$el替換,并掛載到實(shí)列上去之后調(diào)用暇番,實(shí)列已完成以下配置嗤放,用上面編譯好的html內(nèi)容替換el屬性指向的DOM對(duì)象,完成模板中的html渲染到html頁(yè)面中壁酬,此過(guò)程中進(jìn)行ajax交互
beforeUpdate(更新前)在數(shù)據(jù)更新之前調(diào)用次酌,發(fā)生在虛擬DOM重新渲染和打補(bǔ)丁之前可以在該鉤子中進(jìn)一步的更改狀態(tài),不會(huì)觸發(fā)附加的重渲染過(guò)程
updated(更新后)在由于數(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)致更新無(wú)限循環(huán)颜武,該鉤子在服務(wù)器端渲染期間不被調(diào)用贫母。
beforeDestroy(銷毀前)在實(shí)列銷毀之后調(diào)用,實(shí)列任然完全可用
destroyed(銷毀后)在實(shí)列銷毀之后調(diào)用盒刚,調(diào)用后腺劣,所有的事件監(jiān)聽(tīng)器會(huì)被移除,所有的子實(shí)列也會(huì)被銷毀因块,該鉤子在服務(wù)端渲染期間不被掉用橘原。
什么是vue的生命周期
Vue實(shí)列從創(chuàng)建到銷毀的過(guò)程,就是生命周期涡上,從開(kāi)始創(chuàng)建趾断,初始化數(shù)據(jù),編譯模板吩愧,掛載Dom—>渲染芋酌,更新—渲染,銷毀等一系列過(guò)程雁佳,稱之為Vue的生命周期脐帝。
Vue生命周期的作用是什么
他的生命周期中有多個(gè)事件鉤子同云,讓我們?cè)诳刂普麄€(gè)Vue實(shí)列的過(guò)程時(shí)更容易形成好的邏輯
vue生命周期總共有幾個(gè)階段
他可以分為8個(gè)階段,創(chuàng)建前后堵腹,載入前后炸站,更新前后,銷毀前后疚顷,
第一次頁(yè)面加載會(huì)觸發(fā)那幾個(gè)鉤子
會(huì)觸發(fā)下面這幾個(gè)beforeCreate旱易,created,beforeMount腿堤,mounted
DOM渲染在那個(gè)周期中就已經(jīng)完成
DOM渲染在mounted中就已經(jīng)完成了
父組件與子組件傳值
父組件傳給子組件:子組件通過(guò)props方法接受數(shù)據(jù)
子組件傳給父組件:$emit方法傳遞參數(shù)
非父子組件間的數(shù)據(jù)傳遞阀坏,兄弟組件傳值
eventBus,就是創(chuàng)建一個(gè)事件中心笆檀,相當(dāng)于中轉(zhuǎn)站全释,可以用它來(lái)傳遞事件和接受事件,項(xiàng)目比較小時(shí)误债,用這個(gè)比較合適浸船。
Vue的路由實(shí)現(xiàn),hash模式寝蹈,和history模式
hash模式:在瀏覽器中符號(hào)#李命,#以及#后面的字符稱之為hash,用window.location.hash讀取箫老,特點(diǎn)封字,hash雖然在URL中,但不被包含在HTTP請(qǐng)求中耍鬓,用來(lái)指導(dǎo)瀏覽器動(dòng)作阔籽,對(duì)服務(wù)端安全無(wú)用,hash不會(huì)重加載頁(yè)面
hash模式下牲蜀,僅 hash符號(hào)之前的內(nèi)容會(huì)被包含在請(qǐng)求中笆制,如http://www.xxx.com,因此對(duì)于后端來(lái)說(shuō)涣达,即使沒(méi)有做到對(duì)路由的全覆蓋在辆,也不會(huì)返回404錯(cuò)誤。
history模式: history采用HTML5的新特性;且提供了兩個(gè)新方法: pushState () ,
replaceState ()可以對(duì)瀏覽器歷史記錄棧進(jìn)行修改度苔,以及popState事件的監(jiān)聽(tīng)到狀態(tài)變更匆篓。history模式下,前端的URL必須和實(shí)際向后端發(fā)起請(qǐng)求的URL一致寇窑,如
http://www.xxx.com/items/id鸦概。后端如果缺少對(duì)/items/id 的路由處理,將返回404錯(cuò)誤甩骏。
vue路由的鉤子函數(shù)
首頁(yè)可以控制導(dǎo)航跳轉(zhuǎn)窗市,beforeEach先慷,afterEach等,一般用于頁(yè)面title的修改谨设。一些需要登錄才能調(diào)整頁(yè)面的重定向功能。
beforeEach主要有3個(gè)參數(shù)to,from,next:
to: route即將進(jìn)入的目標(biāo)路由對(duì)象缎浇,
from: route當(dāng)前導(dǎo)航正要離開(kāi)的路由
next: function一定要調(diào)用該方法resolve這個(gè)鉤子扎拣。執(zhí)行效果依賴next方法的調(diào)用參數(shù)∷囟澹可以控制網(wǎng)頁(yè)的跳轉(zhuǎn)二蓝。
vue如何自定義一個(gè)過(guò)濾器?
<divid="app"><inputtype="text"v-model="msg"/>{{msgl capitalize }}</div>
var vm=new vue({el : "#app" ,data: {msg : ''},filters: {capitalize: function (value) {if ( !value) return ''value = value.tostring()return value.charAt(0).toUppercase() + value.slice(1)}}})
全局定義過(guò)濾器
vue.filter( 'capitalize', function (value) {if ( !value) return ''value = value.tostring()return value.charAt(0).touppercase() + value.slice(1)})
1.css只在當(dāng)前組件起作用
答:在style標(biāo)簽中寫入scoped即可例如:<style scoped> </style>
2.v-if 和v-show區(qū)別
答: v-if按照條件是否渲染,v-show是display的block或none;
3.$route和$router的區(qū)別
答: $route是"路由信息對(duì)象”,包括path指厌,params刊愚,hash,query踩验,fullPath鸥诽,matched,name等路由信息參數(shù)。而$router是"路由實(shí)例"對(duì)象包括了路由的跳轉(zhuǎn)方法箕憾,鉤子函數(shù)等牡借。
4.vue.js的兩個(gè)核心是什么?
答:數(shù)據(jù)驅(qū)動(dòng)、組件系統(tǒng)
5.vue幾種常用的指令
答: v-for 袭异、 v-if 钠龙、 v-bind、v-on御铃、v-show碴里、v-else
9.什么是vue的計(jì)算屬性?
答:在模板中放入太多的邏輯會(huì)讓模板過(guò)重且難以維護(hù),在需要對(duì)數(shù)據(jù)進(jìn)行復(fù)雜處理上真,且可能多次使用的情況下咬腋,盡量采取計(jì)算屬性的方式。好處:①使得數(shù)據(jù)處理結(jié)構(gòu)清晰;②依賴于數(shù)據(jù)睡互,數(shù)據(jù)更新帝火,處理結(jié)果自動(dòng)更新;③計(jì)算屬性內(nèi)部this指向vm實(shí)例;④在template調(diào)用時(shí),直接寫計(jì)算屬性名即可;⑤常用的是getter方法湃缎,獲取數(shù)據(jù)犀填,也可以使用set方法改變數(shù)據(jù);⑥相較于methods,不管依賴的數(shù)據(jù)變不變,methods都會(huì)重新計(jì)算嗓违,但是依賴數(shù)據(jù)不變的時(shí)候computed從緩存中獲取九巡,不會(huì)重新計(jì)算。
11.怎么定義vue-router的動(dòng)態(tài)路由?怎么獲取傳過(guò)來(lái)的值
答:在router目錄下的index.js文件中蹂季,對(duì)path 屬性加上/:id冕广,使用router對(duì)象的params.id 獲取疏日。
2、使用Vue的好處
vue兩大特點(diǎn):響應(yīng)式編程撒汉、組件化
vue的優(yōu)勢(shì):輕量級(jí)框架沟优、簡(jiǎn)單易學(xué)、雙向數(shù)據(jù)綁定睬辐、組件化挠阁、視圖、數(shù)據(jù)和結(jié)構(gòu)的分離溯饵、虛擬DOM侵俗、運(yùn)行速度快
什么是異步:
當(dāng)前一個(gè)任務(wù)被執(zhí)行時(shí),不會(huì)等待任務(wù)執(zhí)行完成后就去執(zhí)行下一個(gè)任務(wù)丰刊,等前一個(gè)任務(wù)執(zhí)行完成后隘谣,將去執(zhí)行其返回的回調(diào)函數(shù),這是異步操作
為什么要用異步:
js是單線程的啄巧,因此必須等前一個(gè)任務(wù)完成后寻歧,后一個(gè)任務(wù)才會(huì)被執(zhí)行。因此當(dāng)執(zhí)行一段耗時(shí)的程序時(shí)秩仆,會(huì)影響整個(gè)程序的執(zhí)行熄求,異步的方法就是為了解決這個(gè)問(wèn)題钮呀。
3.Promise
Promise是es6提出的異步編程的一種解決方案贮折。
Promise 對(duì)象有三種狀態(tài):
pending: 初始狀態(tài),既不是成功嚎朽,也不是失敗狀態(tài)逾苫。
fulfilled: 意味著操作成功完成卿城。
rejected: 意味著操作失敗。
promise的狀態(tài)只能從pending變成fulfilled铅搓,和pending變成rejected瑟押,狀態(tài)一旦改變,就不會(huì)再改變星掰,且只有異步操作的結(jié)果才能改變promise的狀態(tài)多望。