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 相关文章推荐
jQuery解决iframe高度自适应代码
Dec 20 Javascript
借助script进行Http跨域请求:JSONP实现原理及代码
Mar 19 Javascript
Flex通过JS获取客户端IP和计算机名的实例代码
Nov 21 Javascript
js中定义一个变量并判断其是否为空的方法
May 13 Javascript
Javascript removeChild()删除节点及删除子节点的方法
Dec 27 Javascript
Bootstrap导航条可点击和鼠标悬停显示下拉菜单的实现代码
Jun 23 Javascript
JS取数字小数点后两位或n位的简单方法
Oct 24 Javascript
jQuery加载及解析XML文件的方法实例分析
Jan 22 Javascript
深入理解移动前端开发之viewport
Oct 19 Javascript
npm qs模块使用详解
Feb 07 Javascript
Vue props中Object和Array设置默认值操作
Jul 30 Javascript
JS前端使用canvas实现物体的点选示例
Aug 05 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
教你如何使用php session
2013/10/28 PHP
PHP获取当前相对于域名目录的方法
2015/06/26 PHP
利用PHP绘图函数实现简单验证码功能的方法
2016/10/18 PHP
用js实现的页面关键字密度查询代码
2007/12/27 Javascript
解决extjs在firefox中关闭窗口再打开后iframe中js函数访问不到的问题
2008/11/06 Javascript
js动态创建表格,删除行列的小例子
2013/07/20 Javascript
jquery实现带复选框的表格行选中删除时高亮显示
2013/08/01 Javascript
Node.js和PHP根据ip获取地理位置的方法
2014/03/14 Javascript
jQuery 回调函数(callback)的使用和基础
2015/02/26 Javascript
JavaScript实现Iterator模式实例分析
2015/06/09 Javascript
jQuery实现默认是闭合的FAQ展开效果菜单
2015/09/14 Javascript
基于Node.js实现nodemailer邮件发送
2016/01/26 Javascript
javascript 网页进度条简单实例
2017/02/22 Javascript
详解使用vue脚手架工具搭建vue-webpack项目
2017/05/10 Javascript
vue中的scope使用详解
2017/10/29 Javascript
jQuery模拟12306城市选择框功能简单实现方法示例
2018/08/13 jQuery
jQuery实现回到顶部效果
2020/10/19 jQuery
[15:15]教你分分钟做大人:狙击手
2014/10/30 DOTA
python实现apahce网站日志分析示例
2014/04/02 Python
详解Python2.x中对Unicode编码的使用
2015/04/03 Python
Python FTP两个文件夹间的同步实例代码
2018/05/25 Python
python实现批量处理将图片粘贴到另一张图片上并保存
2019/12/12 Python
Tkinter中复选菜单是否被选中的判断与设置方式
2020/03/04 Python
python实现数学模型(插值、拟合和微分方程)
2020/11/13 Python
Numpy ndarray 多维数组对象的使用
2021/02/10 Python
Herschel美国官网:背包、手提袋及配件
2020/03/10 全球购物
资生堂英国官网:Shiseido英国
2020/12/30 全球购物
计算机求职信
2013/12/01 职场文书
查环查孕证明
2014/01/10 职场文书
初中物理教学反思
2014/01/14 职场文书
大学毕业感言50字
2014/02/07 职场文书
幼儿园教师工作感言
2014/02/15 职场文书
政风行风建设责任书
2014/07/23 职场文书
人工作失职检讨书
2015/05/05 职场文书
经典爱情感言
2015/08/03 职场文书
温馨祝福晨语:美丽的一天从我的问候开始
2019/11/28 职场文书