(一)使用props传值:

  <HeadTitle name-data="100"></HeadTitle>

  props:['nameData']

  父组件传递复合名称数据时使用小写和中划线(-) 组合,子组件接收复合名称数据时使用小驼峰。

 (二)路由去 “#”

  路由配置:

  mode:'history'

 (三)路由跳转后回到页面的顶部

  路由配置:
  scrollBehavior () {
  return { x: 0, y: 0 }
  }

 (四)重定向

    ‘重定向’指,用户访问 '/a' 路径时,url会被替换成 '/b' 。

    {  
       path:'/a',
      redirect:'/b'
    }

    重定向至某个子路由:
    
    {  
       path:'/list',
       name:'list'
      children:[
        {
          path:'/list',
          redirect:'aa',
        },
        {
          path:'aa',
          name:'a',
          component:A
        },
        {
          path:'bb',
          name:'b',
          component:B
        }
      ]

    }



(五)watch监控复合数据下面的某个属性

  data(){
    return{
      opt:{
        a:1,
        b:'abc'
      }
  }
  }
  watch:{
    "opt.b"(){
      // code
    },
    
    "$route"(){
      // 路由监控
    }
  }

(六)watch深层监控
  watch:{
    name:{
      handler(){
        // code
      },
      deep:true
    }
  }
(七)vue兼容IE
  因为Vue使用了ES6 Promise,而IE浏览器不支持,解决方法是: 使用babel-polyfill转换 
  
    $ npm install --save-dev babel-polyfill

  如果使用vue-cli项目,在build/webpack.base.js中添加:

    require('babel-polyfill');

    entry: { app: ['babel-polyfill','./src/main.js'] },

 (八)watch的简便写法  

  组件创建的时获取一次列表,同时监听data中数据变化,每当发生变化的时候重新获取一次筛选后的列表。

  常规写法:

  data(){  // data

    return{

      list:[1,2,3]

    }

   },

  methods:{

    editList(){  // 定义对list数据处理的方法。

      // 编辑list

    }

  },

  created(){  // 组件创建时处理list数据

    this.editList();

  },

  watch:{

    list:{  // 监控list变化重新编辑一次处理list

      handler(){

        this.editList();

      }

    }

  }

  优化写法:

  

data(){  // data

    return{

      list:[1,2,3]

    }

   },

  methods:{

    editList(){  

      // 编辑list

    }

  },

  watch:{

    list:{  // 首先,在watchers中,可以直接使用函数的字面量名称;其次,声明immediate:true表示创建组件时立马执行一次。

      handler:"editList",  // 直接使用函数的字面量名称

      immediate:true  // 表示创建组件时立马执行一次,即:created时期执行一次

    }

  }

(九)页面加载完成立即执行事件

  data(){

    list:[]

  },

  watch:{

    "list"(){

      this.$nextTick(){

        // DOM更新完成,执行事件

      }

    }

  }

 (十)set / delete

  1、对vue中复合数据 [ Array || Object ] 的设置做到响应使用vue内置方法set

    this.$set(目标数据,键名,键值) / Vue.set(目标数据,键名,键值);

    键名存在就修改,不存在就添加。

  2、删除vue中复合数据中的某个值

    Vue.delete(目标数据,健名) / this.$delete(目标数据,健名) ;

 (十一)v-cloak vue隐藏元素直至当前实例准备完成才编译

    这个指令保持在元素上直到关联实例结束编译。需配合CSS使用

    css:  

    [v-cloak] {
    display: none;
    }
  
    template
    <div v-cloak>
    {{ message }}
    </div>
    <!--当前div内对vue的编译会等到实例准备完成后开始-->

(十二)vue-cli打包上线

  (1).脚手架 + webpack打包必然是npm run build,但是后台用tomcat部署上线的时候,可能会衍生出一点问题,比如,路径问题(这里的路径问题,是因为在项目中,我们使用了绝对路径,这里必须要用相对路径,但是打包后,还是会报错,说是找不到assets文件夹下的各种资源,包括images,css,js,是因为,当初在全局引用的时候,写在了index.html中,安全起见,可以写入app.vue中);
 
  (2).在打包前还要在config文件夹中的index.js中设置一个路径问题,不然也会报错,在js中找到 build:{assetsPublicPath: './'} ,默认路径是 '/' ,需要加上 '.' 
 

(十三)路由别名

    ‘别名’指,用户访问 '/b' 路径时,url依旧是 '/b' ,但匹配到的视图是 '/a'  路由的匹配视图,如同访问 '/a' 路由一样。

  {  
     path:'/a',
    alias:'/b'
  }

(十四)数据还原状态

    1、初始化时设置的数据:

    data(){

      num:1,

      list:[],

      opt:{}

    }

    2、经过处理后数据 this.num,this.list,this.opt 状态

    3、使用初始化状态的数据

      可使用 this.$options.data() 拿到最初的状态。

      示例:  Object.assign( this.form , this.$options.data().form );
 (十五)在vue-cli项目中使用markdown编辑器:Vue-SimpleMDE

    1、npm install vue-simplemde --save
    2、// 全局引用
      import Vue from 'vue'
      import VueSimplemde from 'vue-simplemde'
      Vue.use(VueSimplemde)
    3、// 单个组件内引用

      import markdownEditor from 'vue-simplemde/src/markdown-editor'
 
      export default {
        components: {
          markdownEditor
        }
      }
    4、  <template>
        <!-- 通过 v-model 控制 value -->
        <markdown-editor v-model="content" ref="markdownEditor"></markdown-editor>
      </template>

(十六)$nextTick

  1、$nextTick(() => {}) 与DOM相关操作写在该函数回调中,确保DOM已渲染。

  2、在created()钩子函数进行DOM操作一定要放在Vue.nextTick()的回调函数中。(原因:在created()执行时DOM 其实并未进行任何渲染,此时进行DOM操作是获取不到DOM元素,所以一定要将DOM操作的代码放进Vue.nextTick()的回调函数中,确保此时DOM已渲染。)

  

   

vue随记的更多相关文章

  1. Vue折腾记 - (3)写一个不大靠谱的typeahead组件

    Vue折腾记 - (3)写一个不大靠谱的typeahead组件 2017年07月20日 15:17:05 阅读数:691 前言 typeahead在网站中的应用很多..今天跟着我来写一个不大靠谱的ty ...

  2. Vue折腾记 - (2)写一个不大靠谱的面包屑组件

    先看效果图 我把页面标题和面包屑封装到一起..就不用涉及到组件的通讯了,不然又要去监听路由或者依赖状态去获取 这里写图片描述 疑惑解答: 点击父(也就是折叠菜单)为什么会跑到子菜单第一个 因为我第一个 ...

  3. vue项目中路由验证和相应拦截的使用

    详解Vue路由钩子及应用场景(小结):https://www.jb51.net/article/127678.htm vue项目中路由验证和相应拦截的使用:https://blog.csdn.net/ ...

  4. WEB前端学习资源清单

    常用学习资源 JS参考与基础学习系列 [MDN]JS标准参考 es6教程 JS标准参考教程 编程类中文书籍索引 深入理解JS系列 前端开发仓库 <JavaScript 闯关记> JavaS ...

  5. [转] WEB前端学习资源清单

    常用学习资源 JS参考与基础学习系列 [MDN]JS标准参考 es6教程 JS标准参考教程 编程类中文书籍索引 深入理解JS系列 前端开发仓库 <JavaScript 闯关记> JavaS ...

  6. Javascript的学习清单

    Javascript的学习清单 Javascript学习资源 程序员必读书籍 深入理解JavaScript系列 es6教程 jQuery中文文档 vue官网 zeptojs中文版 常用的插件与UI组件 ...

  7. vue踩坑记

    vue踩坑记 易错点 语法好难啊qwq 不要把'data'写成'date' 在v-html/v-bind中使用vue变量时不需要加变量名 在非vue事件中使用vue中变量时需要加变量名 正确 < ...

  8. 【转】Vue 脱坑记 - 查漏补缺(汇总下群里高频询问的xxx及给出不靠谱的解决方案)

    前言 文章内容覆盖范围,芝麻绿豆的破问题都有,不止于vue; 给出的是方案,但不是手把手一字一句的给你说十万个为什么! 有三类人不适合此篇文章: “喜欢站在道德制高点的圣母婊” – 适合去教堂 “无理 ...

  9. Vue 脱坑记

    问题汇总 Q:安装超时(install timeout) 方案有这么些: cnpm : 国内对npm的镜像版本 /* cnpm website: https://npm.taobao.org/ */ ...

随机推荐

  1. java环境的配置——实现win10下双击直接运行jar文件

    java环境的配置--实现win10下双击直接运行jar文件 在渗透测试的过程中很多工具的安装和使用需要java环境,下面我来介绍一下java环境配置的超详细步骤(包含怎样实现win10下双击直接运行 ...

  2. WPF自定义控件一:StackPanel 控件轮播

    实现效果 带定时器的轮播图 using引用 using System.Windows; using System.Windows.Controls; using System.Windows.Mark ...

  3. Linux性能优化-平均负载

    Linux性能优化-平均负载 目录 Linux性能优化-平均负载 平均负载的含义 平均负载为多少时合理 平均负载与 CPU 使用率 平均负载案例分析 场景一:CPU 密集型进程 场景二:I/O 密集型 ...

  4. 【LeetCode】26. 删除有序数组中的重复项

    26. 删除有序数组中的重复项 知识点:数组:排序:双指针: 题目描述 给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度. 不要使用额外的 ...

  5. 通过白码SQL数据库对接功能改进原系统

    前言: 之前提到过之所以要使用数据库对接功能,就是因为原有系统上有些功能存在不完善甚至不好用的情况,需要二次开发来优化业务流程或是直接用白码用户端上的通用功能.对接了之后就不需要再写代码来搭建或者优化 ...

  6. [1.1W字] 复习: CSS 9个背景属性&6种渐变函数, 学会可以手写实现AI中强大的"任意渐变"! #Archives009

    Title/ CSS Background&Gradient完全指南 #Archives009 序: 关于 background 属性, 了解点CSS的人总会知道个大概. 但是你肯定多半还有点 ...

  7. maven打包war,导入本地jar包

    方法1: 一 . 在项目根目录创建lib文件夹,把jar放入lib文件夹中 二 . 在项目中使用本地jar pom文件配置如下: <properties> <project.buil ...

  8. C语言实现类似C++的容器vector

    C语言也能面向对象?不是C++是面向对象的么?其实C语言也能抽象成简单的面向对象方法,在Linux内核源码当中,底层的驱动代码.文件系统等皆采用了面向对象的封装技术,这样的好处是将客观的东西抽象出来, ...

  9. Spring Boot集成Redis集群(Cluster模式)

    目录 集成jedis 引入依赖 配置绑定 注册 获取redis客户端 使用 验证 集成spring-data-redis 引入依赖 配置绑定 注册 获取redis客户端 使用 验证 异常处理 同样的, ...

  10. vscode如何配置ts的lint,如何配置才能让eslint和prettier不冲突一键格式化代码(vue开发使用)

    最近在使用ts,发觉tslint在vscode上使用很不方便,不如eslint一键格式化高效,就想着能不能配置下vscode让其像写js一样爽 这篇文章主要解决2个问题,第一个是如何让vscode使用 ...