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 相关文章推荐
ie和firefox不兼容的解决方法集合
Apr 28 Javascript
用js控制组织结构图可以任意拖拽到指定位置
Jan 17 Javascript
jquery 实现input输入什么div图层显示什么
Jun 15 Javascript
node.js中的buffer.Buffer.isBuffer方法使用说明
Dec 14 Javascript
jQuery链使用指南
Jan 20 Javascript
轻量级网页遮罩层jQuery插件用法实例
Jul 31 Javascript
Javascript刷新窗口方法小结
Oct 21 Javascript
js 模仿锚点定位的实现方法
Nov 19 Javascript
JavaScript 监控微信浏览器且自带返回按钮时间
Nov 27 Javascript
在angular 6中使用 less 的实例代码
May 13 Javascript
vue实现通讯录功能
Jul 14 Javascript
Jquery的autocomplete插件用法及参数讲解
Mar 12 jQuery
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
使用PHP批量生成随机用户名
2008/07/10 PHP
PHP循环函数使用介绍之PHP基础入门教程
2013/09/21 PHP
Yii2 加载css、js 载静态资源的方法
2017/03/10 PHP
PHP连接及操作PostgreSQL数据库的方法详解
2019/01/30 PHP
PHP从零开始打造自己的MVC框架之路由类实现方法分析
2019/06/03 PHP
用JavaScript脚本实现Web页面信息交互
2006/10/11 Javascript
脚本吧 - 幻宇工作室用到js,超强推荐share.js
2006/12/23 Javascript
使用JavaScript动态设置样式实现代码(2)
2013/01/25 Javascript
SwfUpload在IE10上不出现上传按钮的解决方法
2013/06/25 Javascript
让jQuery Mobile不显示讨厌loading界面的方法
2014/02/19 Javascript
jQuery实现响应浏览器缩放大小并改变背景颜色
2014/10/31 Javascript
JavaScript实现将数组中所有元素连接成一个字符串的方法
2015/04/06 Javascript
利用vue实现模态框组件
2016/12/19 Javascript
微信小程序中实现一对多发消息详解及实例代码
2017/02/14 Javascript
nodejs开发——express路由与中间件
2017/03/24 NodeJs
简单快速的实现js计算器功能
2017/08/17 Javascript
AngularJS 中的数据源的循环输出
2017/10/12 Javascript
layui弹出框Tab选项卡的示例代码
2019/09/04 Javascript
Vue 实现一个简单的鼠标拖拽滚动效果插件
2020/12/10 Vue.js
[11:42]2018DOTA2国际邀请赛寻真——OG卷土重来
2018/08/17 DOTA
基于Python如何使用AIML搭建聊天机器人
2016/01/27 Python
python使用pyqt写带界面工具的示例代码
2017/10/23 Python
python+matplotlib实现动态绘制图片实例代码(交互式绘图)
2018/01/20 Python
一文带你了解Python中的字符串是什么
2018/11/20 Python
Python实现FLV视频拼接功能
2020/01/21 Python
tensorflow ckpt模型和pb模型获取节点名称,及ckpt转pb模型实例
2020/01/21 Python
Django在Model保存前记录日志实例
2020/05/14 Python
python 5个实用的技巧
2020/09/27 Python
把Anaconda中的环境导入到Pycharm里面的方法步骤
2020/10/30 Python
诗普兰迪官方网站:Splendid
2018/09/18 全球购物
.NET程序员的数据库面试题
2012/10/10 面试题
对象的序列化(serialization)类是面向流的,应如何将对象写入到随机存取文件中
2015/06/22 面试题
WSDL的操作类型主要有几种
2013/07/19 面试题
应届生求职信
2014/05/31 职场文书
爱国主义教育基地观后感
2015/06/18 职场文书
教师培训学习心得体会
2016/01/21 职场文书