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 Array(数组)相关方法简述
Jul 25 Javascript
js网页中的(运行代码)功能实现思路
Feb 04 Javascript
IE6下opacity与JQuery的奇妙结合
Mar 01 Javascript
jquery ajax修改全局变量示例代码
Nov 08 Javascript
浅谈JavaScript Array对象
Dec 29 Javascript
整理AngularJS框架使用过程当中的一些性能优化要点
Mar 05 Javascript
基于Vue2.0的分页组件
Mar 16 Javascript
详解js几个绕不开的事件兼容写法
Aug 30 Javascript
vue.js动画中的js钩子函数的实现
Jul 06 Javascript
原生JS实现的简单轮播图功能【适合新手】
Aug 17 Javascript
Node.js如何对SQLite的async/await封装详解
Feb 14 Javascript
原生javascript如何实现共享onload事件
Jul 03 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代码实现爬虫记录――超管用
2015/07/31 PHP
thinkPHP使用post方式查询时分页失效的解决方法
2015/12/09 PHP
PHP使用数组依次替换字符串中匹配项
2016/01/08 PHP
PHP实现字符串大小写转函数的功能实例
2019/02/06 PHP
thinkPHP框架乐观锁和悲观锁实例分析
2019/10/30 PHP
javascript css在IE和Firefox中区别分析
2009/02/18 Javascript
javascript 操作select下拉列表框的一点小经验
2010/03/20 Javascript
jquery+ashx无刷新GridView数据显示插件(实现分页、排序、过滤功能)
2010/04/25 Javascript
Javascript中正则表达式的全局匹配模式分析
2011/04/26 Javascript
制作jquery遮罩层效果导航菜单代码分享
2013/12/25 Javascript
jquery实现ajax提交form表单的方法总结
2014/03/03 Javascript
基于jQuery实现的图片切换焦点图整理
2014/12/07 Javascript
jQuery插件实现表格隔行变色及鼠标滑过高亮显示效果代码
2016/02/25 Javascript
AngularJS基础 ng-repeat 指令简单示例
2016/08/03 Javascript
理解javascript async的用法
2017/08/22 Javascript
在vue项目中引入vue-beauty操作方法
2019/02/11 Javascript
如何在Python函数执行前后增加额外的行为
2016/10/20 Python
[原创]教女朋友学Python(一)运行环境搭建
2017/11/29 Python
使用Python通过win32 COM实现Word文档的写入与保存方法
2018/05/08 Python
几行Python代码爬取3000+上市公司的信息
2019/01/24 Python
Django中信号signals的简单使用方法
2019/07/04 Python
pytorch打印网络结构的实例
2019/08/19 Python
Django实现whoosh搜索引擎使用jieba分词
2020/04/08 Python
利用keras使用神经网络预测销量操作
2020/07/07 Python
美国宠物美容和宠物用品购物网站:Cherrybrook
2018/12/07 全球购物
银行毕业实习自我鉴定
2013/09/19 职场文书
领导干部对照检查材料
2014/08/24 职场文书
2014应届本科生自我评价
2014/09/13 职场文书
项目建议书
2015/02/04 职场文书
内勤岗位职责
2015/02/10 职场文书
学校清洁工岗位职责
2015/04/15 职场文书
学校财务管理制度
2015/08/04 职场文书
入党申请书怎么写?
2019/06/11 职场文书
解决MySQL添加新用户-ERROR 1045 (28000)的问题
2022/03/03 MySQL
MySQL数据库 任意ip连接方法
2022/05/20 MySQL
Typescript类型系统FLOW静态检查基本规范
2022/05/25 Javascript