VUE运用中踩过的坑

媒介

vue现在可谓是一匹黑马,github star数已居第一位!前端开辟关于vue的运用已越来越多,它的长处就不做引见了,
本篇是我对vue运用过程中以及对一些社区朋侪发问我的题目中做的一些总结,协助人人踩坑。假如喜好的话能够点波赞,或许关注一下,愿望本文能够帮到人人!!!

———-我是分割线

本篇引见的题目也许以下:

  1. 路由变化页面数据不革新题目
  2. setTimeout/setInterval(泛指异步回掉函数的this指向)this指向转变,没法用this接见VUe实例
  3. setInterval路由跳转继承运转并没有实时举行烧毁
  4. vue 转动行动用法,进入路由须要转动到浏览器底部 头部等等
  5. 完成vue路由阻拦浏览器的需求,举行 一系列操纵 草稿保留等等
  6. v-once 只衬着元素和组件一次,优化更新衬着机能
  7. vue当地代办设置 处理跨域题目,仅限于开辟环境
  8. 当地开辟 没有任何题目 布置效劳器 就404啊这些题目

1. 路由变化页面数据不革新题目

涌现这类状况是因为依靠路由的params参数猎取写在created性命周期内里,因为雷同路由二次以至屡次加载的关联 没有到达监听,退出页面再进入另一个文章页面并不会运转created组件性命周期,致使文章数据照样第一次进入的数据

处理要领:watch监听路由是不是变化

 watch: {
 // 要领1
  '$route' (to, from) { //监听路由是不是变化
    if(this.$route.params.articleId){// 推断前提1  推断通报值的变化
      //猎取文章数据
    }
  }
  //要领2
  '$route'(to, from) {
    if (to.path == "/page") {    /// 推断前提2  监听路由名 监听你从什么路由跳转过来的
       this.message = this.$route.query.msg     
    }
  }
  
}

2. 异步回调函数中运用this没法指向vue实例对象

//setTimeout/setInterval ajax Promise等等
data(){
  return{
    ...
  }
},
methods (){
     setTimeout(function () {   //别的几种状况雷同
      console.log(this);//此时this指向并非vue实例 致使操纵的一些ma'f
    },1000);
}

处理方案 变量赋值和箭头函数

var和let的区分

 //运用变量接见this实例
let self=this;   
    setTimeout(function () {  
      console.log(self);//运用self变量接见this实例
    },1000);
    
 //箭头函数接见this实例 因为箭头函数自身没有绑定this
 setTimeout(() => { 
   console.log(this);
 }, 500);

3. setInterval路由跳转继承运转并没有实时举行烧毁

比方一些弹幕,走马灯笔墨,这类须要定时挪用的,路由跳转今后,因为组件已烧毁了,然则setInterval还没有烧毁,还在继承背景挪用,控制台会不停报错,假如运算量大的话,没法实时消灭,会致使严峻的页面卡顿。

处理办法:在组件性命周期beforeDestroy住手setInterval

//组件烧毁前实行的钩子函数,跟其他性命周期钩子函数的用法雷同。
beforeDestroy(){
     //我通常是把setInterval()定时器赋值给this实例,然后就能够像下面这么住手。
    clearInterval(this.intervalId);
},

4. vue 转动行动用法,进入路由须要转动到浏览器底部 头部等等

运用前端路由,当切换到新路由时,想要页面滚到顶部,或许是坚持本来的转动位置,就像从新加载页面那样。 
vue-router 能做到,而且更好,它让你能够自定义路由切换时页面怎样转动。

注重: 这个功用只在支撑 history.pushState 的浏览器中可用。
路由设置以下: 概况猛戳

 const router = new VueRouter({
   mode: 'history',
 scrollBehavior (to, from, savedPosition) {
     if (savedPosition) { //假如savedPosition存在,转动条会自动跳到纪录的值的处所
       return savedPosition
     } else {
       return { x: 0, y: 0 }//savedPosition也是一个纪录x轴和y轴位置的对象
      }
     },
   routes: [...]
 })
 

5. 完成vue路由阻拦浏览器的需求,举行一系列操纵 草稿保留等等

场景:
为了防备用户失误点错封闭按钮等等,致使没有保留已输入的信息(症结信息)。
用法:
//在路由组件中:

...
beforeRouteLeave (to, from, next) {
  if(用户已输入信息){
    //涌现弹窗提示保留草稿,或许自动背景为其保留
    
  }else{
    next(true);//用户脱离
  }

}

另有beforeEach、beforeRouteUpdate这些性命周期函数 概况猛戳

6. v-once 只衬着元素和组件一次,优化更新衬着机能

v-once这个指令置信人人用的很少,不过个人感觉照样挺有用的!

只衬着元素和组件一次。随后的从新衬着,元素/组件及其一切的子节点将被视为静态内容并跳过。这能够用于优化更新机能。
这个就不举例子了 直接猛戳这 v-once

7. vue当地代办设置 处理跨域题目,仅限于开辟环境

这个当地代办用来处理开辟环境下的跨域题目,跨域可谓陈词滥调的题目了,proxy 在vue中设置代办异常简朴

//比方说你要接见 http://192.168.1.xxx:8888/backEnd/paper这个接口
//设置  config.js下面proxyTable对象
proxyTable: {
            '/backEnd':{
                target:'http://192.168.3.200:8888', //目的接口域名有端口能够把端口也写上
                                                    //或许prot当地起效劳端口与效劳端一致
                changeOrigin:true,    
            }
},


// 发送request要求
   axios.get('/backEnd/page')  //按代办设置 匹配到/backEnd就代办到目的target地点
    .then((res) => {
       console.log(res) // 数据完全拿获得  设置胜利
      this.newsList = res.data
    }, (err) => {
      console.log(err)
    })
 或许:
    proxyTable: {
                '/api':{
                    target:'http://192.168.3.200:8888', //目的接口域名有端口能够把端口也写上,或许prot当地起效劳端口与服端一致               
                    changeOrigin:true,
                    pathRewrite: {   //该属性重写接口把`/api`去掉
                        '^/api': ''
                    }    
                }
    }, 
    // 发送request要求
   axios.get('/api/backEnd/page')  //按代办设置 匹配到/backEnd就代办到目的target地点
    .then((res) => {
       console.log(res) // 数据完全拿获得  设置胜利
      this.newsList = res.data
    }, (err) => {
      console.log(err)
    })  

8. 当地开辟 没有任何题目 布置效劳器 就404啊这些题目

因为前端路由缘由,单页面运用应当放到nginx或许apache、tomcat等web代办效劳器中,万万不要直接接见index.html,同时要根据本身效劳器的项目途径变动react或vue的路由地点

注重点

1: vue-router的 history 形式
2: 效劳nginx设置

到最后我想说声抱歉,之前准许你们的node因为个人缘由没有实时更新出来,node 方面的文章篇幅一定短不了,因为要把它讲清楚不是一句俩句话的事,幸亏我发现了一篇文章 对初学者提升高等初学者有很大协助,请点击猛戳这里,愿望你仔细的看完这篇文章(书把,篇幅不短),它会对你有很大的协助,我一定在年前给你补一遍开辟完全运用的node 方向的文章!

结语

这篇文章只是最先,它的待续还会很长很长,愿望你我坚持下去!也愿望我能协助到更多的人,固然也会让我真正沉淀一下,为了今后为了未来 一同勤奋假如人人有什么题目,或许须要补充的 迎接留言!我会举行补全的 ! 细致版本我稍后也会上传到gitHub!

假如以为文章对人人有协助,愿望人人能点赞一下或许关注一下,获得一定的我会越发勤奋!~~

    原文作者:cype
    原文地址: https://segmentfault.com/a/1190000013008420
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞