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

2023-11-17

友情提醒

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

第一章、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组件对象  简称vc
    const 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//当局部注册的声明和组件名一致时  写一个即可
    //HelloWorld

    MySchool
  }
}
</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>

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

vue组件(个人学习笔记三) 的相关文章

  • Prometheus Blackbox_exporter笔记

    一 安装Promtheus 在 Prometheus 官网 Download Prometheus 获取适用于 Linux 的 Prometheus 安 装包 这里我选择最新的 2 46 0 版本 我是 Linux 系统 选择下载 prom
  • 一个网工(网络工程师)七年的职业血泪史....

    前言 一个工作了七年的老网工 上家公司待了五年 现在这家公司也快三年了 分享一些我自己学习网络安全路上的一些经历 也算是帮大家少走些弯路 一 如何学习网络安全 1 不要试图以编程为基础去学习网络安全 不要以编程为基础再开始学习网络安全 一般
  • 监控显卡显存(python代码)

    一 前言 我和我同学的代码 分别占用14G显存 而显卡的显存只有24G 没有办法同时跑 所以 他先跑 我的代码时刻监控显存的使用情况 只要显卡显存大于14G 我的代码就自动启动 二 代码 import pynvml import time
  • 【OpenCV学习笔记02】- 图像入门

    内容 这里介绍了图像处理的入门操作 你将学习如何读取图像 如何显示图像以及如何将其保存回去 你将学习以下功能 cv imread cv imshow cv imwrite 简单使用OpenCV 读取图像 使用 cv imread 函数读取图
  • 电脑快速打开计算器的方法

    大家好 我是爱你三千遍斯塔克 我们平常在运算时 经常要要使用计算器 那么计算器有什么快速打开方法吗 这里有一些参考方法 可供大家进行参考 希望对大家有帮助 希望你喜欢我的内容 记得关注我哦 我会继续为大家带来更好的作 1 win R 打开运
  • 每天10个前端小知识 <Day 1>

    前端面试基础知识题 1 将数组的length设置为0 取第一个元素会返回什么 设置 length 0 会清空数组 所以会返回 undefined 2 e target 和 e currentTarget 有什么区别 e target 触发事
  • 38条Web测试经验分享

    1 页面链接检查 每一个链接是否都有对应的页面 并且页面之间切换正确 可以使用一些工具 如LinkBotPro File AIDCS HTML Link Validater Xenu等工具 LinkBotPro不支持中文 中文字符显示为乱码
  • 每天10个前端小知识 <Day 5>

    前端面试基础知识题 1 typeof 与 instanceof 有什么区别 typeof与instanceof都是判断数据类型的方法 区别如下 typeof会返回一个变量的基本类型 instanceof返回的是一个布尔值 instanceo
  • 前端基础:回顾es6相关知识

    Author note 题记 ECMAscript is international standard of javascript ECMA 是 js的国际标准版语言 let and const 为什么之前用var现在需要用let cons
  • 「网络安全渗透」如果你还不懂CSRF?这一篇让你彻底掌握

    1 什么是 CSRF 面试的时候的著名问题 谈一谈你对 CSRF 与 SSRF 区别的看法 这个问题 如果我们用非常通俗的语言讲的话 CSRF 更像是钓鱼的举动 是用户攻击用户的 而对于 SSRF 来说 是由服务器发出请求 用户 日 服务器
  • 网络安全(黑客)自学启蒙

    一 什么是网络安全 网络安全是一种综合性的概念 涵盖了保护计算机系统 网络基础设施和数据免受未经授权的访问 攻击 损害或盗窃的一系列措施和技术 经常听到的 红队 渗透测试 等就是研究攻击技术 而 蓝队 安全运营 安全运维 则研究防御技术 作
  • 点击存储到固定时间清除存储

    这段代码 无意间想到的 随便写了下来 运行 根据点击之后传递一个参数 将他存入本地存储 方便测试为10秒 10秒后触发下一个事件 清除本地存储 结束
  • 低代码配置-组件列表设计

    过滤字段功能 配置了api 启用 输出配置 filter type Array default gt
  • 低代码-详情页组件设计

    效果图 详情页数据结构定义 layout 按钮数据 buttonLayout headButton 页头按钮 footButton 页脚按钮 详情页表单配置 config 配置组件列表 detailLayout 默认行为 进表单初始化 只展
  • 新画图不好用?『 图层困扰?』『 剪切板拷贝失败?』旧版画图软件yyds

    樊梓慕 个人主页 个人专栏 C语言
  • 考虑光伏出力利用率的电动汽车充电站能量调度策略研究(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码 数据
  • 每天10个前端小知识 <Day 14>

    前端面试基础知识题 1 CSSOM树和DOM树是同时解析的吗 浏览器会下载HTML解析页面生成DOM树 遇到CSS标签就开始解析CSS 这个过程不会阻塞 但是如果遇到了JS脚本 此时假如CSSOM还没有构建完 需要等待CSSOM构建完 再去
  • 【js学习之路】遍历数组api之 `filter `和 `map`的区别

    一 前言 数组是我们在项目中经常使用的数据类型 今天我们主要简述作用于遍历数组的api filter 和 map 的区别 二 filter和map的共同点 首先 我们主要阐述一下 filter 和 map 的共同点 api的参数都是回调函数
  • 如何在 Python 脚本中使用 Google OAuth2

    在使用 Python 脚本将视频上传到 YouTube 频道时 若希望将视频上传到第二个频道 需要解决 OAuth2 授权的问题 解决方案 创建新的 Google Cloud 项目 from google oauth2 import ser
  • 如何在 Python 脚本中使用 Google OAuth2

    在使用 Python 脚本将视频上传到 YouTube 频道时 若希望将视频上传到第二个频道 需要解决 OAuth2 授权的问题 解决方案 创建新的 Google Cloud 项目 from google oauth2 import ser

随机推荐

  • 【Java学习笔记】70:借助Redis实现分布式锁

    这节学习Java用Redis做分布式锁 来做秒杀场景卖货减库存的案例 最原始的减库存写法 这里库存也存Redis里面 调减库存接口的时候判断一下大于0 还有库存 就拿出来减1 这里StringRedisTemplate是Spring Boo
  • elasticsearch的映射 (mapping)

    一 概念 映射 mapping 就是指定索引 index 里面的每个文档中的字段的类型 设置字段的存储和查询的分析策略 es对不同的字段类型 有不同的存储和检索策略 比如对于text类型的字段 会经过各类分词处理 大小写转换 同义词转换 才
  • VTK5.10.1+Cmake+vs2010整合安装

    1 下载 VS2010就自己在网上找了咯 这里不提供具体路径下载了 vtk 5 10 1 zip源程序 vtkdata 5 10 1 zip 数据 vtkDocHtml 5 10 1 tar gz 文档可以不下载 vtk相关安装程序下载 h
  • MySQL基础高频面试题

    1 什么是索引 索引是一种用于快速查询和检索数据的数据结构 mysql中的索引结构有 B 树和Hash 索引的作用就相当于目录的作用 我们只需要先去目录里查找字的位置 然后直接翻到那一页就行了 这样查找就会非常快 2 索引的优缺点 优点 1
  • JavaWeb之HTML和CSS

    标签命令汇总 tr 行 td 单元格 b 加粗 font 字体标签 br 换行 a 超链接标签 ul 无序标签列表 ol 有序标签列表 li list ul 无序标签列表 href 设置链接地址 一 概述 1 B S软件结构 JavaSE中
  • 欧拉习题40

    题目如下 An irrational decimal fraction is created by concatenating the positive integers 0 12345678910111213141516171819202
  • CVPR-2022- MixFormer: End-to-End Tracking with Iterative Mixed Attention 阅读笔记

    目录 端到端的MixFormer跟踪整体框架 Mixed attention module MAM 基于角的定位头 基于查询的定位头 分数预测模块 SPM 论文地址 https arxiv org abs 2203 11082 代码地址 h
  • Java对象的序列化和反序列化实践

    当两个进程在进行远程通信时 彼此可以发送各种类型的数据 无论是何种类型的数据 都会以二进制序列的形式在网络上传送 发送方需要把这个Java对象转换为字节序列 才能在网络上传送 接收方则需要把字节序列再恢复为Java对象 把Java对象转换为
  • OrCAD打开工程报错-ERROR(ORCAP-1653)

    OrCAD打开工程报错 ERROR ORCAP 1653 OrCAD打开工程报错 ERROR ORCAP 1653 1 简要介绍 2 报错原因 3 解决方法 1 简要介绍 长期使用 OrCAD 以来都比较顺手 不知什么时候开始打开某些原理图
  • 解决hikari连接池一段时间不操作断开连接的问题

    起因 在自己项目中隔一段时间不操作数据库就会报错导致数据库连不上 报错信息 报错信息显示30207ms 差不多是30s 主要原因是因为我是用的SpringBoot版本使用的连接池是hikari 由其中一个属性connectionTimeou
  • Endnote 与word关联

    适用于endnotex7 endnotex8 endnotex9和office2019 office2021 第一步 打开Word 选择 选项 单击转到下一页 第二步 选择 加载项 COM加载项 转到 进入下一页 第三步 添加 可用加载项
  • python中.find函数的使用方法及实例_Python

    re findall findall string pos endpos 在字符串中找到正则表达式所匹配的所有子串 并返回一个列表 如果没有找到匹配的 则返回空列表 string 待匹配的字符串 pos 可选参数 指定字符串的起始位置 默认
  • [从零开始学DeepFaceLab-7]: 使用-命令行八大操作步骤-第4步:从目标图片中提取所需图片

    目录 总体流程 步骤4 从源片中提取脸部图片 4 1 命令 4 data src faceset extract MANUAL bat 不推荐使用
  • ElementUI浅尝辄止25:MessageBox 弹框

    模拟系统的消息提示框而实现的一套模态对话框组件 用于消息提示 确认消息和提交内容 从场景上说 MessageBox 的作用是美化系统自带的 alert confirm 和 prompt 因此适合展示较为简单的内容 如果需要弹出较为复杂的内容
  • 清华大学开源软件镜像站网址

    清华大学 TUNA 协会原名清华大学学生网管会 注册名清华大学学生网络与开源软件协会 是由清华大学网络技术和开源软件爱好者 技术宅组成的团体 现阶段向校内外提供开源软件镜像等服务 清华大学 TUNA 协会清华大学 TUNA 协会原名清华大学
  • win7安装了vc++6.0打开已保存文件项目就会崩溃

    我用win7安装了vc 6 0的英文完整版 绿色中文版 发现当运行程序时 要打开已保存文件项目就会崩溃 系统对话筐就说 Microsoft R Developer Studio已停止工作 选择调试或者关闭 office 2010 与vc 6
  • C++ 中只能在堆或栈上创建的对象

    1 只能在堆上创建的对象 1 把析构函数声明为private 2 定义一个destroy 函数 用这个函数来delete对象 void destroy delete this 2 只能在栈上创建的对象 1 覆盖operator new 和
  • 区块链数据不可篡改的详细解释

    区块链数据不可篡改的详细解释 背景介绍 本人新人一枚 学习区块链的过程中 在网上看到了很多讨论区块链区块数据不可篡改的文章 以比特币为例哈 主要存在2种解释 解释1 由于哈希指针的存在 假设存在某节点修改的了当前区块数据 带来的后果就是其后
  • 力扣 --- 45. 跳跃游戏II

    45 跳跃游戏II 2020 05 04 22 58 题目描述 给定一个非负整数数组 你最初位于数组的第一个位置 数组中的每个元素代表你在该位置可以跳跃的最大长度 你的目标是使用最少的跳跃次数到达数组的最后一次位置 示例 输入 2 3 1
  • vue组件(个人学习笔记三)

    目录 友情提醒 第一章 vue的组件 1 1 什么是SPA应用 1 2 vue的组件简介 1 3 vue工程中的main js文件 第二章 Vue组件的使用 2 1 一般组件的自定义 2 2 注册组件 全局注册和局部注册 2 2 1 全局注