当前位置: 首页 > news >正文

vue---基本原理(二)

1、slot的基础理解

        slot又名插槽,是vue的内容分发机制,组件内部的模板引擎使用slot元素作为承载分发的出口。是子组件的一个模板标签元素,而这一个标签元素是否显示,以及怎么显示,是由父元素控制的。slot又分为默认插槽、具名插槽、作用域插槽。

        默认插槽:即匿名插槽,slot没有指明name属性值,就是一个默认插槽。一个组件中只能有一个默认插槽。

        具名插槽:带有name属性值的插槽,一个组件中可以有多个具名插槽。

        作用域插槽:既可以是匿名插槽,又可以是具名插槽,该插槽的不同点在于是在子组件渲染作用域插槽时,可以将子组件内部的数据传递给父组件,让父组件根据子组件传递过来的数据,决定如何渲染该插槽。实现:当子组件实例化时,获取到父组件传入的slot内容,存放在vm.$slot中,默认插槽为vm.$slot.default,具名插槽为vm.$slot.name,当组件执行渲染函数时,遇到slot标签,使用$slot的内容进行替换,此时可为插槽传递数据。

2、常见的事件修饰符

  • .stop:等同于 JavaScript 中的event.stopPropagation(),防止事件冒泡;
  • .prevent:等同于 JavaScript 中的event.preventDefault(),防止执行预设的行为(如果事件可取消,则取消该事件,而不停止事件的进一步传播);
  • .capture:与事件冒泡的方向相反,事件捕获由外到内;
  • .self:只会触发自己范围内的事件,不包含子元素;
  • .once:只会触发一次

3、v-if、v-show、v-html的原理,即v-if、v-show的区别

  • v-if会调用addIfCondition方法,生成vnode的时候,会忽略对应节点,render的时候就不会渲染
  • v-show会生成vnode,render的时候会渲染成真是的节点,只是在render的过程中,会修改节点的display属性
  • v-html会先移除节点下的所有节点,调用html方法,通过addProp添加innerHTML属性,并设置值

        v-if与v-show的区别:

  • 手段:v-if是动态的向DOM树内添加或者删除DOM元素;v-show是通过设置DOM元素的display样式属性控制显隐;
  • 编译过程:v-if切换有一个局部编译/卸载的过程,切换过程中合适地销毁和重建内部的事件监听和子组件;v-show只是简单的基于css切换;
  • 编译条件:v-if是惰性的,如果初始条件为假,则什么也不做;只有在条件第一次变为真时才开始局部编译; v-show是在任何条件下,无论首次条件是否为真,都被编译,然后被缓存,而且DOM元素保留;
  • 性能消耗:v-if有更高的切换消耗;v-show有更高的初始渲染消耗;
  • 使用场景:v-if适合运营条件不大可能改变;v-show适合频繁切换。

 4、data为什么是一个函数而不是一个对象

        js中的对象是引用数据类型,当多个实例引用一个对象的时候,只要一个实例操作这个对象,其他实例中的数据也会发生变化。vue中,数据以函数返回值的形式定义,当复用组件时,会返回一个新的data,即每个组件有自己的私有数据空间,不会感染其他组件的操作。

5、vue单页面与多页面的区别

  • SPA单页面应用:指只有一个主页面的应用,一开始只需要加载一次js、css等相关资源。所有内容都包含在主页面中,对每一个模块功能组件化。单页面应用跳转,就是切换相关组件,仅刷新局部资源。
  • MPA多页面应用:指有多个独立页面的应用,每个页面要重复加载js、css等相关资源。多页面跳转,需要整页刷新资源。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 虚拟机交叉编译基于ARM平台的opencv(ffmpeg/x264)
  • vue前端通过sessionStorage缓存字典
  • 概率统计(二)
  • Java请求webService,IDEA生成客户端调用代码
  • 隔离级别-隔离级别中的锁协议、隔离级别类型、隔离级别的设置、隔离级别应用
  • ssrf结合redis未授权getshell
  • C语言-动态内存管理
  • Leetcode 3213. Construct String with Minimum Cost
  • 开源模型应用落地-LangChain高阶-智能体探究-agent类型(一)
  • 【Linux】解锁权限的神秘面纱,让你的系统更安全、更高效!
  • 多线程爬虫技术详解
  • 数据结构--二叉树和堆
  • Python语法基础
  • 微信小程序-组件样式隔离
  • Docker的安装及使用摘要
  • 网络传输文件的问题
  • 2018一半小结一波
  • Akka系列(七):Actor持久化之Akka persistence
  • classpath对获取配置文件的影响
  • Docker 1.12实践:Docker Service、Stack与分布式应用捆绑包
  • Javascripit类型转换比较那点事儿,双等号(==)
  • JavaSE小实践1:Java爬取斗图网站的所有表情包
  • JS 面试题总结
  • node入门
  • oldjun 检测网站的经验
  • Python_OOP
  • Spark学习笔记之相关记录
  • 前端每日实战:61# 视频演示如何用纯 CSS 创作一只咖啡壶
  • 微信小程序上拉加载:onReachBottom详解+设置触发距离
  • Spring第一个helloWorld
  • #我与Java虚拟机的故事#连载18:JAVA成长之路
  • (11)MATLAB PCA+SVM 人脸识别
  • (14)目标检测_SSD训练代码基于pytorch搭建代码
  • (C语言)深入理解指针2之野指针与传值与传址与assert断言
  • (C语言)输入自定义个数的整数,打印出最大值和最小值
  • (博弈 sg入门)kiki's game -- hdu -- 2147
  • (附源码)ssm基于jsp的在线点餐系统 毕业设计 111016
  • (附源码)ssm考试题库管理系统 毕业设计 069043
  • (附源码)计算机毕业设计SSM保险客户管理系统
  • (生成器)yield与(迭代器)generator
  • (已解决)什么是vue导航守卫
  • (转)Sublime Text3配置Lua运行环境
  • .NET的数据绑定
  • .net经典笔试题
  • .net流程开发平台的一些难点(1)
  • .NET上SQLite的连接
  • .NET序列化 serializable,反序列化
  • /bin/rm: 参数列表过长"的解决办法
  • /proc/interrupts 和 /proc/stat 查看中断的情况
  • @FeignClient 调用另一个服务的test环境,实际上却调用了另一个环境testone的接口,这其中牵扯到k8s容器外容器内的问题,注册到eureka上的是容器外的旧版本...
  • @param注解什么意思_9000字,通俗易懂的讲解下Java注解
  • @property @synthesize @dynamic 及相关属性作用探究
  • @Query中countQuery的介绍
  • []FET-430SIM508 研究日志 11.3.31
  • [22]. 括号生成