概述

升级的话呢,还是比较简单,就按官方文档来,改写一下某些api,本文主要讲文档中说的不清晰的一些坑

vue-router

官方文档中推荐使用watcher来监测$route的改变,当路由变化时就去服务端获取数据,这样直接监测是不对的,还是要把路由变化和获取数据两个分开来,上一篇文章中,在vue1里,我是在组件中储存了路由参数,使用router的data钩子函数来获取路由改变,并改变到组件变量中,再由一个watcher来监测组件变量的变化,这样主要是为了利用缓存,只在路由参数改变的时候,再去获取数据。而在vue2中,若直接监测$route,则每次进入当前路由,都会重新调用获取数据的函数,更可怕的是,当离开这个页面的时候,也是触发了$route的改变,很可怕了,会再请求一次数据,并且带来一些意外的bug,所以还是要按照以前的思想,只不过vue2种route的钩子函数都去掉了,所以要用组件的生命周期钩子函数activated,正确的姿势:

  activated: function(){this.bookId = this.$route.params.id;},
watch: {'bookId' : function(val){//do something}
}

多个路由参数,把路由参数放在一个对象里,使用深监测

activated: function(){this.watcher.type = this.$route.params.type;this.watcher.id = this.$route.query.id;},
watch : {'watcher' : {handler: function(val){//do somethingwindow.scrollTo(0,0);// 不使用缓存时,不使用记录好的用户位置,滑倒顶部},deep: true}
}

好,下面是一个bug,vue-router2仍然使用html5 history来记录浏览位置,但是比上次高级了很多,在history的state对象里,储存了一个key,在sesstionStorage里,用这个key做键名,浏览位置的坐标作为键值储存了浏览位置。但是,第一个页面的位置是没有记住的,进入第一个路由的时候,并没有pushState(看不懂的话麻烦自查一下history的api),所以第一个路由的key没有记录在history中,要简单的fix一下

   window.addEventListener("popstate",function(e){if(!e.state){ //第一个路由的histroy里state应该是nullif(window.sessionStorage.length > 0){ let key = Object.keys(window.sessionStorage)[0] //第一个路由的key在第一个,获取到history.replaceState({key: key}, '', window.firstPath) //用replaceState强行把这个key注入到第一个路由中,firstPath是第一个路由的path,自己想办法拿到吧let yPosition = JSON.parse(window.sessionStorage.getItem(key)).y; //获取到滚动位置window.scrollTo(0, yPosition); }}},false);

这个bug搞了我很长时间,也不知道怎么调试,只能去看源码了,发现竟然看的懂源码!最后还是fix了,很开心。(不过,不知道是不是我使用router的姿势不对,网上可供查阅的东西太少了)

vue-cli

嗯,一定要重新用新版本的vue-cli重新构建下项目,因为有很多版本不一样的模块,要不然会有些小bug(我已经忘了。)
vue-cli直接构建的项目是没有开启postcss 加css3兼容性前缀的,改一下webpack.base.conf.js

  postcss: [require('autoprefixer')({browsers: ['last 7 versions'] //这里这个数字本来是3,改成7})],

墨瞳漫画 升级vue2 踩坑相关推荐

  1. vue1升级vue2踩坑指南

    vue1升级vue2踩坑指南 升级原因 版本选择 老的package.json: 新的package.json: vue官方说明 语法/组件使用变化 ready钩子 $index & $key ...

  2. 墨瞳漫画h5一期 vuejs总结

    前言 博主也是vuejs萌新,公司仅我一个前端,收到做h5的需求后,马上想到要用下vuejs,于是说服领导,开始慢慢钻研,现在记录一下踩到的坑.这些坑主要是在一些组件的使用上,其它的只要好好看官方文档 ...

  3. mycat连接数据库8.0以上 处理程序连接query_cache_size报错信息 mycat升级数据库踩坑

    本文档不只是解决query_cache_size问题,还说明如何下载代码及如何进行更新. 本文档,是我踩的坑,希望让大家少走弯路了. 基于现有包修改驱动 mycat1.x版本不支持mysql8.0:m ...

  4. Osx10.14升级watchman踩坑记

    背景 使用 watchman 检测文件变化通知非常的好用, 但有些时候会出现 watchman 占用内存和 CPU 特别疯狂, 通过 watch-del 也无济与事, 由于 watchman 的版本 ...

  5. 乾坤主应用Vue2 集成子应用Vue3艰苦踩坑历程

    知识准备 乾坤是什么?前端微应用有哪些优势? qiankun 是一个基于 single-spa 的微前端实现库,旨在帮助大家能更简单.无痛的构建一个生产可用微前端架构系统. 微前端架构具备以下几个核心 ...

  6. 【Vue】Vue1.0+Webpack1+Gulp项目升级构建方案的踩坑路

    最近半年在维护公司的一个管理后台项目,搭建之初的技术栈比较混乱,构建方案采用了Gulp中调用Webpack的方式,Gulp负责处理.html文件,Webpack负责加载.vue..js等.而在这一套构 ...

  7. 踩坑 :vue2 ajax异步请求数据,层数太多,页面无法渲染

    刚接触vue2不是太久,勉强算是小白一枚吧,在此分享一下我最近踩的一个坑,望以后的小白们借鉴: 首先,数据结构: data(){ return { outer: { mid: [{ inner: &q ...

  8. 转:android.support升级到androidx踩坑记录

    原文链接:android.support升级到androidx踩坑记录 - 简书 年前想着Google老大之前提醒过将项目升级到androidx,所以年前一通操作猛如虎把Android Studio唰 ...

  9. Android~老项目项目升级GradleAGP 7.0踩坑

    结合最近对公司项目做了一下升级,踩了点坑.记录一下,方便后续有人参考. module模块build.gradle变化 apply plugin变成了plugins 对部分android闭包下面的属性也 ...

最新文章

  1. Tensorflow—Fetch and Feed
  2. python魔力手册-小白入门宝典:Python快速入门魔力手册 PDF 超清版
  3. 【v2.x OGE教程 18】 Entity相关
  4. 乐视TV做电视 “自杀”还是“猎杀”
  5. 一次性加载树结构数据表 mapper加载
  6. Gradle Introduction
  7. 归纳偏置是什么?从现实生活中观察到的现象中归纳出一定的规则,然后对模型做一定的约束,从而可以起到“模型选择”的作用
  8. 为未来元素添加点击事件的两种写法
  9. CCNA实验之------NAT实验配置(必考)
  10. Servlet3.0学习总结(二)——使用注解标注过滤器(Filter)
  11. 水经注全球离线地图数据3.0即将发布
  12. 数据到物联网服务器作用,物联网数据分析是什么?物联网数据分析如何操作?...
  13. VC编程实现 excel插入一行单元格Insert
  14. 如何调用阿里云、百度云API接口
  15. 金九银十,测试思维面试题最新整理!
  16. 图片怎么转成PDF格式?介绍三种转换思路
  17. 小白如何利用短视频做引流推广
  18. 用pygame写了个俄罗斯方块
  19. 浏览美国大学最新排名以便确立目标 备战雅思助力目标达成
  20. ios 连续点击button_iOS小技巧:用runtime 解决UIButton 重复点击问题

热门文章

  1. 解决:Activiti7与SpringBoot整合时,默认生成的activiti数据库中只有17张表,无另外8张历史表
  2. 软件测试流程及规范(参考大华为的规范)
  3. Revit 绘制幕墙系统
  4. mysql停掉正在运行的存储过程
  5. 进口吲哚菁绿活化脂,ICG-NHS ester,Indocyanine Green - Activated Lipid
  6. 朋友圈文案_隐私条款
  7. 蓝牙技术|蓝牙(BLE)低功耗你所不了解的特性
  8. 【PR #2】史莱姆(值域分段)
  9. Cyberspace_Security_Learning
  10. EMC、Pure和NetApp推新品,NAS闪存场景在哪里