Vue之非单文件组件介绍
简介
主要介绍非单文件组件的方式创建Vue组件、使用。
非单文件组件指的是一个文件中包含多个vue组件。
非单文件组件实际上是html文件。
使用组件化主要分为三步:
- 编写组件。
- 注册组件。
- 使用组件(组件标签)。
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>非单文件组件</title>
</head>
<body><div id="root1"><!-- 第三步:使用组件,也就是使用组件标签,标签名是注册主键时使用的key --><school></school><hr><student></student></div><!-- <div id="root2"></div> --><script src="./js/vue.js"></script><script>Vue.config.productionTip = false;//这里是第一步,创建组件,使用Vue.extend函数进行创建,传入一个配置对象// 创建组件有一个注意点是传入的配置对象不能配置el配置项,因为组件时不属于谁的,到时使用时由vue实例确定在哪使用。// 创建组件第二个注意点是,data数据必须写成函数的形式,并且函数返回一个对象。const school = Vue.extend({//配置组件使用的模板,需要用一个div套在外面,确保只有一个根元素。//这里就封装了组件的html。template:`<div><div>学校:{{schoolName}}</div><div>地址:{{schoolAddress}}</div></div>`,//配置数据data() {return {schoolName:"尚硅谷",schoolAddress:"北京"}},});const student = Vue.extend({template:`<div><div>学生:{{studentName}}</div><div>年龄:{{studentAge}}</div></div>`,data() {return {studentName:"张三",studentAge:18}},});//创建一个vue对象来注册组件const vm = new Vue({//管理id为root1的容器el:"#root1",//第二步:注册组件,这里属于局部注册,也就是只有该vm管理的容器才能使用school组件和student组件。components:{school:school,student:student}})</script></body>
</html>
效果:
vue开发者工具:
为什么组件的data只能写成函数形式呢,因为组件是要达到复用的,如果组件在多个地方复用,比如在a地方和b地方使用了组件。
如果组件data能够写成对象形式,那么,等于所有使用到他的地方都用到了同样引用的对象(也就是dataA===dataB返回true),这个a地方修改data属性值会影响到b地方。
用原生js演示:
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Document</title>
</head>
<body><script>//使用data对象的情况:let data = {name:"yehaocong",age:25}//模拟A地方和B地方使用了datalet dataA = data;let dataB = data;//使用函数形式的情况function dataF(){//因为每次返回的都是一个新的对象return {name:"yehaocong",age:25}}//模拟C地方和D地方使用了Datalet dataC = dataF();let dataD = dataF();</script>
</body>
</html>
效果:
上面的注册形式是局部注册,也就是只有该vue实例管理的容器才能使用该组件。
代码:
效果:
全局注册组件:
代码:
效果:
注意事项:
组件名称的定义:
官方推荐首字母大写,多个单词用横杠分隔。
比如 My-School
使用时就用 <My-School></My-School>vue组件的另外一种定义方式是直接使用对象定义:
const school = {
//这个就是配置对象。
}
也能成功。
Vue之非单文件组件介绍相关推荐
- vue教程2 【Vue组件化编程】 组件的创建和使用 非单文件组件和单文件组件的区别
组件 实现局部功能的代码和资源的集合 非单文件组件 1.定义组件(创建组件) 2.注册组件 3.使用组件(写组件标签) 定义 使用Vue.extend(options)创建,其中options和new ...
- Vue(组件化编程:非单文件组件、单文件组件)
一.组件化编程 1. 对比传统编写与组件化编程(下面两个解释图对比可以直观了解) 传统组件编写:不同的HTML引入不同的样式和行为文件 组件方式编写:组件单独,复用率高(前提组件拆分十分细致) 理解为 ...
- Vue的单文件组件和非单文件组件
单文件组件:一个文件中只包含一个组件,后缀为.vue(常用) <template><!-- html部分 --><div><p class="tit ...
- 非单文件组件和单文件组件区别
这里写自定义目录标题 非单文件组件和单文件组件区别 非单文件组件和单文件组件区别 在学vue组件时有这么两个概念:非单文件组件和单文件组件. 现在来总结一下这两种组件区别: 非单文件组件: 一个文件里 ...
- Vue多个单文件组件使用
在project目录下创建components文件夹,然后将所有子组件放入components文件夹下 [创建此目录][文件名的首字母大写] 1.多组件嵌套使用 Child1.vue <tem ...
- Vue系列之单文件组件
文章目录 前言 一.什么是单文件组件? 二.单文件组件的结构 三.如何引入并使用单文件组件 1. B组件中需导出(export) 2. A组件中需导入并局部注册B(import) 前言 Vue应用的一 ...
- vue 组件 - 非单文件组件
一.定义组件 const school = Vue.extend({name: 'xuexiao', // ----------------------------> 指定组件在开发者工具中显示 ...
- Vue自定义组件——非单文件组件
使用 component 或 components <div id="root"><h1>{{msg}}</h1><school>& ...
- webpage结合Vue Loader打包单文件组件
npm insatll vue-loader vue-template-compiler webpage.config.js //引用node.js中的path模块,用来处理文件路径 const pa ...
最新文章
- ivf技术_体外受精技术介绍 谁需要IVF技术帮助
- Linux 中Sublime Text 3无法输入中文的问题
- 事件冒泡之cancelBubble和stoppropagation的区别
- One Order行项目里Item Category是怎么计算出来的
- IE针对Ajax请求结果的缓存IE浏览器同一个请求第二次是缓存数据不刷新
- 《大数据》2022年第1期目次摘要
- IOT(33)---NB-IOT通用物联解决方案
- python中main函数在运行中不是必须要写的_Python必备知识之“if __name__ == '__main__':”...
- Python程序设计语言基础02:Python基本图形绘制
- 用c语言求定积分实验报告,C语言用六种方法求定积分.doc
- 新手接触使用Hashcat 破解Office加密文档
- 计算机积木游戏,A*算法分析(积木块游戏)
- 到底什么是CE、C++、C+L波段?
- PMP|项目经理如何做好相关方管理?
- python获取今日头条搜索信息_python 爬取今日头条关键词搜索
- R语言自学-Rstudio使用指南
- manjaro yay安装企业微信
- MATLAB小波变换图像处理简单示例
- Vue设置路由后页面仍不显示为空白
- 计算机专业调研报告图片,计算机专业毕业设计论文(计算机专业调研报告范文)...
热门文章
- 工作感想:浅论Java教学工作
- QT案例:登录对话框——主窗口
- python网站框架下载_最受欢迎的7款Python开源框架总结,忍不住收藏了~
- bzoj4517 [Sdoi2016]排列计数 组合数+错排
- bzoj1015 [JSOI2008]星球大战 并查集
- 【英语学习】【Daily English】U15 Culture L01 You'll be used to life here before long
- 【英语学习】【WOTD】ecstatic 释义/词源/示例
- 【英语学习】【WOTD】leviathan 释义/词源/示例
- Intel Sandy Bridge/Ivy Bridge架构/微架构/流水线 (15) - L1数据缓存/读写地址转换
- linux程序只监听了ipv6端口,c-在Linux上侦听IPv6多播