VUE重点问题总结


Posted in Javascript onMarch 19, 2018

1、组件三种挂载方式

自动挂载

var app3 = new Vue({
 el: '#app-3',
 data: {
 seen: true
 }
})

手动挂载

// 可以实现延迟按需挂载
<div id="app"> {{name}} </div> 
<button onclick="test()">挂载</button> 
<script> 
 var obj= {name: '张三'} 
 var vm = new Vue({ 
 data: obj
 }) 
 function test() { 
 vm.$mount("#app"); 
 }
// Vue.extend()创建没有挂载的的子类,可以使用该子累创建多个实例
var app= Vue.extend({ 
 template: '<p>{{message}}</p>', 
 data: function () { 
 return { 
  message: 'message'
  } 
 } 
 }) 
 new app().$mount('#app') // 创建 app实例,并挂载到一个元素上

2、路由传递参数的方式

<p>
  <!-- query要用path来引入,params要用name来引入,故不能写为 :to="{path:'/login',params: {isLogin: true}} -->
  <!-- 跳转路由时用this.$router: this.$router.push({name:"login",params:{isLogin:true}});this.$router.push({path: '/login', query: {isLogin : true}}); -->
  <!-- 接收参数时用this.$route: this.$route.query.isLogin 和 this.$route.params.isLogin; -->
  <router-link :to="{name:'login',params: {isLogin: true}}">亲,请登录</router-link>
  <router-link :to="{name:'login',params: {isLogin: false}}">免费注册</router-link>
 </p>
 <!-- 路由出口, 路由匹配到的组件将渲染在这里 -->
 <router-view></router-view>

3、对render:h => h(App)的理解

render:h=>h(App)是ES6中的箭头函数写法,等价于render:function(h){return h(App);}.

1.箭头函数中的this是 指向 包裹this所在函数外面的对象上。

2.h是creatElement的别名,vue生态系统的通用管理

3.template:‘<app/>',components:{App}配合使用与单独使用render:h=>h(App)会达到同样的效果

前者识别<template>标签,后者直接解析template下的id为app的div(忽略template的存在)

new Vue({
 el: '#app', // 相当于 new Vue({}).$mount('#app');
 template: '<App/>', // 1、可以通过在 #app 内加入<app></app>替代 2、或者 通过 render: h => h(App) 渲染一个视图,然后提供给el挂载
 components: { // vue2中可以通过 render: h => h(App) 渲染一个视图,然后提供给el挂载
  App
 }
});

4、Vue.nextTick()的理解

与DOM相关操作写在该函数回调中,确保DOM已渲染

nextTick的由来:

由于VUE的数据驱动视图更新,是异步的,即修改数据的当下,视图不会立刻更新,而是等同一事件循环中的所有数据变化完成之后,再统一进行视图更新。

nextTick的触发时机:

在同一事件循环中的数据变化后,DOM完成更新,立即执行nextTick(callback)内的回调。

应用场景:

需要在视图更新之后,基于新的视图进行操作。

在Vue生命周期的created()钩子函数进行的DOM操作一定要放在Vue.nextTick()的回调函数中。原因是什么呢,原因是在created()钩子函数执行的时候DOM 其实并未进行任何渲染,而此时进行DOM操作无异于徒劳,所以此处一定要将DOM操作的js代码放进Vue.nextTick()的回调函数中。与之对应的就是mounted钩子函数,因为该钩子函数执行时所有的DOM挂载和渲染都已完成,此时在该钩子函数中进行任何DOM操作都不会有问题 。

在数据变化后要执行的某个操作,而这个操作需要使用随数据改变而改变的DOM结构的时候,这个操作都应该放进Vue.nextTick()的回调函数中。

简单总结事件循环:

同步代码执行 -> 查找异步队列,推入执行栈,执行callback1[事件循环1] ->查找异步队列,推入执行栈,执行callback2[事件循环2]...即每个异步callback,最终都会形成自己独立的一个事件循环。结合nextTick的由来,可以推出每个事件循环中,nextTick触发的时机:

Javascript 相关文章推荐
JavaScript 动态添加表格行 使用模板、标记
Oct 24 Javascript
简单的代码实现jquery定时器
Nov 17 Javascript
jquery垂直公告滚动实现代码
Dec 08 Javascript
深入理解Javascript中this的作用域
Aug 12 Javascript
使用jQuery Rotare实现微信大转盘抽奖功能
Jun 20 Javascript
Javascript实现图片懒加载插件的方法
Oct 20 Javascript
jQuery插件autocomplete使用详解
Feb 04 Javascript
angularjs实现简单的购物车功能
Sep 21 Javascript
详解bootstrap用dropdown-menu实现上下文菜单
Sep 22 Javascript
一个简易时钟效果js实现代码
Mar 25 Javascript
JS操作json对象key、value的常用方法分析
Oct 29 Javascript
vue中三级导航的菜单权限控制
Mar 31 Vue.js
p5.js入门教程之键盘交互
Mar 19 #Javascript
vue 实现的树形菜的实例代码
Mar 19 #Javascript
Servlet3.0与纯javascript通过Ajax交互的实例详解
Mar 18 #Javascript
jQuery替换节点元素的操作方法
Mar 18 #jQuery
使用Angular CLI生成 Angular 5项目教程详解
Mar 18 #Javascript
分析javascript原型及原型链
Mar 18 #Javascript
jquery 实现拖动文件上传加载进度条功能
Mar 18 #jQuery
You might like
DC《神奇女侠2》因疫情推迟上映 温子仁新恐怖片《恶性》撤档
2020/04/09 欧美动漫
用PHP制作静态网站的模板框架(二)
2006/10/09 PHP
php 生成短网址原理及代码
2014/01/23 PHP
php图片处理函数获取类型及扩展名实例
2014/11/19 PHP
在Windows系统下使用PHP生成Word文档的教程
2015/07/03 PHP
一键生成各种尺寸Icon的php脚本(实例)
2017/02/08 PHP
PHP文件操作简单介绍及函数汇总
2020/12/11 PHP
文本链接逐个出现的js脚本
2007/12/12 Javascript
图片连续滚动代码[兼容IE/firefox]
2009/06/11 Javascript
jQuery 获取URL参数的插件
2010/03/04 Javascript
javascript与cookie 的问题详解
2013/11/11 Javascript
JS组件Bootstrap实现弹出框和提示框效果代码
2015/12/08 Javascript
在微信、支付宝、百度钱包实现点击返回按钮关闭当前页面和窗口的方法
2016/08/05 Javascript
JS实现用户注册时获取短信验证码和倒计时功能
2016/10/27 Javascript
Bootstrap CSS布局之列表
2016/12/15 Javascript
jQuery实现简单漂亮的Nav导航菜单效果
2017/03/29 jQuery
js中int和string数据类型互相转化实例
2019/01/16 Javascript
Jquery遍历筛选数组的几种方法和遍历解析json对象,Map()方法详解以及数组中查询某值是否存在
2019/01/18 jQuery
解决vue路由name同名,路由重复的问题
2020/08/05 Javascript
浅谈Ant Design Pro 菜单自定义 icon
2020/11/17 Javascript
Python执行时间的计算方法小结
2017/03/17 Python
python模糊图片过滤的方法
2018/12/14 Python
ITK 实现多张图像转成单个nii.gz或mha文件案例
2020/07/01 Python
Python程序慢的重要原因
2020/09/04 Python
企划经理的岗位职责
2013/11/17 职场文书
园林施工员岗位职责
2013/12/11 职场文书
给全校老师的建议书
2014/03/13 职场文书
人事任命书范文
2014/06/04 职场文书
书法大赛策划方案
2014/06/04 职场文书
大学运动会加油稿200字(5篇)
2014/09/27 职场文书
网站出售协议书范文
2014/10/10 职场文书
2014年学校体育工作总结
2014/12/08 职场文书
感恩父母主题班会
2015/08/12 职场文书
学生会副主席竞选稿
2015/11/19 职场文书
Python 文本滚动播放器的实现代码
2021/04/25 Python
pandas数值排序的实现实例
2021/07/25 Python