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 &amp; DHTML 实例编程(教程)基础知识
Jun 02 Javascript
理解Javascript_12_执行模型浅析
Oct 18 Javascript
基于jquery的修改当前TAB显示标题的代码
Dec 11 Javascript
jquery键盘事件介绍
Jan 31 Javascript
js三种排序算法分享
Aug 16 Javascript
JQuery操作单选按钮以及复选按钮示例
Sep 23 Javascript
在Html中使用Requirejs进行模块化开发实例详解
Apr 15 Javascript
vue组件发布到npm简单步骤
Nov 30 Javascript
通过layer实现可输入的模态框的例子
Sep 27 Javascript
Jquery属性的获取/设置及样式添加/删除操作技巧分析
Dec 23 jQuery
微信小程序scroll-view隐藏滚动条的方法详解
Mar 25 Javascript
使用Webpack 搭建 Vue3 开发环境过程详解
Jul 28 Javascript
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
FCKeditor的安装(PHP)
2007/01/13 PHP
PHP校验ISBN码的函数代码
2011/01/17 PHP
php自定义函数call_user_func和call_user_func_array详解
2011/07/14 PHP
解析yahoo邮件用phpmailer发送的实例
2013/06/24 PHP
php解决抢购秒杀抽奖等大流量并发入库导致的库存负数的问题
2014/06/19 PHP
php中实现可以返回多个值的函数实例
2015/03/21 PHP
PHPStrom中实用的功能和快捷键大全
2015/09/23 PHP
PHP进阶学习之反射基本概念与用法分析
2019/06/18 PHP
一个简单的JavaScript 日期计算算法
2009/09/11 Javascript
关于this和self的使用说明
2010/08/01 Javascript
js封装可使用的构造函数继承用法分析
2015/01/28 Javascript
JavaScript实现的encode64加密算法实例分析
2015/04/15 Javascript
Bootstrap自定义文件上传下载样式
2016/05/26 Javascript
基于js对象,操作属性、方法详解
2016/08/11 Javascript
深入浅析JavaScript中的3DES
2016/08/24 Javascript
基于bootstrap-datetimepicker.js不支持IE8的快速解决方法
2016/11/07 Javascript
详解js中常规日期格式处理、月历渲染和倒计时函数
2016/12/28 Javascript
Nodejs中crypto模块的安全知识讲解
2018/01/03 NodeJs
简单通过settimeout看javascript的运行机制
2019/05/10 Javascript
JS实现数组删除指定元素功能示例
2019/06/05 Javascript
[46:20]CHAOS vs Alliacne 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
python自动化测试之连接几组测试包实例
2014/09/28 Python
python2与python3共存问题的解决方法
2018/09/18 Python
Ubuntu18.04下python版本完美切换的解决方法
2019/06/14 Python
python实现发送form-data数据的方法详解
2019/09/27 Python
python列表推导和生成器表达式知识点总结
2020/01/10 Python
StubHub智利:购买和出售您的门票
2016/11/23 全球购物
精选奢华:THE LIST
2019/09/05 全球购物
2014年健康教育实施方案
2014/02/17 职场文书
工程技术员岗位职责
2015/04/11 职场文书
2015年维修电工工作总结
2015/04/25 职场文书
淮海战役观后感
2015/06/11 职场文书
积极心理学课程心得体会
2016/01/22 职场文书
导游词之澳门妈祖庙
2019/12/19 职场文书
老生常谈 使用 CSS 实现三角形的技巧(多种方法)
2021/04/13 HTML / CSS
React自定义hook的方法
2022/06/25 Javascript