[vue] vue为什么要求组件模板只能有一个根元素?

[vue] vue为什么要求组件模板只能有一个根元素?

‘为什么只能有且只有一个根元素’于是我花了二十多分钟去找了一下答案......竟然没有找到答案....好的现在我来说说我的理解,如果有不对的地方欢迎指出。我觉得这个问题需要从两个方面来说起:1.new Vue({el:'#app'})2.单文件组件中,template下的元素div一、当我们实例化Vue的时候,填写一个el选项,来指定我们的SPA入口:let vm = new Vue({el:'#app'
})同时我们也会在body里面新增一个id为app的div<body><div id='app'></div>
</body>这很好理解,就是为vue开启一个入口,那我们不妨来想想,如果我在body下这样<body><div id='app1'></div><div id='app2'></div>
</body>Vue其实并不知道哪一个才是我们的入口,因为对于一个入口来讲,这个入口就是一个‘Vue类’,Vue需要把这个入口里面的所有东西拿来渲染,处理,最后再重新插入到dom中。
如果同时设置了多个入口,那么vue就不知道哪一个才是这个‘类’。二、当我们在webpack搭建的vue开发环境下,使用单文件组件时,你可能会这样:<template><div class='component'></div>
</template>那这里为什么template下也必须有且只能有一个div呢?这里我们要先看一看template这个标签,这个标签是HTML5出来的新标签,它有三个特性:1.隐藏性:该标签不会显示在页面的任何地方,即便里面有多少内容,它永远都是隐藏的状态;2.任意性:该标签可以写在页面的任何地方,甚至是head、body、sciprt标签内;3.无效性:该标签里的任何HTML内容都是无效的,不会起任何作用;但是呢,你可以通过innerHTML来获取到里面的内容。知道了这个,我们再来看.vue的单文件组件。其实本质上,一个单文件组件,本质上(我认为)会被各种各样的loader处理成为.js文件(因为当你import一个单文件组件并打印出来的时候,是一个vue实例),通过template的任意性我们知道,template包裹的HTML可以写在任何地方,那么对于一个.vue来讲,这个template里面的内容就是会被vue处理为虚拟dom并渲染的内容,导致结果又回到了开始 :既然一个.vue单文件组件是一个vue实例,那么这个实例的入口在哪里?如果在template下有多个div,那么该如何指定这个vue实例的根入口?
为了让组件能够正常的生成一个vue实例,那么这个div会被自然的处理成程序的入口。通过这个‘根节点’,来递归遍历整个vue‘树’下的所有节点,并处理为vdom,最后再渲染成真正的HTML,插入在正确的位置

个人简介

我是歌谣,欢迎和大家一起交流前后端知识。放弃很容易,
但坚持一定很酷。欢迎大家一起讨论

主目录

与歌谣一起通关前端面试题

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/412139.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java面试技术问题_11个JAVA面试中常见技术问题

原标题&#xff1a;11个JAVA面试中常见技术问题大家在平常面试java的过程中都会遇到哪些难题呢&#xff1f;还有一些即将去面试java的童鞋们&#xff0c;你们想知道技术面试中会涉及到哪些点吗&#xff1f;达妹为你整理Java面试中会被问到的几个技术难题。1、一个".java&q…

终于用到DataGrid了,比较郁闷

我用的是windows窗体的DataGrid控件在显示时间的时候&#xff0c;不显示具体的小时/分钟/秒上网查资料&#xff0c;介绍的都是web下的DataGrid如何现实&#xff0c;form下的不能用这些办法谁能帮帮我谢谢~~转载于:https://www.cnblogs.com/foreverpk/archive/2006/03/16/351759…

[vue] EventBus注册在全局上时,路由切换时会重复触发事件,如何解决呢?

[vue] EventBus注册在全局上时&#xff0c;路由切换时会重复触发事件&#xff0c;如何解决呢&#xff1f; 建议在created里注册&#xff0c;在beforeDestory移出个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷。欢迎大家…

Java list接口

list中的元素可以重复&#xff0c;父接口是collection&#xff0c;实现类是&#xff1a;arraylist和vector。 arraylist&#xff1a; package com.jike.list;import java.util.ArrayList; import java.util.List;public class ListDemo01 {public static void main(String[] ar…

java treemap api_Java 8 Stream API toMap转换为TreeMap

public class Message {private int id;private User sender;private User receiver;private String text;private Date senddate;..}我有List list new ArrayList<>();我需要将它们转换为TreeMap> map我知道如何使用转换为HashMaplist.stream().collect(Collectors.g…

苏州游记

已经很久没有更新这里了&#xff0c;懒哦&#xff01;上周末一干人等去了苏州的三山岛&#xff0c;很是开心&#xff0c;春天来了&#xff0c;到处都是那么的生机盎然&#xff01;三山岛是太湖上若干岛屿之一&#xff0c;离苏州城很远&#xff0c;我们乘了50分钟的火车后&#…

java 图片合成 红色失真_Java - 处理某些图片泛红

参考博文&#xff1a;http://blog.csdn.net/kobejayandy/article/details/44346809http://blog.csdn.net/shixing_11/article/details/6897871http://blog.csdn.net/cuihailiang/article/details/52037389问题现象&#xff1a;Java上传图片时&#xff0c;对某些图片进行缩放、裁…

markdown 转义字符

\\ 反斜杠   \ 反引号   \* 星号   \_ 下划线   \{\} 大括号   \[\] 中括号   \(\) 小括号   \# 井号   \ 加号   \- 减号   \. 英文句号   \! 感叹号 转载于:https://www.cnblogs.com/willingtolove/p/10456027.html

[vue] 怎么修改vue打包后生成文件路径?

[vue] 怎么修改vue打包后生成文件路径&#xff1f; webpack&#xff1a;output.path vue-cli3: outputDir个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷。欢迎大家一起讨论 主目录 与歌谣一起通关前端面试题

[ERROR]在删除BizTalk主机之前必须删除其所有实例?

在删除时报错如下&#xff1a;------------------------------------无法从 MessageBox 数据库服务器“BLADE14”&#xff0f;数据库名称“BizTalkMsgBoxDb”删除与 BizTalk 主机“OrchestrateServiceDeskEventHost”关联的数据库对象。在删除 BizTalk 主机之前必须删除其所有实…

[vue] 说说你对vue的mixin的理解,有什么应用场景?

[vue] 说说你对vue的mixin的理解&#xff0c;有什么应用场景&#xff1f; mixins 就是混入。一个混入对象可以包含任意组件选项。同一个生命周期&#xff0c;混入对象会比组件的先执行。//暴露两个mixins对象 export const mixinsTest1 {methods: {hello1() {console.log(&qu…

cadence 旋转快捷键_cadence原理图快捷键

原标题&#xff1a;cadence原理图快捷键Allegro Design Entry CIS 原理图1.shift鼠标滚轮 左右移动2.Ctrl鼠标滚轮 放大缩小3.Alt鼠标滚轮 上下移动4.按下鼠标滚轮可任意方向拖动图纸(可以一直保持按下状态或者按一下松开)5.CTRL鼠标左键 &#xff1a; 元件叠选6.CTRL鼠标左键拖…

Lab 11-1

Analyze the malware found in Lab11-01.exe. Questions and Short Answers What does the malware drop to disk? A: The malware extracts and drops the file msgina32.dll onto disk from a resource section named TGAD.How does the malware achieve persistence? A: T…

复制服务器的配置

设置SQL Server复制服务器时&#xff0c;必须执行几项任务来确保复制会按计划运作。以下是必须完成的工作列表&#xff1a;1。确保在分发服务器上有足够的内存空间。2。确保分发服务器上的工作目录对于分发服务器是可见的。缺省的工作目录\MSSQL\REPLDATA&#xff0c;这个目录存…

[vue] watch怎么深度监听对象变化

[vue] watch怎么深度监听对象变化 deep设置为true 就可以监听到对象的变化let vmnew Vue({el:"#first",data:{msg:{name:北京}},watch:{msg:{handler (newMsg,oldMsg){console.log(newMsg);},immediate:true,deep:true}}})个人简介 我是歌谣&#xff0c;欢迎和大家一…

head first java原文_Head First Java

条件语句&和|可以用作条件语句&#xff0c;但是是长连接&#xff0c;左右两边的表达式必须都执行完&#xff01;这和&&和||不同&#xff0c;&&和||是短连接&#xff0c;只要左边的表达式已经能够计算出整个表达式的结果&#xff0c;右边的表达式就不会执行…

C#操作XML

已知有一个XML文件&#xff08;bookstore.xml&#xff09;如下&#xff1a; <?xml version"1.0"encoding"gb2312"?><bookstore><book genre"fantasy"ISBN"2-3631-4"><title>Oberons Legacy</title> &…

[vue] $nextTick有什么作用?

[vue] $nextTick有什么作用&#xff1f; 处理数据动态变化后&#xff0c;dom还未及时更新的问题。nexttick就可以获取到数据更新后最新的dom变化个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷。欢迎大家一起讨论 主目…

java 覆盖和隐藏_Java方法的覆盖与隐藏的区别分析

本篇文章介绍了&#xff0c;关于Java方法的覆盖与隐藏的区别分析。需要的朋友参考下关于隐藏和覆盖的区别&#xff0c;要提到RTTI(run-time type identification)(运行期类型检查)&#xff0c;也就是运行期的多态&#xff0c;当一个父类引用指向子类对象的时候&#xff0c;请看…

20175204 张湲祯 2018-2019-2《Java程序设计》 第一周学习总结

20175204 张湲祯 2018-2019-2《Java程序设计》第一周学习总结 教材学习内容总结 -第一章Java入门要点&#xff1a; -Java的地位&#xff1a;具有面向对象&#xff0c;与平台无关&#xff0c;安全稳定和多线程等优良特性&#xff0c;是软件设计中优秀的编程语言。 -Java的特点&a…