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在IE或Firefox下获取鼠标位置的代码
Dec 18 Javascript
JavaScript 存在陷阱 删除某一区域所有节点
May 10 Javascript
jquery 年会抽奖程序
Dec 22 Javascript
javascript全局变量封装模块实现代码
Nov 28 Javascript
网页中返回顶部代码(多种方法)另附注释说明
Apr 24 Javascript
jQuery 实现ajax传入参数含有特殊字符的方法总结
Oct 17 Javascript
深入解析Vue 组件命名那些事
Jul 18 Javascript
Vue父组件调用子组件事件方法
Feb 23 Javascript
JavaScript递归函数解“汉诺塔”算法代码解析
Jul 05 Javascript
JS实现根据数组对象的某一属性排序操作示例
Jan 14 Javascript
使用Vue中 v-for循环列表控制按钮隐藏显示功能
Apr 23 Javascript
js根据后缀判断文件文件类型的代码
May 09 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读取3389的脚本
2014/05/06 PHP
php-redis中的sort排序函数总结
2015/07/08 PHP
LINUX下PHP程序实现WORD文件转化为PDF文件的方法
2016/05/13 PHP
限制复选框的最大可选数
2006/07/01 Javascript
用JS实现的一个include函数
2007/07/21 Javascript
Jquery css函数用法(判断标签是否拥有某属性)
2011/05/28 Javascript
JQuery select控件的相关操作实现代码
2012/09/14 Javascript
Javascript核心读书有感之词法结构
2015/02/01 Javascript
浅谈Javascript线程及定时机制
2015/07/02 Javascript
JS动态添加iframe的代码
2015/09/14 Javascript
深入理解js中this的用法
2016/05/28 Javascript
jQuery插件实现文件上传功能(支持拖拽)
2020/08/27 Javascript
基于Node.js实现压缩和解压缩的方法
2018/02/13 Javascript
深入理解Vue 组件之间传值
2018/08/16 Javascript
npm配置国内镜像资源+淘宝镜像的方法
2018/09/07 Javascript
webpack4.x下babel的安装、配置及使用详解
2019/03/07 Javascript
elementui之el-tebs浏览器卡死的问题和使用报错未注册问题
2019/07/06 Javascript
解决VUE双向绑定失效的问题
2019/10/29 Javascript
[42:50]NB vs VP 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
Python中函数的多种格式和使用实例及小技巧
2015/04/13 Python
Python搭建APNS苹果推送通知推送服务的相关模块使用指南
2016/06/02 Python
详解Python3操作Mongodb简明易懂教程
2017/05/25 Python
Python通过for循环理解迭代器和生成器实例详解
2019/02/16 Python
python中logging模块的一些简单用法的使用
2019/02/22 Python
win10下opencv-python特定版本手动安装与pip自动安装教程
2020/03/05 Python
HTML5响应式(自适应)网页设计的实现
2017/11/17 HTML / CSS
印尼美容产品购物网站:PerfectBeauty.id
2017/12/01 全球购物
Servlet方面面试题
2016/09/28 面试题
网络工程与软件技术毕业生自荐信
2013/09/24 职场文书
装修设计师求职信
2014/02/26 职场文书
中学生操行评语大全
2014/04/24 职场文书
多媒体教室标语
2014/06/26 职场文书
幼儿园安全教育月活动总结
2015/05/08 职场文书
2016大学优秀学生干部事迹材料
2016/03/01 职场文书
html5移动端禁止长按图片保存的实现
2021/04/20 HTML / CSS
Centos环境下Postgresql 安装配置及环境变量配置技巧
2021/05/18 PostgreSQL