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插件 autoComboBox 下拉框
Dec 22 Javascript
JS仿百度搜索自动提示框匹配查询功能
Nov 21 Javascript
全面解析Bootstrap中tooltip、popover的使用方法
Jun 13 Javascript
js注入 黑客之路必备!
Sep 14 Javascript
vue.js todolist实现代码
Oct 29 Javascript
JS面向对象的程序设计相关知识小结
May 26 Javascript
详解微信小程序框架wepy踩坑记录(与vue对比)
Mar 12 Javascript
微信小程序实现动态列表项的顺序加载动画
Jul 25 Javascript
Vue在chrome44偶现点击子元素事件无法冒泡的解决方法
Dec 15 Javascript
JS前端广告拦截实现原理解析
Feb 17 Javascript
javascript设计模式 ? 建造者模式原理与应用实例分析
Apr 10 Javascript
使用原生JS实现滚轮翻页效果的示例代码
May 31 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
frename PHP 灵活文件命名函数 frename
2009/09/09 PHP
修改php.ini不生效问题解决方法(上传大于8M的文件)
2013/06/14 PHP
php curl获取网页内容(IPV6下超时)的解决办法
2013/07/16 PHP
PHP  Yii清理缓存的实现方法
2016/11/10 PHP
php实现生成code128条形码的方法详解
2017/07/19 PHP
PHP中类与对象功能、用法实例解读
2020/03/27 PHP
jQuery getJSON 处理json数据的代码
2010/07/26 Javascript
让复选框只能选择一项的方法
2013/10/08 Javascript
JS保留两位小数 四舍五入函数的小例子
2013/11/20 Javascript
Javascript让DEDECMS告别手写Tag
2014/09/01 Javascript
js中confirm实现执行操作前弹出确认框的方法
2014/11/01 Javascript
JavaScript中的null和undefined区别介绍
2015/01/01 Javascript
如何判断出一个js对象是否一个dom对象
2016/11/24 Javascript
NodeJS处理Express中异步错误
2017/03/26 NodeJs
JavaScrip关于创建常量的知识点
2017/12/07 Javascript
JS封装的模仿qq右下角消息弹窗功能示例
2018/08/22 Javascript
Node.js fs模块(文件模块)创建、删除目录(文件)读取写入文件流的方法
2019/09/03 Javascript
Bootstrap table 服务器端分页功能实现方法示例
2020/06/01 Javascript
如何在 Vue 中使用 JSX
2021/02/14 Vue.js
vue脚手架项目创建步骤详解
2021/03/02 Vue.js
一个检测OpenSSL心脏出血漏洞的Python脚本分享
2014/04/10 Python
Python使用百度API上传文件到百度网盘代码分享
2014/11/08 Python
Python 实现字符串中指定位置插入一个字符
2018/05/02 Python
python3中函数参数的四种简单用法
2018/07/09 Python
python 公共方法汇总解析
2019/09/16 Python
python快速排序的实现及运行时间比较
2019/11/22 Python
Jupyter Notebook 实现正常显示中文和负号
2020/04/24 Python
Pycharm及python安装详细教程(图解)
2020/07/31 Python
新西兰杂志订阅:isubscribe
2019/08/26 全球购物
总经理文秘岗位职责
2014/02/03 职场文书
基层党组织公开承诺书
2014/03/28 职场文书
幼师求职自荐信
2014/05/31 职场文书
2015年爱国卫生工作总结
2015/04/22 职场文书
东京审判观后感
2015/06/01 职场文书
用python批量解压带密码的压缩包
2021/05/31 Python
Python中requests库的用法详解
2022/06/05 Python