vue组件(个人学习笔记三)

目录

  • 友情提醒
  • 第一章、vue的组件
    • 1.1)什么是SPA应用
    • 1.2)vue的组件简介
    • 1.3)vue工程中的main.js文件
  • 第二章、Vue组件的使用
    • 2.1)一般组件的自定义
    • 2.2)注册组件:全局注册和局部注册
      • 2.2.1)全局注册:靠Vue.component('组件名',组件)
      • 2.2.2)局部注册(常用):靠new Vue的时候传入components选项
    • 2.3)使用组件
  • 第三章、组件嵌套
    • 3.1)Student组件
    • 3.2)School组件
    • 3.3)App.vue中注册使用两个组件

友情提醒

先看文章目录,大致了解知识点结构,直接点击文章目录可以跳转到文章指定位置。

第一章、vue的组件

1.1)什么是SPA应用

①单页 Web 应用(single page web application,SPA)。 Vue工程是单页面应用程序,整个工程只有一个完整的html页面。
② 点击页面中的导航链接不会刷新页面,只会做页面的局部更新。
③数据需要通过 ajax 请求获取。
④Vue 脚手架工程只有一个页面,浏览器也只能读取这一个页面的内容。Vue 通过组件的方式把要渲染到页面的内容进行拆分,拆分成组件,由 Vue 对象加载各个组件并渲染到页面.

1.2)vue的组件简介

组件(component)的出现,是为了拆分Vue的代码块,不同的组件划分不同的功能模块,以后我们需要某个功能时,就直接调用对应的组件即可
①模块化:模块化是从代码的角度去分析的,方便代码分层开发,保证每个模块职责单一。
②组件化:组件化是从界面的角度去划分的,如:分页组件、轮播、颜色选择、文件 上传等抽象 是把公共的东西 像的东西抽出来 (好处:复用,公共的,缺点:代码的可读性直线下降)
在这里插入图片描述
③两种组件命名方式:
1、大驼峰 MyComponent
2、-连接符号: my-component
组件分为:根组件(App.vue)所有的组件都需要注册在根组件、一般组件、路由组件

1.3)vue工程中的main.js文件

在这里插入图片描述

第二章、Vue组件的使用

2.1)一般组件的自定义

①创建一个后缀为.vue组件文件,如:MyComponent.vue
在这里插入图片描述

②使用Vue.extend语法创建,一般组件会继承Vue对象也就是VueComponent对象简称VC对象,语法中options和new Vue时传入的那个options几乎一样,但也有区别:
1、el不要写:最终所有的组件都要经过一个vm的管理,由vm中的el决定服务哪个容器。
2、data必须写成函数:
避免组件被复用时,数据存在引用关系。

<template><!--写组件的html代码--><h1>名字:{{name}}</h1>
</template>
<script>import Vue from "vue"/*该组件的vue语法*//*vue代码需要声明vue对象  vue组件本身就是vue对象的小弟*///myVueComponentDemo1就是vue组件对象  简称vcconst myVueComponentDemo1 = Vue.extend({//el:"",vc是vue对象的小弟  它不能自己运行  只能被vue对象调用//data:{}, 对象式//函数式data(){return{name:"第一个组件"}},methods:{}})//把组件对象声明暴露export default myVueComponentDemo1;//默认该组件对象对外公开
</script>
<style>/*该组价的样式*/
</style>

2.2)注册组件:全局注册和局部注册

2.2.1)全局注册:靠Vue.component(‘组件名’,组件)

Vue组件直接绑定Vue对象
在这里插入图片描述
在App.vue使用注册后的组件标签
在这里插入图片描述
查看页面
在这里插入图片描述

2.2.2)局部注册(常用):靠new Vue的时候传入components选项

Vue对象直接绑定根组件,所有的组件都需要注册在根组件(App.vue),一般组件只能被根组件管理。

<template><div id="app"><img alt="Vue logo" src="./assets/logo.png"><HelloWorld msg="Welcome to Your Vue.js App"/><h1>这是app.vue  我在这写一个标签</h1><!--这是全局注册  来自vue对象--><MyFirstVc></MyFirstVc><MyFirstVc></MyFirstVc><MyFirstVc></MyFirstVc><MyFirstVc></MyFirstVc><!--这是局部注册--><h1/><p>局部注册</p><AAA></AAA><AAA></AAA><AAA></AAA></div>
</template><script>
import HelloWorld from './components/HelloWorld.vue'
//局部注册
import MyFirst from "./components/MyFirst"HelloWorld,AAA:MyFirst//局部注册组件  该组件只能在app.vue上使用
}
</script><style>
#app {font-family: Avenir, Helvetica, Arial, sans-serif;-webkit-font-smoothing: antialiased;-moz-osx-font-smoothing: grayscale;text-align: center;color: #2c3e50;margin-top: 60px;
}
</style>

2.3)使用组件

①Vue对象调用App.vue,App.vue调用一般组件
②自定义一个StudentDemo组件
注意:只能有一个元素,一般组件取名:大驼峰如MyComponent

<template><div><!--写html代码--><p>姓名:{{stuName}}</p><p>年龄:{{stuAge}}</p></div>
</template><script>//vc对象export default {name:"StudentDemo",//组件名称  用来区分组件  在vue加载时  会以组件标签的形式呈现data(){return{stuName:"张三",stuAge:18}},}
</script><style scoped>/*css样式*/
</style>

③在根组件注册使用

<template><div id="app"><!--<img alt="Vue logo" src="./assets/logo.png"><HelloWorld msg="Welcome to Your Vue.js App"/><h1>这是app.vue  我在这写一个标签</h1>&lt;!&ndash;这是全局注册  来自vue对象&ndash;&gt;<MyFirstVc></MyFirstVc><MyFirstVc></MyFirstVc><MyFirstVc></MyFirstVc><MyFirstVc></MyFirstVc>&lt;!&ndash;局部注册&ndash;&gt;<h1/><p>局部注册</p><AAA></AAA><AAA></AAA><AAA></AAA>--><BBB></BBB><hr/><BBB></BBB></div>
</template><script>
/*import HelloWorld from './components/HelloWorld.vue'
//局部注册
import MyFirst from "./components/MyFirst"*/
import MyStudent from "./components/Student"
export default {name: 'App',components: {/* HelloWorld,AAA:MyFirst//局部注册组件  该组件只能在app.vue上使用*/BBB:MyStudent}
}
</script><style>
#app {font-family: Avenir, Helvetica, Arial, sans-serif;-webkit-font-smoothing: antialiased;-moz-osx-font-smoothing: grayscale;text-align: center;color: #2c3e50;margin-top: 60px;
}
</style>

第三章、组件嵌套

在一般组件中引入另一个一般组件

3.1)Student组件

<template><div><p>姓名:{{stu.name}}<br/></p><p>年龄:{{stu.age}}<br/></p><p>性别:{{stu.sex}}<br/></p></div>
</template><script>export default {name: "StudentDemo",data(){return{stu:{name:"小明",age:18,sex:"男"}}}}
</script><style scoped></style>

3.2)School组件

在School组件中引入Student组件

<template><div>学校名称:{{school.name}}<MyStudent></MyStudent><MyStudent></MyStudent><hr/></div>
</template><script>import MyStudent from "./Student"export default {name: "SchoolDemo",data(){return{school:{name:"五道口职业技术学院"}}},components:{MyStudent}}
</script><style scoped></style>

3.3)App.vue中注册使用两个组件

<template><div id="app"><img alt="Vue logo" src="./assets/logo.png"><!--<HelloWorld msg="欢迎使用vue工程"></HelloWorld>--><MySchool></MySchool><MySchool></MySchool><MySchool></MySchool><MySchool></MySchool><MySchool></MySchool></div>
</template><script>
//import HelloWorld from './components/HelloWorld.vue'import MySchool from "./components/School"export default {name: 'App',components: {//HelloWorld:HelloWorld//当局部注册的声明和组件名一致时  写一个即可//HelloWorldMySchool}
}
</script><style>
#app {font-family: Avenir, Helvetica, Arial, sans-serif;-webkit-font-smoothing: antialiased;-moz-osx-font-smoothing: grayscale;text-align: center;color: #2c3e50;margin-top: 60px;
}
</style>

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

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

相关文章

和chatgpt学架构04-路由开发

目录 1 什么是路由2 如何设置路由2.1 安装依赖2.2 创建路由文件2.3 创建首页2.4 编写HomePage2.5 更新路由配置2.6 让路由生效 3 测试总结 要想使用vue实现页面的灵活跳转&#xff0c;其中路由配置是必不可少的&#xff0c;我们在做开发的时候&#xff0c;先需要了解知识点&…

Vue--》打造个性化医疗服务的医院预约系统(二)

今天开始使用 vue3 + ts 搭建一个医院预约系统的前台页面,因为文章会将项目的每一个地方代码的书写都会讲解到,所以本项目会分成好几篇文章进行讲解,我会在最后一篇文章中会将项目代码开源到我的GithHub上,大家可以自行去进行下载运行,希望本文章对有帮助的朋友们能多多关…

基于Python+多层RNN+Tensorflow藏头诗与歌词智能生成-深度学习算法应用(含全部工程源码)+训练数据集

目录 前言总体设计系统整体结构图系统流程图 运行环境Python 环境Tensorflow 环境PyCharm环境 模块实现古诗生成1. 数据预处理2. 模型构建3. 模型训练及保存4. 使用模型生成古诗5. 产生藏头诗6. 用词云展示生成的古诗 歌词生成1. 数据预处理2. 模型构建3. 模型训练并保存4. 生成…

基于Kitti数据集的智能驾驶目标检测系统(PyTorch+Pyside6+YOLOv5模型)

摘要&#xff1a;基于Kitti数据集的智能驾驶目标检测系统可用于日常生活中检测与定位行人&#xff08;Pedestrian&#xff09;、面包车&#xff08;Van&#xff09;、坐着的人&#xff08;Person Sitting&#xff09;、汽车&#xff08;Car&#xff09;、卡车&#xff08;Truck…

【字符流】案例:文件到集合

案例&#xff1a;文件到集合 1.需求&#xff1a; 把文本文件中的数据读取到集合&#xff0c;并遍历集合。要求&#xff1a;文件中的每一行数据是一个集合元素 2.思路 创建字符缓冲输入流对象创建ArrayList集合对象调用字符缓冲输入流对象的方法读数据把读取到的字符串数据存…

Java IO

stream 流 是一种抽象概念&#xff0c;它代表了数据的无结构化传递。按照流的方式进行输入输出&#xff0c;数据被当成 无结构的字节序或字符序列。从流中取得数据的操作称为提取操作&#xff0c;而向流中添加数据的操作称为插入操作。用来进行输入输出操作的流就称为IO 流。换…

spring复习:(50)@Configuration注解配置的singleton的bean是什么时候被创建出来并缓存到容器的?

一、主类&#xff1a; 二、配置类&#xff1a; 三、singleton bean的创建流程 运行到context.refresh(); 进入refresh方法&#xff1a; 向下运行到红线位置时&#xff1a; 会实例化所有的singleton bean.进入finisheBeanFactoryInitialization方法&#xff1a; 向下拖动代…

JavaWeb课程设计项目实战(06)——项目编码实践3

版权声明 本文原创作者&#xff1a;谷哥的小弟作者博客地址&#xff1a;http://blog.csdn.net/lfdfhl 在本教程教程中&#xff0c;我们实现学生列表的显示。 Student 请在bean包下创建Student类&#xff0c;代码如下&#xff1a; package com.cn.bean; /*** 本文作者&#…

数据科学团队的角色分工

描述数据科学团队中角色分工常用下列维度。进一步以数据可视化直观表达的能力雷达图: ML Ops - 机器学习运维 Data Pipelines - 数据流水线 Database - 数据库 Data Viz - 数据可视化 Storytelling - 数据讲故事 Business Insights - 业务洞察 Reporting - 报告 Experimentatio…

【100天精通python】Day10:函数的创建和调用,参数传递,返回值,变量作用域以及匿名函数

目录 1. 函数的创建和调用 1.1 函数的创建 1.2 调用函数 2 参数传递 2.1 传递方式 2.2 形参和实参 2.3 位置参数 2.4 关键字参数 2.5 可变参数 2.6 为参数设置默认值 3 返回值 4 变量的作用域 4.1 局部变量 4.2 嵌套变量 4.3 全局变量 5 匿名函数&#xff0…

X86设备启动过程

文章目录 一、电源自检二、BIOS自检三、引导设备选择四、主引导记录4.1 0x7c0 五、加载操作系统 x86计算机启动过程&#xff0c;主要分为这几个阶段&#xff1a;电源自检、BIOS自检、引导设备的选择、主引导记录、加载操作系统。 一、电源自检 当我们按下开关键后&#xff0c;…

uni-app image加载错误 404 替换为默认图片

双层v-for 使用item修改 aitem.cat_icon || defaultPic绑定图片src属性为aitem.cat_icon 如果aitem.cat_icon的值为空字符串或undefined&#xff0c;那么默认图片defaultPic被显示出来当图片加载错误时,触发handleImageError方法,将aitem传进去 <!-- 页面--><view …

Java 知识合集 | 多线程与并发

&#x1f468;&#x1f3fb;‍&#x1f4bb; 热爱摄影的程序员 &#x1f468;&#x1f3fb;‍&#x1f3a8; 喜欢编码的设计师 &#x1f9d5;&#x1f3fb; 擅长设计的剪辑师 &#x1f9d1;&#x1f3fb;‍&#x1f3eb; 一位高冷无情的编码爱好者 大家好&#xff0c;我是 DevO…

直接插入排序、希尔排序、直接选择排序、堆排序、冒泡排序——“数据结构与算法”

各位CSDN的uu们你们好呀&#xff0c;今天小雅兰的内容是数据结构与算法啦&#xff0c;是排序&#xff01;&#xff01;&#xff01;下面&#xff0c;让我们进入七大排序的世界吧&#xff01;&#xff01;&#xff01; 排序的概念及其运用 排序的概念 排序&#xff1a;所谓排序…

19 数组静态初始化练习

语法&#xff1a; 数据类型[ ] 数组名称 {元素1&#xff0c;元素2&#xff0c;元素3}; public class Demo1 {public static void main(String[] args) {int[] arr {0,1,2,3};System.out.println(arr);System.out.println(arr[0]);System.out.println(arr[1]);System.out.pri…

SpringBoot中间件—ORM(Mybatis)框架实现

目录 定义 需求背景 方案设计 代码展示 UML图 实现细节 测试验证 总结 源码地址&#xff08;已开源&#xff09;&#xff1a;https://gitee.com/sizhaohe/mini-mybatis.git 跟着源码及下述UML图来理解上手会更快&#xff0c;拒绝浮躁&#xff0c;沉下心来搞 定义&#x…

【C++杂货铺】拷贝构造函数

&#x1f4d6;定义 拷贝构造函数是构造函数的一个重载&#xff0c;它的本质还是构造函数&#xff0c;那就意味着&#xff0c;只有在创建对象的时候&#xff0c;编译器才会自动调用它&#xff0c;那他和普通的构造函数有什么区别呢&#xff1f; 拷贝构造函数&#xff0c;是创建…

【数学建模】为什么存在最优策略?

一、说明 在进行优化回归过程&#xff0c;首先要看看是否存在最优策略&#xff1f; 在有限马尔可夫决策过程 &#xff08;MDP&#xff09; 中&#xff0c;最优策略被定义为同时最大化所有状态值的策略。换句话说&#xff0c;如果存在最优策略&#xff0c;则最大化状态 s 值的策…

内存函数及其模拟实现

身体扛不住的时候&#xff0c;意志会带你杀出重围 文章目录 一、memcpy函数 函数介绍 模拟实现 二、memmove函数 函数介绍 模拟实现 三、memset函数 函数介绍 模拟实现 大家好&#xff0c;我是纪宁。这篇文章给大家介绍C语言中常见的内存处理函数。 一、memcpy函数 …

20.matlab数据分析极限(matlab程序)

1.简述 计算极限 MATLAB提供计算极限的limit函数。在其最基本的形式中&#xff0c;limit函数将表达式作为参数&#xff0c;并在独立变量为零时找到表达式的极限。 例如&#xff0c;要计算函数f(x)(x^3 5)/(x^4 7)的极限&#xff0c;因为x趋向于零。 syms xlimit((x^3 5)/…