Vue2.x和webpack踩坑與總結
Vue2.x
1、hash和history模式
在專案初始中,為hash模式下,hash模式,我們知道,它背後的原理是onhashange,onhaschange的定義如下:
當錨部分發生變化時執行;
這樣子,就成了路由的基本操作方式,但是hash模式會使連結產生/#/,hash模式回退不方便,而且無法使用描點定位。如果使用hash方法,為了使頁面不會重新整理,一般這樣幹:
如果要是a標籤不會重新整理,那麼需要在a標籤的路徑前面加#,正常a標籤hash模式得href=’#/home’
這樣就有了hidtory模式。
history模式使用方法:
new router ({
mode:'history',
routes:[]
})
histroy模式用a標籤會跳轉連結重新整理頁面,這是因為a標籤的預設行為
解決方式用<router-link to='/home'></router-link>
(不管是hash還是history都支援).
2、滾動事件
在實際開發過程中,如果我們在前進活著後退的過程中想要記錄滾動條的位置,就是在後退之後的前面的一個頁面,滾動條還停留在之前的位置,我們可以在vueRouter中新增scrollBhavior物件:
scrollBehavior(to,from,savePosition){//點選瀏覽器的前進或者後退,或者切換導航的時候觸發
console.log(to);//進入的目標路由物件,去向哪裡
console.log(from);//離開的路由物件,從哪裡來
console.log(savePosition);//記錄滾動條的座標,點選前進或者後退的時候記錄的值
//設定座標的一種方式
// if(savePosition){
// return savePosition;
// }else{
// return {x:0,y:0}
// }
//hash模式,另外一種方式
if (to.hash){
return {
selector: to.hash
}
}
}
hash模式中我們需要在元件的路徑中新增”/#xxx”,而且,還需要在文章的描點出新增id=”xxx”即可。
3、動態路徑
匹配到所有路由,全部對映到一個元件
路徑:/user/userId //userId為動態路徑引數
獲取引數:路由資訊物件的parmas
在需要顯示的地方可以這麼寫:
<template>
...
<ul>
<li v-for="app in appList">
<router-link :to="'/User/'+item.id" v-for="(item,index) in userList">{{item.userName}}</router-link>
</li>
</ul>
...
</template>
在引入的路由裡面,需要寫上
{
path:'/User/:userId?',
component:User
}
4、導航鉤子函式
執行鉤子函式的位置:
router全域性
單個路由
元件中
鉤子函式:
router例項上:beforeEach, afterEach
單個路由中:beforeEnter
元件內的鉤子:beforeRouteEnter, beforeRoteUpdate, beforeRouteLeave
鉤子函式的引數:
to: 要進入的目標,路由物件,到哪裡去
from:正要離開的路由物件,從哪裡來
next:用來決定跳轉或取消導航
5、生命週期
beforeCreate
在例項初始化之後,資料觀測(data observer) 和 event/watcher 事件配置之前被呼叫。此時資料觀測、事件等都尚未初始化。
created
例項已經建立完成之後被呼叫。在這一步,例項已完成以下的配置:資料觀測(data observer),屬性和方法的運算, watch/event 事件回撥。然而,掛載階段還沒開始,$el 屬性目前不可見。
beforeMount
在掛載開始之前被呼叫:相關的 render 函式首次被呼叫。
mounted
el 被新建立的 vm.$el 替換,並掛載到例項上去之後呼叫該鉤子。
beforeUpdate
資料更新時呼叫,發生在虛擬 DOM 重新渲染和打補丁之前。 你可以在這個鉤子中進一步地更改狀態,這不會觸發附加的重渲染過程。
updated
由於資料更改導致的虛擬 DOM 重新渲染和打補丁,在這之後會呼叫該鉤子。
當這個鉤子被呼叫時,元件 DOM 已經更新,所以你現在可以執行依賴於 DOM 的操作。然而在大多數情況下,你應該避免在此期間更改狀態,因為這可能會導致更新無限迴圈。
該鉤子在伺服器端渲染期間不被呼叫。
beforeDestroy
例項銷燬之前呼叫。在這一步,例項仍然完全可用。
destroyed
Vue 例項銷燬後呼叫。呼叫後,Vue 例項指示的所有東西都會解繫結,所有的事件監聽器會被移除,所有的子例項也會被銷燬。 該鉤子在伺服器端渲染期間不被呼叫。
6啟動顯示網頁無法正常啟動
原因之一:開啟全域性代理,所以無法顯示localhost:8080