简介

主要介绍非单文件组件的方式创建Vue组件、使用。
非单文件组件指的是一个文件中包含多个vue组件。
非单文件组件实际上是html文件。

使用组件化主要分为三步:

  1. 编写组件。
  2. 注册组件。
  3. 使用组件(组件标签)。
<!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实例管理的容器才能使用该组件。
代码:

效果:

全局注册组件:
代码:

效果:

注意事项:
  1. 组件名称的定义:
    官方推荐首字母大写,多个单词用横杠分隔。
    比如 My-School
    使用时就用 <My-School></My-School>

  2. vue组件的另外一种定义方式是直接使用对象定义:
    const school = {
    //这个就是配置对象。
    }

    也能成功。

Vue之非单文件组件介绍相关推荐

  1. vue教程2 【Vue组件化编程】 组件的创建和使用 非单文件组件和单文件组件的区别

    组件 实现局部功能的代码和资源的集合 非单文件组件 1.定义组件(创建组件) 2.注册组件 3.使用组件(写组件标签) 定义 使用Vue.extend(options)创建,其中options和new ...

  2. Vue(组件化编程:非单文件组件、单文件组件)

    一.组件化编程 1. 对比传统编写与组件化编程(下面两个解释图对比可以直观了解) 传统组件编写:不同的HTML引入不同的样式和行为文件 组件方式编写:组件单独,复用率高(前提组件拆分十分细致) 理解为 ...

  3. Vue的单文件组件和非单文件组件

    单文件组件:一个文件中只包含一个组件,后缀为.vue(常用) <template><!-- html部分 --><div><p class="tit ...

  4. 非单文件组件和单文件组件区别

    这里写自定义目录标题 非单文件组件和单文件组件区别 非单文件组件和单文件组件区别 在学vue组件时有这么两个概念:非单文件组件和单文件组件. 现在来总结一下这两种组件区别: 非单文件组件: 一个文件里 ...

  5. Vue多个单文件组件使用

    在project目录下创建components文件夹,然后将所有子组件放入components文件夹下  [创建此目录][文件名的首字母大写] 1.多组件嵌套使用 Child1.vue <tem ...

  6. Vue系列之单文件组件

    文章目录 前言 一.什么是单文件组件? 二.单文件组件的结构 三.如何引入并使用单文件组件 1. B组件中需导出(export) 2. A组件中需导入并局部注册B(import) 前言 Vue应用的一 ...

  7. vue 组件 - 非单文件组件

    一.定义组件 const school = Vue.extend({name: 'xuexiao', // ----------------------------> 指定组件在开发者工具中显示 ...

  8. Vue自定义组件——非单文件组件

    使用 component 或 components <div id="root"><h1>{{msg}}</h1><school>& ...

  9. webpage结合Vue Loader打包单文件组件

    npm insatll vue-loader vue-template-compiler webpage.config.js //引用node.js中的path模块,用来处理文件路径 const pa ...

最新文章

  1. ivf技术_体外受精技术介绍 谁需要IVF技术帮助
  2. Linux 中Sublime Text 3无法输入中文的问题
  3. 事件冒泡之cancelBubble和stoppropagation的区别
  4. One Order行项目里Item Category是怎么计算出来的
  5. IE针对Ajax请求结果的缓存IE浏览器同一个请求第二次是缓存数据不刷新
  6. 《大数据》2022年第1期目次摘要
  7. IOT(33)---NB-IOT通用物联解决方案
  8. python中main函数在运行中不是必须要写的_Python必备知识之“if __name__ == '__main__':”...
  9. Python程序设计语言基础02:Python基本图形绘制
  10. 用c语言求定积分实验报告,C语言用六种方法求定积分.doc
  11. 新手接触使用Hashcat 破解Office加密文档
  12. 计算机积木游戏,A*算法分析(积木块游戏)
  13. 到底什么是CE、C++、C+L波段?
  14. PMP|项目经理如何做好相关方管理?
  15. python获取今日头条搜索信息_python 爬取今日头条关键词搜索
  16. R语言自学-Rstudio使用指南
  17. manjaro yay安装企业微信
  18. MATLAB小波变换图像处理简单示例
  19. Vue设置路由后页面仍不显示为空白
  20. 计算机专业调研报告图片,计算机专业毕业设计论文(计算机专业调研报告范文)...

热门文章

  1. 工作感想:浅论Java教学工作
  2. QT案例:登录对话框——主窗口
  3. python网站框架下载_最受欢迎的7款Python开源框架总结,忍不住收藏了~
  4. bzoj4517 [Sdoi2016]排列计数 组合数+错排
  5. bzoj1015 [JSOI2008]星球大战 并查集
  6. 【英语学习】【Daily English】U15 Culture L01 You'll be used to life here before long
  7. 【英语学习】【WOTD】ecstatic 释义/词源/示例
  8. 【英语学习】【WOTD】leviathan 释义/词源/示例
  9. Intel Sandy Bridge/Ivy Bridge架构/微架构/流水线 (15) - L1数据缓存/读写地址转换
  10. linux程序只监听了ipv6端口,c-在Linux上侦听IPv6多播