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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值