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表单常用验证集合
Jan 16 Javascript
node.js中使用socket.io制作命名空间
Dec 15 Javascript
JavaScript实现更改网页背景与字体颜色的方法
Feb 02 Javascript
Bootstrap每天必学之js插件
Nov 30 Javascript
浅谈javascript中的三种弹窗
Oct 21 Javascript
JS实现复选框的全选和批量删除功能
Apr 05 Javascript
jQuery实现的页面遮罩层功能示例【测试可用】
Oct 14 jQuery
使用vue-route 的 beforeEach 实现导航守卫(路由跳转前验证登录)功能
Mar 22 Javascript
Vue项目部署在Spring Boot出现页面空白问题的解决方案
Nov 26 Javascript
Node.js如何对SQLite的async/await封装详解
Feb 14 Javascript
JavaScript多种页面刷新方法小结
Apr 04 Javascript
微信小程序导入Vant报错VM292:1 thirdScriptError的解决方法
Aug 01 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
DIY一个适配电脑声卡的动圈话筒放大器
2021/03/02 无线电
PHP基于递归实现的约瑟夫环算法示例
2017/08/27 PHP
Thinkphp5 微信公众号token验证不成功的原因及解决方法
2017/11/12 PHP
javascript动画效果类封装代码
2007/08/28 Javascript
url 编码 js url传参中文乱码解决方案
2010/04/11 Javascript
jquery等待效果示例
2014/05/01 Javascript
jQuery使用之处理页面元素用法实例
2015/01/19 Javascript
javascript变量声明实例分析
2015/04/25 Javascript
学习使用bootstrap基本控件(table、form、button)
2016/04/12 Javascript
正则表达式,替换所有HTML标签的简单实例
2016/11/28 Javascript
js图片加载效果实例代码(延迟加载+瀑布流加载)
2017/05/12 Javascript
实现div滚动条默认最底部以及默认最右边的示例代码
2017/11/15 Javascript
vue项目关闭eslint校验
2018/03/21 Javascript
微信小程序scroll-view点击项自动居中效果的实现
2020/03/25 Javascript
vue实现户籍管理系统
2020/05/29 Javascript
详解Vue中Axios封装API接口的思路及方法
2020/10/10 Javascript
[54:29]2018DOTA2亚洲邀请赛 4.7 淘汰赛 VP vs LGD 第二场
2018/04/09 DOTA
跟老齐学Python之关于循环的小伎俩
2014/10/02 Python
python装饰器decorator介绍
2014/11/21 Python
Ubuntu下创建虚拟独立的Python环境全过程
2017/02/10 Python
Python 窗体(tkinter)按钮 位置实例
2019/06/13 Python
解决pycharm 工具栏Tool中找不到Run manager.py Task的问题
2019/07/01 Python
Django 接收Post请求数据,并保存到数据库的实现方法
2019/07/12 Python
Python  Asyncio模块实现的生产消费者模型的方法
2021/03/01 Python
简单总结CSS3中视窗单位Viewport的常见用法
2016/02/04 HTML / CSS
澳大利亚牛仔裤商店:Just Jeans
2016/10/13 全球购物
美国南部最大的家族百货公司:Belk
2017/01/30 全球购物
希尔顿酒店中国网站:Hilton中国
2017/03/11 全球购物
巴西备受欢迎的服装和生活方式品牌:FARM Rio
2020/02/04 全球购物
医院护士求职自荐信格式
2013/09/21 职场文书
安全员岗位职责
2013/11/11 职场文书
司机工作自我鉴定
2014/09/19 职场文书
2014年客房部工作总结
2014/11/22 职场文书
授权委托书
2015/01/28 职场文书
2015年教师师德师风承诺书
2015/04/28 职场文书
2015新员工工作总结范文
2015/10/15 职场文书