Web前端面試題

HTML5有哪些新特性诈豌?如何處理HTML5新標(biāo)簽的瀏覽器兼容問(wèn)題婆翔?如何區(qū)分HTML和HTML5姥宝?

*HTML5 現(xiàn)在已經(jīng)不是 SGML(標(biāo)準(zhǔn)通用標(biāo)記語(yǔ)言爸业,是一種定義電子文檔結(jié)構(gòu)和描述其內(nèi)容的國(guó)際標(biāo)準(zhǔn)語(yǔ)言) 的子集其骄,主要是關(guān)于圖像,位置扯旷,存儲(chǔ)拯爽,多任務(wù)等功能的增加。

*拖拽釋放(Drag and drop) API

? 語(yǔ)義化更好的內(nèi)容標(biāo)簽(header,nav,footer,aside,article,section)

? 音頻钧忽、視頻API(audio,video)

? 畫(huà)布(Canvas) API

? 地理(Geolocation) API

? 本地離線(xiàn)存儲(chǔ) localStorage 長(zhǎng)期存儲(chǔ)數(shù)據(jù)毯炮,瀏覽器關(guān)閉后數(shù)據(jù)不丟失;

? sessionStorage 的數(shù)據(jù)在瀏覽器關(guān)閉后自動(dòng)刪除

*支持HTML5新標(biāo)簽:

* IE8/IE7/IE6支持通過(guò)document.createElement方法產(chǎn)生的標(biāo)簽耸黑,

? 可以利用這一特性讓這些瀏覽器支持HTML5新標(biāo)簽桃煎,

? 瀏覽器支持新標(biāo)簽后,還需要添加標(biāo)簽?zāi)J(rèn)的樣式:

* 當(dāng)然最好的方式是直接使用成熟的框架大刊、使用最多的是html5shim框架

? <!--[if lt IE 9]>

? <script> src="http://html5shim.googlecode.com/svn/trunk/html5.js"</script>

? <![endif]-->

*如何區(qū)分: DOCTYPE聲明\新增的結(jié)構(gòu)元素\功能元素

css3中的transform有哪些屬性备禀?分別用來(lái)實(shí)現(xiàn)什么效果?

*transform 可用于內(nèi)聯(lián)(inline)元素和塊級(jí)(block)元素,它有幾個(gè)屬性值參數(shù):

translate 位移:基于 X 和 Y 坐標(biāo)重新定位元素曲尸,當(dāng)使用一個(gè)參數(shù)時(shí)表示 X 軸和 Y 軸的參數(shù)相同赋续,效果類(lèi)似 position:relative 。

scale 縮放:可以讓任一元素變大另患、變小纽乱。它使用一個(gè)或者兩個(gè)正數(shù)和負(fù)數(shù)以及小數(shù)作為參數(shù),當(dāng)使用一個(gè)參數(shù)時(shí)表示 X 軸和 Y 軸的縮放相同昆箕。

rotate 旋轉(zhuǎn):通過(guò)傳遞一個(gè)度數(shù)值來(lái)轉(zhuǎn)動(dòng)一個(gè)對(duì)象鸦列。

skew 傾斜:參數(shù)是度數(shù),當(dāng)使用一個(gè)參數(shù)時(shí)表示 X 軸和 Y 軸的參數(shù)相同鹏倘。

matrix 矩陣變換:基于 X 和 Y 坐標(biāo)重新定位元素薯嗤,它使用 6 個(gè)參數(shù)。

localStorage纤泵、sessionStorage骆姐、cookie有什么區(qū)別?

*sessionStorage用于本地存儲(chǔ)一個(gè)會(huì)話(huà)(session)中的數(shù)據(jù)捏题,這些數(shù)據(jù)只有在同一個(gè)會(huì)話(huà)中的頁(yè)面才能訪(fǎng)問(wèn)并且當(dāng)會(huì)話(huà)結(jié)束后數(shù)據(jù)也隨之銷(xiāo)毀玻褪。

因此sessionStorage不是一種持久化的本地存儲(chǔ),僅僅是會(huì)話(huà)級(jí)別的存儲(chǔ)公荧。

而localStorage用于持久化的本地存儲(chǔ)带射,除非主動(dòng)刪除數(shù)據(jù),否則數(shù)據(jù)是永遠(yuǎn)不會(huì)過(guò)期的循狰。

localstorage和cookie的區(qū)別

localStorage的概念和cookie相似窟社,區(qū)別是它是為了更大容量存儲(chǔ)設(shè)計(jì)的。

Cookie的大小是受限的绪钥,并且每次你請(qǐng)求一個(gè)新的頁(yè)面的時(shí)候Cookie都會(huì)被發(fā)送過(guò)去桥爽,這樣無(wú)形中浪費(fèi)了帶寬,另外cookie還需要指定作用域昧识,不可以跨域調(diào)用。

除此之外盗扒,localStorage擁有setItem,getItem,removeItem,clear等方法跪楞,不像cookie需要前端開(kāi)發(fā)者自己封裝setCookie,getCookie侣灶。

但是Cookie也是不可以或缺的:Cookie的作用是與服務(wù)器進(jìn)行交互甸祭,作為HTTP規(guī)范的一部分而存在,而localStorage僅僅是為了在本地“存儲(chǔ)”數(shù)據(jù)而生褥影。

什么是同源策略池户?你都知道哪些解決跨域的方法?

同源策略(Same origin policy)是一種約定,它是瀏覽器最核心也最基本的安全功能校焦,如果缺少了同源策略赊抖,則瀏覽器的正常功能可能都會(huì)受到影響。

可以說(shuō)Web是構(gòu)建在同源策略基礎(chǔ)之上的寨典,瀏覽器只是針對(duì)同源策略的一種實(shí)現(xiàn)氛雪。

當(dāng)一個(gè)瀏覽器的兩個(gè)tab頁(yè)中分別打開(kāi)來(lái) 百度和谷歌的頁(yè)面當(dāng)瀏覽器的百度tab頁(yè)執(zhí)行一個(gè)腳本的時(shí)候會(huì)檢查這個(gè)腳本是屬于哪個(gè)頁(yè)面的,即檢查是否同源耸成,只有和百度同源的腳本才會(huì)被執(zhí)行报亩。

如果非同源,那么在請(qǐng)求數(shù)據(jù)時(shí)井氢,瀏覽器會(huì)在控制臺(tái)中報(bào)一個(gè)異常弦追,提示拒絕訪(fǎng)問(wèn)。

同源

域名花竞、協(xié)議劲件、端口相同,也就是在同一個(gè)域里左胞。

JSONP的基本原理 動(dòng)態(tài)添加一個(gè)<script>標(biāo)簽寇仓,而script標(biāo)簽的src屬性是沒(méi)有跨域的限制的。

CORS(跨域資源共享)

圖像 Ping 跨域

document.domain 跨域

服務(wù)器代理

window.name 跨域

location.hash 跨域

postMessage 跨域

列舉JavaScript的基本數(shù)據(jù)類(lèi)型和引用數(shù)據(jù)類(lèi)型

Number烤宙、String 遍烦、Boolean、Null和Undefined躺枕》恚基本數(shù)據(jù)類(lèi)型是按值訪(fǎng)問(wèn)的,因?yàn)榭梢灾苯硬僮鞅4嬖谧兞恐械膶?shí)際值拐云。

引用類(lèi)型數(shù)據(jù):也就是對(duì)象類(lèi)型Object type罢猪,比如:Object 、Array 叉瘩、Function 膳帕、Data等

Vue2.0的生命周期有哪些?分別解釋其意思

1.beforeCreate

創(chuàng)建前的狀態(tài)(創(chuàng)建實(shí)例前薇缅,vue實(shí)例的屬性值為undefined)危彩。

2.created

實(shí)例創(chuàng)建完成后(data被定義了,但el屬性為undefined)泳桦。然而汤徽,掛載階段還沒(méi)開(kāi)始,$el屬性目前不可見(jiàn)灸撰。

3.beforeMount

掛鉤前(DOM渲染前)谒府,el屬性已經(jīng)拿到對(duì)應(yīng)的DOM元素拼坎。

4.mounted

掛載結(jié)束(Dom渲染完成,el屬性的Dom的數(shù)據(jù)將被渲染)完疫,對(duì)已有dom節(jié)點(diǎn)的操作可以在這期間進(jìn)行泰鸡。

5.beforeUpdate

數(shù)據(jù)變化前的調(diào)用。

6.updated

數(shù)據(jù)變化后的鉤子趋惨。

7.beforeDestroy

實(shí)例銷(xiāo)毀之前調(diào)用鸟顺。在這一步,實(shí)例仍然完全可用器虾。

8.destroyed

Vue 實(shí)例銷(xiāo)毀后調(diào)用讯嫂。調(diào)用后,Vue 實(shí)例指示的所有東西都會(huì)解綁定兆沙,所有的事件監(jiān)聽(tīng)器會(huì)被移除欧芽,所有的子實(shí)例也會(huì)被銷(xiāo)毀。

詳述組件通信

父組件傳值給子組件

1葛圃、給子組件綁定一個(gè)自定義屬性用來(lái)掛載父組件的變量

2千扔、在子組件中用props來(lái)接受自定義屬性? props:['屬性1',‘屬性2’……]

3库正、在方法中中或者模板輸出(接受的自定義屬性)即可

子組件傳值給父組件

在子組件中調(diào)用父組件的方法

1曲楚、給父組件創(chuàng)建方法

2、在子組件綁定自定義事件(v-on),在自定義事件上掛載父組件的方法名

3褥符、在子組件的方法中 調(diào)用父組件的方法

調(diào)用方式? this.$emit('自定義的事件名'龙誊,)

this.$emit(自定義的事件名,實(shí)參列表);

路由鉤子函數(shù)(導(dǎo)航守衛(wèi))

概念

導(dǎo)航發(fā)生變化時(shí),導(dǎo)航鉤子主要用來(lái)攔截導(dǎo)航喷楣,讓它完成跳轉(zhuǎn)或取消

攔截方式

全局的

beforeEach - 前置鉤子函數(shù)

參數(shù)to趟大、from、next

to:去哪里

from:從哪里

next():是否跳轉(zhuǎn)由它決定

使用場(chǎng)景 - 未登錄去下單铣焊,跳轉(zhuǎn)到登錄頁(yè)

afterEach - 后置鉤子函數(shù)

參數(shù)to逊朽、from

to:去哪里

from:從哪來(lái)

使用場(chǎng)景 - 改變?yōu)g覽器title

單個(gè)路由獨(dú)享的

beforeEnter

參數(shù)to、from曲伊、next

同beforeEach

組件級(jí)的

beforeRouteEnter - 進(jìn)入組件前

參數(shù)to叽讳、from、next

同beforeEach

使用場(chǎng)景 - 進(jìn)入這個(gè)組件前你要做什么初始化操作

beforeRouteUpdate - 組件更新或改變時(shí)

參數(shù)to坟募、from岛蚤、next

同beforeEach

使用場(chǎng)景 - 復(fù)用組件時(shí)(對(duì)于一個(gè)帶有動(dòng)態(tài)參數(shù)的路徑 /foo/:id,在 /foo/1 和 /foo/2 之間跳轉(zhuǎn)的時(shí)候)

beforeRouteLeave - 離開(kāi)組件時(shí)

參數(shù)to婿屹、from、next

同beforeEach

使用場(chǎng)景 - 清除定時(shí)器等等

v-show和v-if有什么區(qū)別推溃?及使用場(chǎng)景

v-show? 操作的是css 中display屬性 給不符合條件的數(shù)據(jù)加上display:none

v-if 不符合條件的數(shù)據(jù) 不渲染

v-show 與v-if的區(qū)別:

v-show 有更高的渲染成本 v-if有更高的切換成本

v-for和v-if的優(yōu)先級(jí)

v-for 比 v-if 具有更高的優(yōu)先級(jí)

Vue常用的指令

v-if//v-show//v-else//v-for//v-bind//v-on

Vue常用修飾符

.lazy

在默認(rèn)情況下昂利,v-model 在每次 input 事件觸發(fā)后將輸入框的值與數(shù)據(jù)進(jìn)行同步 届腐。你可以添加 lazy 修飾符,從而轉(zhuǎn)變?yōu)槭褂?change 事件進(jìn)行同步:

<!-- 在“change”時(shí)而非“input”時(shí)更新 -->

<input v-model.lazy="msg" >

.number

如果想自動(dòng)將用戶(hù)的輸入值轉(zhuǎn)為數(shù)值類(lèi)型蜂奸,可以給 v-model 添加 number 修飾符

<input v-model.number="age" type="number">

.trim

如果要自動(dòng)過(guò)濾用戶(hù)輸入的首尾空白字符犁苏,可以給 v-model 添加 trim 修飾符:

<div id='other'>

? ? ? ? <input v-model.trim='trim'>

? ? ? ? <p ref='tr'>{{trim}}</p>

? ? ? ? <button @click='getStr'>獲取</button>

</div>

事件修飾符

<!-- 阻止單擊事件繼續(xù)傳播 -->

<a v-on:click.stop="doThis"></a>

<!-- 提交事件不再重載頁(yè)面 -->

<form v-on:submit.prevent="onSubmit"></form>

<!-- 修飾符可以串聯(lián) -->

<a v-on:click.stop.prevent="doThat"></a>

<!-- 只有修飾符 -->

<form v-on:submit.prevent></form>

<!-- 添加事件監(jiān)聽(tīng)器時(shí)使用事件捕獲模式 -->

<!-- 即元素自身觸發(fā)的事件先在此處處理,然后才交由內(nèi)部元素進(jìn)行處理 -->

<div v-on:click.capture="doThis">...</div>

<!-- 只當(dāng)在 event.target 是當(dāng)前元素自身時(shí)觸發(fā)處理函數(shù) -->

<!-- 即事件不是從內(nèi)部元素觸發(fā)的 -->

<div v-on:click.self="doThat">...</div>

使用修飾符時(shí)扩所,順序很重要围详;相應(yīng)的代碼會(huì)以同樣的順序產(chǎn)生。因此祖屏,用 v-on:click.prevent.self 會(huì)阻止所有的點(diǎn)擊助赞,而 v-on:click.self.prevent 只會(huì)阻止對(duì)元素自身的點(diǎn)擊。

在監(jiān)聽(tīng)鍵盤(pán)事件時(shí)袁勺,我們經(jīng)常需要檢查常見(jiàn)的鍵值雹食。Vue 允許為 v-on 在監(jiān)聽(tīng)鍵盤(pán)事件時(shí)添加按鍵修飾符:

<!-- 只有在 `keyCode` 是 13 時(shí)調(diào)用 `vm.submit()` -->

<input v-on:keyup.13="submit">

記住所有的 keyCode 比較困難,所以 Vue 為最常用的按鍵提供了別名:

<!-- 同上 -->

<input v-on:keyup.enter="submit">

<!-- 縮寫(xiě)語(yǔ)法 -->

<input @keyup.enter="submit">

v-on可以監(jiān)聽(tīng)多個(gè)方法嗎期丰?

可以

vue中key值的作用

key的作用主要是為了高效的更新虛擬DOM群叶。另外vue中在使用相同標(biāo)簽名元素的過(guò)渡切換時(shí),也會(huì)使用到key屬性钝荡,其目的也是為了讓vue可以區(qū)分它們街立,否則vue只會(huì)替換其內(nèi)部屬性而不會(huì)觸發(fā)過(guò)渡效果。

用于管理可復(fù)用的元素 因?yàn)関ue會(huì)盡可能高效的渲染埠通,通常會(huì)復(fù)用已有元素而不是從頭渲染赎离、

需要使用key來(lái)給每個(gè)節(jié)點(diǎn)做一個(gè)唯一標(biāo)識(shí),Diff算法就可以正確的識(shí)別此節(jié)點(diǎn)植阴,找到正確的位置區(qū)插入新的節(jié)點(diǎn)蟹瘾。

Vue組件中的data為什么必須是函數(shù)

因?yàn)榻M件是要共享的,但他們的data是私有的掠手,所以每個(gè)組件都要return一個(gè)新的data對(duì)象

組件中的data寫(xiě)成一個(gè)函數(shù)憾朴,數(shù)據(jù)以函數(shù)返回值形式定義,這樣每復(fù)用一次組件喷鸽,就會(huì)返回一份新的data众雷,類(lèi)似于給每個(gè)組件實(shí)例創(chuàng)建一個(gè)私有的數(shù)據(jù)空間,讓各個(gè)組件實(shí)例維護(hù)各自的數(shù)據(jù)做祝。

而單純的寫(xiě)成對(duì)象形式砾省,就使得所有組件實(shí)例共用了一份data,就會(huì)造成一個(gè)變了全都會(huì)變的結(jié)果混槐。

keep-alive組件的作用编兄?

keep-alive?是 Vue 內(nèi)置的一個(gè)組件,可以在組件切換過(guò)程中將狀態(tài)保留在內(nèi)存中声登,防止重復(fù)渲染dom

單頁(yè)面應(yīng)用和多頁(yè)面應(yīng)用區(qū)別及優(yōu)缺點(diǎn)

單頁(yè)面應(yīng)用狠鸳,通俗一點(diǎn)說(shuō)就是指只有一個(gè)主頁(yè)面的應(yīng)用揣苏,瀏覽器一開(kāi)始要加載所有必須的 html, js, css。所有的頁(yè)面內(nèi)容都包含在這個(gè)所謂的主頁(yè)面中件舵。

但在寫(xiě)的時(shí)候卸察,還是會(huì)分開(kāi)寫(xiě)(頁(yè)面片段),然后在交互的時(shí)候由路由程序動(dòng)態(tài)載入铅祸,單頁(yè)面的頁(yè)面跳轉(zhuǎn)坑质,僅刷新局部資源。

多應(yīng)用于pc端临梗。多頁(yè)面涡扼,就是指一個(gè)應(yīng)用中有多個(gè)頁(yè)面,頁(yè)面跳轉(zhuǎn)時(shí)是整頁(yè)刷新

單頁(yè)應(yīng)用? 優(yōu)點(diǎn):頁(yè)面切換快? ?缺點(diǎn):首屏加載稍慢夜焦,seo差壳澳;多頁(yè)應(yīng)用? ?優(yōu)點(diǎn):首屏?xí)r間快,seo效果好? 缺點(diǎn):頁(yè)面切換慢

什么是計(jì)算屬性茫经?什么情況使用

computed 是vue實(shí)例中的計(jì)算屬性computed是實(shí)時(shí)響應(yīng)的巷波,要根據(jù)data里一個(gè)值隨時(shí)變化做出一些處理時(shí),就需要用conputed去實(shí)時(shí)計(jì)算

computed卸伞,methods的區(qū)別抹镊?

computed計(jì)算屬性的方式在用屬性時(shí)不用加(),而methods方式在使用時(shí)要像方法一樣去用,必須加()?computed是基于它的依賴(lài)緩存荤傲,只有相關(guān)依賴(lài)發(fā)生改變時(shí)才會(huì)重新取值垮耳。?

methods在重新渲染的時(shí)候,函數(shù)總會(huì)重新調(diào)用執(zhí)行遂黍。

什么是自定義指令终佛,有哪些鉤子函數(shù)及自定義指令的使用場(chǎng)景

有的情況下,你仍然需要對(duì)普通 DOM 元素進(jìn)行底層操作雾家,這時(shí)候就會(huì)用到自定義指令铃彰。

一個(gè)指令定義對(duì)象可以提供如下幾個(gè)鉤子函數(shù) (均為可選)

bind:只調(diào)用一次,指令第一次綁定到元素時(shí)調(diào)用芯咧。在這里可以進(jìn)行一次性的初始化設(shè)置牙捉。

inserted:被綁定元素插入父節(jié)點(diǎn)時(shí)調(diào)用 (僅保證父節(jié)點(diǎn)存在,但不一定已被插入文檔中)敬飒。

update:所在組件的 VNode 更新時(shí)調(diào)用邪铲,但是可能發(fā)生在其子 VNode 更新之前。指令的值可能發(fā)生了改變无拗,也可能沒(méi)有带到。但是你可以通過(guò)比較更新前后的值來(lái)忽略不必要的模板更新 (詳細(xì)的鉤子函數(shù)參數(shù)見(jiàn)下)。

componentUpdated:指令所在組件的 VNode 及其子 VNode 全部更新后調(diào)用英染。

unbind:只調(diào)用一次揽惹,指令與元素解綁時(shí)調(diào)用晌纫。

父組件獲取異步動(dòng)態(tài)數(shù)據(jù)傳遞給子組件,報(bào)錯(cuò)如何解決永丝?

開(kāi)始的時(shí)候讓子組件隱藏,然后等數(shù)據(jù)返回的時(shí)候,讓子組件顯示

通過(guò)v-if箭养,也就是判斷數(shù)據(jù)是否為空慕嚷,為空就不渲染,也能解決了

為不能讀取的屬性添加一個(gè)默認(rèn)值毕泌,就可以很好的解決了

query和params的區(qū)別

- 地址欄的展現(xiàn)形式不同

? - query:?key=value

? - params::/value

- 接收方式不同

? - query:this.$route.query

? - params:this.$route.params

- 使用場(chǎng)景的不同

? - query一般用在搜索

? - params一般用在詳情頁(yè)

什么是Vuex喝检?詳述Vuex的工作流程

官方介紹:Vuex 是一個(gè)專(zhuān)為 Vue.js 應(yīng)用程序開(kāi)發(fā)的狀態(tài)管理模式。它采用集中式存儲(chǔ)管理應(yīng)用的所有組件的狀態(tài)撼泛,并以相應(yīng)的規(guī)則保證狀態(tài)以一種可預(yù)測(cè)的方式發(fā)生變化挠说。

Vuex其實(shí)就是一個(gè)Vue的集中狀態(tài)管理工具,類(lèi)似于redux愿题,但使用方法很明顯優(yōu)化了許多

什么時(shí)候使用Vuex损俭?

官方的話(huà)說(shuō),在你需要用的時(shí)候自然而然就知道自己什么時(shí)候要用了

在我看來(lái)潘酗,當(dāng)項(xiàng)目需要使用公共數(shù)據(jù)杆兵,并且這個(gè)公共數(shù)據(jù)的訪(fǎng)問(wèn)量較大的時(shí)候,我們可以使用Vuex仔夺,用來(lái)集中管理公共的數(shù)據(jù)琐脏,而一些小型的項(xiàng)目,我們可以靠中央通信總線(xiàn)的發(fā)布訂閱模式來(lái)實(shí)現(xiàn)數(shù)據(jù)管理與通信

Vuex的工作流程

首先通過(guò)dispatch提交一個(gè)action

在action中我們可以執(zhí)行一些異步的操作缸兔,或者根據(jù)不同的情況分發(fā)不同的mutation

接著在action中調(diào)用commit日裙,觸發(fā)一個(gè)mutation

所有修改state的操作,全部應(yīng)該放在mutation中來(lái)做

而state更新之后惰蜜,會(huì)調(diào)用Vue的底層方法昂拂,通知視圖進(jìn)行更新渲染

Vuex不像redux,redux在任何項(xiàng)目工程內(nèi)都可以使用蝎抽,不僅限于react政钟,但是Vuex是基于Vue的底層實(shí)現(xiàn)的一個(gè)狀態(tài)管理工具,其實(shí)Vuex中的store本質(zhì)就是沒(méi)有template的隱藏著的vue組件

詳述Vuex的核心屬性及使用

state

state存儲(chǔ)了Vuex的基本數(shù)據(jù)樟结,在state中存儲(chǔ)的數(shù)據(jù)都是經(jīng)過(guò)Vue底層watcher偵聽(tīng)的數(shù)據(jù)养交,可以實(shí)現(xiàn)響應(yīng)式數(shù)據(jù)

actions

actions存放了Vuex中所有的異步操作,可以在actions中通過(guò)commit分發(fā)不同的mutation瓢宦,在不同的情況下執(zhí)行不同的方法

mutations

mutations存放了Vuex中所有關(guān)于state的操作碎连,修改state只能通過(guò)mutations,否則的話(huà)數(shù)據(jù)不會(huì)響應(yīng)式更新

getters

getters就類(lèi)似與Vue實(shí)例中的computed驮履,計(jì)算屬性鱼辙,所有關(guān)于數(shù)據(jù)的復(fù)雜計(jì)算應(yīng)該放在getters中來(lái)操作

modules

modules廉嚼,類(lèi)似于redux中的reducer,每一個(gè)module都擁有自己的state倒戏、mutations怠噪、actions、getters杜跷;將整個(gè)store根據(jù)功能或者數(shù)據(jù)分解成不同的模塊傍念,最后合并在一個(gè)Store中

Vue和Jquery的區(qū)別

Jquery直接操作DOM,使用選擇器以及便捷的DOM操作方式來(lái)修改視圖以及數(shù)據(jù)

Vue不直接操作DOM葛闷,而是通過(guò)雙向數(shù)據(jù)綁定的方式憋槐,將DOM節(jié)點(diǎn)在Vue內(nèi)部轉(zhuǎn)化對(duì)象的形式,通過(guò)修改數(shù)據(jù)直接修改視圖

Jquery是一個(gè)前端類(lèi)庫(kù)淑趾,只是提供了很多便捷操作DOM的方法阳仔,而Vue是一個(gè)框架,有一套完整的體系

Vue中的slot是什么扣泊?

在Vue中近范,我們一般使用UI界面來(lái)劃分組件,而每一個(gè)UI界面可以劃分很多個(gè)組件延蟹,不同的UI界面中難免會(huì)有相似之處顺又,這種相似的地方,我們?nèi)绾瓮ㄟ^(guò)一種優(yōu)雅的方式來(lái)達(dá)到復(fù)用這個(gè)UI組件呢等孵?就是使用slot插槽了

slot插槽稚照,其實(shí)就是用來(lái)做內(nèi)容分發(fā),使得可以最大程度的復(fù)用組件俯萌,達(dá)到每次使用同一個(gè)組件的時(shí)候可以根據(jù)情況創(chuàng)建不同的內(nèi)容的功能

匿名插槽

不具有name屬性的slot就是匿名插槽果录,也可以叫默認(rèn)插槽

由父組件提供樣式和內(nèi)容,子組件只負(fù)責(zé)顯示

匿名插槽/默認(rèn)插槽只可以使用一次

<slot>里邊寫(xiě)的是默認(rèn)值</slot>

在子組件內(nèi)定義slot時(shí)咐熙,內(nèi)部可以定義默認(rèn)值弱恒,當(dāng)父組件有內(nèi)容分發(fā)的時(shí)候,顯示父組件的內(nèi)容棋恼,沒(méi)有的時(shí)候返弹,顯示默認(rèn)內(nèi)容

具名插槽

有name屬性

在組件中可以使用N次(name值不同的情況下)

父組件通過(guò)html模板上的slot屬性關(guān)聯(lián)具名插槽

<template v-slot:插槽名稱(chēng)><div>插槽內(nèi)容</div></template>

沒(méi)有slot屬性的html模板默認(rèn)關(guān)聯(lián)匿名模板

父組件提供樣式和內(nèi)容

<slot name="插槽名稱(chēng)"></slot>

作用域插槽(帶數(shù)據(jù)的插槽)

父組件只提供樣式,子組件提供內(nèi)容

在slot上面綁定數(shù)據(jù)

子組件的值可以傳給父組件使用

父組件展示子組件數(shù)據(jù)有3種方式:flex顯示爪飘、列表顯示义起、直接顯示

使用v-slot必須使用template;之前使用的是slot-scope,但是這個(gè)屬性已經(jīng)在2.6.0廢棄了师崎,現(xiàn)在使用v-slot指令來(lái)代替原有的slot-scope屬性

scope返回的值是slot標(biāo)簽上返回的所有屬性值默终,并且是一個(gè)對(duì)象的形式保存起來(lái)

// 子組件中// 父組件中{{item}}{{scope.message}}

SPA首屏加載慢,該如何解決?

抽取css文件

使用CDN資源

使用路由模塊化加載

按照頁(yè)面或者組件分塊懶加載

使用gzip減小網(wǎng)絡(luò)傳輸?shù)牧髁看笮?/p>

使用服務(wù)端渲染的方式

使用預(yù)渲染的方式

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末齐蔽,一起剝皮案震驚了整個(gè)濱河市两疚,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌含滴,老刑警劉巖诱渤,帶你破解...
    沈念sama閱讀 217,185評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異谈况,居然都是意外死亡源哩,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,652評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門(mén)鸦做,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人谓着,你說(shuō)我怎么就攤上這事泼诱。” “怎么了赊锚?”我有些...
    開(kāi)封第一講書(shū)人閱讀 163,524評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵治筒,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我舷蒲,道長(zhǎng)耸袜,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,339評(píng)論 1 293
  • 正文 為了忘掉前任牲平,我火速辦了婚禮堤框,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘纵柿。我一直安慰自己蜈抓,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,387評(píng)論 6 391
  • 文/花漫 我一把揭開(kāi)白布昂儒。 她就那樣靜靜地躺著沟使,像睡著了一般。 火紅的嫁衣襯著肌膚如雪渊跋。 梳的紋絲不亂的頭發(fā)上腊嗡,一...
    開(kāi)封第一講書(shū)人閱讀 51,287評(píng)論 1 301
  • 那天,我揣著相機(jī)與錄音拾酝,去河邊找鬼燕少。 笑死,一個(gè)胖子當(dāng)著我的面吹牛蒿囤,可吹牛的內(nèi)容都是我干的棺亭。 我是一名探鬼主播,決...
    沈念sama閱讀 40,130評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼镶摘!你這毒婦竟也來(lái)了嗽桩?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 38,985評(píng)論 0 275
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤凄敢,失蹤者是張志新(化名)和其女友劉穎碌冶,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體涝缝,經(jīng)...
    沈念sama閱讀 45,420評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡扑庞,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,617評(píng)論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了拒逮。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片罐氨。...
    茶點(diǎn)故事閱讀 39,779評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖滩援,靈堂內(nèi)的尸體忽然破棺而出栅隐,到底是詐尸還是另有隱情,我是刑警寧澤玩徊,帶...
    沈念sama閱讀 35,477評(píng)論 5 345
  • 正文 年R本政府宣布租悄,位于F島的核電站,受9級(jí)特大地震影響恩袱,放射性物質(zhì)發(fā)生泄漏泣棋。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,088評(píng)論 3 328
  • 文/蒙蒙 一畔塔、第九天 我趴在偏房一處隱蔽的房頂上張望潭辈。 院中可真熱鬧,春花似錦澈吨、人聲如沸萎胰。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,716評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)技竟。三九已至,卻和暖如春屈藐,著一層夾襖步出監(jiān)牢的瞬間榔组,已是汗流浹背靠汁。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,857評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工哺窄, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留验烧,地道東北人圣贸。 一個(gè)月前我還...
    沈念sama閱讀 47,876評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像课梳,于是被迫代替她去往敵國(guó)和親仓洼。 傳聞我的和親對(duì)象是個(gè)殘疾皇子宦言,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,700評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • 原文:http://www.reibang.com/p/0cdf51904afb 計(jì)算屬性如何使用 一般我們?cè)趯?xiě)...
    L_b115閱讀 766評(píng)論 0 0
  • 計(jì)算屬性如何使用 一般我們?cè)趯?xiě)vue的時(shí)候,在模板內(nèi)寫(xiě)的表達(dá)式非常便利换可,它運(yùn)用于簡(jiǎn)單的運(yùn)算椎椰,但是他也有一些復(fù)雜的邏...
    X秀秀閱讀 13,754評(píng)論 1 19
  • vue是什么? vue是構(gòu)建數(shù)據(jù)驅(qū)動(dòng)的web界面的漸進(jìn)式框架沾鳄。Vue.js 的目標(biāo)是通過(guò)盡可能簡(jiǎn)單的 API 實(shí)現(xiàn)...
    九四年的風(fēng)閱讀 8,703評(píng)論 2 131
  • 1.vue優(yōu)缺點(diǎn) 優(yōu)點(diǎn): a)MVVM的開(kāi)發(fā)模式慨飘,從dom中解脫出來(lái),雙向數(shù)據(jù)綁定译荞;b)數(shù)據(jù)更新采用異步事件機(jī)制...
    說(shuō)書(shū)人_子將閱讀 1,569評(píng)論 3 43
  • 問(wèn)題描述 解決方案 使用下列方式啟動(dòng) adbadb kill-servercd the-path-your-sdk...
    妖怪來(lái)了閱讀 9,221評(píng)論 0 3