并非原創(chuàng)
1.Vue路由的實(shí)現(xiàn)原理
window.history
location.hash
在初始化對(duì)應(yīng)的history(黑思特瑞)之前碟渺,會(huì)對(duì)mode做一些校驗(yàn):若瀏覽器不支持HTML5History方式(通過(guò)supportsPushState(思泡思瀑次)變量判斷),則mode設(shè)為hash;若不是在瀏覽器環(huán)境下運(yùn)行,則mode設(shè)為abstract(啊波思特);
VueRouter類中的onReady()(ruai迪),push()等方法只是一個(gè)代理衡创,實(shí)際是調(diào)用的具體history對(duì)象的對(duì)應(yīng)方法,在init()(厘米特)方法中初始化時(shí)铺坞,也是根據(jù)history對(duì)象具體的類別執(zhí)行不同操作
2.SPA 路由history模式上線后刷新404
vue默認(rèn)模式是hash模式? ? url地址欄會(huì)帶有“#”這個(gè)字符惯悠。
例如:http://www.xxx.com/#/index
感覺(jué)和正常的url相比有點(diǎn)丑。
所以我們就會(huì)使用history這個(gè)模式把“#”去掉遮斥,但是當(dāng)我們打包上線時(shí)會(huì)發(fā)現(xiàn)跳轉(zhuǎn)路由之后峦失,刷新頁(yè)面會(huì)出現(xiàn)404報(bào)錯(cuò),那么我們應(yīng)該怎么解決呢术吗?尉辑?
解決方案:
1.? 先去下載一個(gè)web程序安裝平臺(tái)(下載地址)
2.下載安裝完成之后打開(kāi)IIS可以看到我們安裝的web程序安裝平臺(tái)
IISweb程序安裝平臺(tái)
3.找到你配置的網(wǎng)站,雙擊打開(kāi)web程序安裝平臺(tái)较屿,并在它產(chǎn)品選項(xiàng)下的服務(wù)器中找到URL重寫(xiě)工具隧魄,進(jìn)行安裝
URL安裝
4.當(dāng)安裝完成之后返回你的網(wǎng)站主界面,就會(huì)發(fā)現(xiàn)多出一個(gè)URL重寫(xiě)選項(xiàng)
URL
5.雙擊打開(kāi)隘蝎,點(diǎn)擊添加規(guī)則
添加規(guī)則
6.點(diǎn)擊添加規(guī)則后购啄,并選擇入站規(guī)則的空白規(guī)則
6.名稱隨便寫(xiě)一下自己能區(qū)分就行,這里我就寫(xiě)為chuizi嘱么,在設(shè)置匹配URL時(shí)狮含,將使用選項(xiàng)改為 ‘通配符’ ,重要的步驟:將模式中寫(xiě)“*”,就是數(shù)學(xué)中的星號(hào)*
匹配設(shè)置
7.接著設(shè)置條件選項(xiàng)几迄,點(diǎn)擊添加蔚龙,在選擇輸入字符串是否時(shí):選擇不是文件,然后確定
設(shè)置條件
8.接著就是設(shè)置操作中的操作屬性映胁,在里面寫(xiě)你打包后的index.html路徑木羹,因?yàn)槟惴湃氲氖莇ist文件夾所以我們要在inde.html 前加上 /
設(shè)置操作屬性
3.$route和$router的區(qū)別
1.router是VueRouter的一個(gè)對(duì)象,通過(guò)Vue.use(VueRouter)和VueRouter構(gòu)造函數(shù)得到一個(gè)router的實(shí)例對(duì)象屿愚,這個(gè)對(duì)象中是一個(gè)全局的對(duì)象汇跨,他包含了所有的路由包含了許多關(guān)鍵的對(duì)象和屬性。
2route是一個(gè)跳轉(zhuǎn)的路由對(duì)象妆距,每一個(gè)路由都會(huì)有一個(gè)route對(duì)象穷遂,是一個(gè)局部的對(duì)象,可以獲取對(duì)應(yīng)的name,path,params(泡沫思),query等
我們可以從vue devtools(吐思)中看到每個(gè)路由對(duì)象的不同
4.自定義過(guò)濾器詳解
過(guò)濾器可以用在兩個(gè)地方:雙花括號(hào)插值和 v-bind 表達(dá)式 (后者從 2.1.0+ 開(kāi)始支持)娱据。過(guò)濾器應(yīng)該被添加在 JavaScript 表達(dá)式的尾部蚪黑,由“管道”符號(hào)指示。
5.自定義指令詳解
自定義指令最重要的兩個(gè)部分就是鉤子函數(shù)和鉤子函數(shù)對(duì)應(yīng)的參數(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)下)眠寿。
component(康拋騰特)Updated:指令所在組件的 VNode 及其子 VNode 全部更新后調(diào)用。
unbind(安伴的):只調(diào)用一次焦蘑,指令與元素解綁時(shí)調(diào)用
el: 指令所綁定的元素盯拱,可以用來(lái)直接操作DOM。
binding(伴定): 一個(gè)對(duì)象例嘱,包含指令的很多信息狡逢。
vnode: Vue編譯生成的虛擬節(jié)點(diǎn)。
6.assets(按色思)和static(死大t)的區(qū)別
相同點(diǎn): 文件夾中的資源在html中使用都是可以的拼卵。
該目錄下的文件是不會(huì)被wabpack處理的奢浑,它們會(huì)被直接復(fù)制到最終的打包目錄下面(默認(rèn)是dist(底思特)/static),且必須使用絕對(duì)路徑來(lái)引用這些文件间学。
這是通過(guò)在config(扛定).js文件中的build.assetsPublicPath(按色思帕布利克怕吃)和build.assetsSubDirectory(按色思薩不度歪t(yī)瑞)鏈接來(lái)確定的
assets 中的文件會(huì)經(jīng)過(guò) webpack 打包,重新編譯