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、生命週期

Vue.js 實例在創建時有一系列的初始化步驟,例如建立數據觀察,編譯模板,創建數據綁定等。
vue聲明週期
注:圖片出自https://segmentfault.com/a/1190000008570622,侵權刪。

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章