vue的组件化编程的详细讲解加代码演示

news2024/11/18 12:28:18

😀前言
本片文章是vue系列第5篇整理了vue的组件化编程的详细讲解加代码演示

🏠个人主页:尘觉主页
在这里插入图片描述

🧑个人简介:大家好,我是尘觉,希望我的文章可以帮助到大家,您的满意是我的动力😉😉

在csdn获奖荣誉: 🏆csdn城市之星2名
⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ 💓Java全栈群星计划top前5
⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ 🤗 端午大礼包获得者

💕欢迎大家:这里是CSDN,我总结知识的地方,欢迎来到我的博客,感谢大家的观看🥰
如果文章有什么需要改进的地方还请大佬不吝赐教 先在次感谢啦😊

文章目录

  • 🥰vue的组件化编程的详细讲解加代码演示
    • 😉组件化编程
      • 💭基本说明
      • 💖应用实例
        • 👀应用实例—非组件化
        • 👀应用实例—全局组件化
        • 👀应用实例—局部组件化
        • 注意事项和细节说明
    • 💫组件化小结
    • 😄总结

在这里插入图片描述

🥰vue的组件化编程的详细讲解加代码演示

😉组件化编程

💭基本说明

  1. 在大型应用开发的时候,页面可以划分成很多部分,往往不同的页面,也会有相同的部分。例如可能会有相同的头部导航。

  2. 但是如果每个页面都独自开发,这无疑增加了我们开发的成本。所以我们会把页面的不

同部分拆分成独立的组件,然后在不同页面就可以共享这些组件,避免重复开发(如图)

在这里插入图片描述

  1. 解读上图
  1. 组件(Component) 是 Vue.js 最强大的功能之一(可以提高复用性[1.界面2.业务处理])
  2. 组件也是一个Vue实例,也包括∶ data、methods、生命周期函数等
  3. 组件渲染需要 html模板,所以增加了template 属性,值就是 HTML 模板
  4. 对于全局组件,任何vue 实例都可以直接在 HTML 中通过组件名称来使用组件
  5. data 是一个函数,不再是一个对象, 这样每次引用组件都是独立的对象

💖应用实例

👀应用实例—非组件化

非组件化方式-普通方式–>
点击次数= {{count}} 次【非组件化方式】

需求是,有多个按钮,都要进行点击统计
解读

  1. 其实三个按钮界面其实一样, 但是目前我们都重新写了一次, 复用性低
  2. 点击各个按钮的业务都是对次数+1, 因此业务处理类似,但是也都重新写了一个方法, 复用性低
  3. 解决===> 组件化编程
<!DOCTYPE html>
<html lang="en" xmlns:v-on="http://www.w3.org/1999/xhtml">
<head>
    <meta charset="UTF-8">
    <title>组件化编程</title>
</head>
<body>

<div id="app">
    <!--非组件化方式-普通方式-->
    <button v-on:click="click1()">点击次数= {{count}} 次【非组件化方式】</button><br/><br/>
    <!--需求是,有多个按钮,都要进行点击统计
    解读
    1. 其实三个按钮界面其实一样, 但是目前我们都重新写了一次, 复用性低
    2. 点击各个按钮的业务都是对次数+1, 因此业务处理类似,但是也都重新写了一个方法, 复用性低
    3. 解决===> 组件化编程
    -->
    <button v-on:click="click2()">点击次数= {{count2}} 次【非组件化方式】</button><br/><br/>
    <button v-on:click="click3()">点击次数= {{count3}} 次【非组件化方式】</button><br/>
</div>
<script src="vue.js"></script>
<script>
    new Vue({
        el: "#app",
        data: {//data数据池
            count: 10,
            count2: 10,
            count3: 10
        },
        methods: {//methods属性, 可以定义相应的方法
            click1() {
                this.count++;
            },
            click2() {
                this.count2++;
            },
            click3() {
                this.count3++;
            }
        }
    })
</script>
</body>
</html>

👀应用实例—全局组件化

1、定义一个全局组件, 名称为 counter
2. {} 表示就是我们的组件相关的内容
3. template 指定该组件的界面, 因为会引用到数据池的数据,所以需要是模板字符串
4. 这里说明: 要把组件视为一个Vue实例,也有自己的数据池和methods
5. 这里说明: 对于组件,我们的数据池的数据,是使用函数/方法返回[目的是为了保证每个组件的数据是独立], 不能使用原来的方式
6. 这时我们达到目前,界面通过template实现共享,业务处理也复用
7. 全局组件是属于所有vue实例,因此,可以在所有的vue实例使用

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>组件化编程-全局组件</title>
</head>
<body>
<div id="app">
    <h1>组件化编程-全局组件</h1>
    <!--使用全局组件-->
    <counter></counter>
    <br/>
    <counter></counter>
    <counter></counter>
    <counter></counter>
    <counter></counter>
</div>

<div id="app2">
    <h1>组件化编程-全局组件-app2</h1>
    <!--使用全局组件-->
    <counter></counter>
    <counter></counter>
</div>
<script src="vue.js"></script>
<script>
    //1、定义一个全局组件, 名称为 counter
    //2. {} 表示就是我们的组件相关的内容
    //3. template 指定该组件的界面, 因为会引用到数据池的数据,所以需要是模板字符串
    //4. 这里说明: 要把组件视为一个Vue实例,也有自己的数据池和methods
    //5. 这里说明: 对于组件,我们的数据池的数据,是使用函数/方法返回[目的是为了保证每个组件的数据是独立], 不能使用原来的方式
    //6. 这时我们达到目前,界面通过template实现共享,业务处理也复用
    //7. 全局组件是属于所有vue实例,因此,可以在所有的vue实例使用
    Vue.component("counter", {
        template: `<button v-on:click="click()">点击次数= {{count}} 次【全局组件化】</button>`,
        data() {//这里需要注意,和原来的方式不一样!!!!
            return {
                count: 10
            }
        },
        methods: {
            click() {
                this.count++;
            }
        }
    })
    //创建Vue实例,必须有
    let vm = new Vue({
        el: "#app"//Vue实例的挂载点
    })

    let vm2 =  new Vue({
        el: "#app2"//Vue实例的挂载点
    })
</script>
</body>
</html>

👀应用实例—局部组件化

定义一个组件, 组件的名称为 buttonCounter
扩展

  1. 可以把常用的组件,定义在某个commons.js中 export
  2. 如果某个页面需要使用, 直接import
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>组件化编程-局部组件</title>
</head>
<body>
<div id="app">
    <h1>组件化编程-局部组件</h1>
    <!--使用局部组件 ,该组件是从挂载到app的vue中的-->
    <my_counter></my_counter><br/>
    <my_counter></my_counter><br/>
    <my_counter></my_counter><br/>
</div>

<div id="app2">
    <h1>组件化编程-局部组件-app2</h1>
    <!--使用局部组件 -->
    <wyx_counter></wyx_counter><br/>
    <wyx_counter></wyx_counter><br/>
</div>
<script src="vue.js"></script>
<script>

    //定义一个组件, 组件的名称为 buttonCounter
    //扩展
    //1. 可以把常用的组件,定义在某个commons.js中 export
    //2. 如果某个页面需要使用, 直接import
    const buttonCounter = {
        template: `<button v-on:click="click()">点击次数= {{count}} 次【局部组件化】</button>`,
        data() {//这里需要注意,和原来的方式不一样!!!!
            return {
                count: 10
            }
        },
        methods: {
            click() {
                this.count++;
            }
        }
    }

    //创建Vue实例,必须有
    let vm = new Vue({
        el: "#app",//Vue实例的挂载点
        components: { //引入/注册某个组件, 此时my_counter就是一个组件, 是一个局部组件,他的使用范围在当前vue
            'my_counter': buttonCounter
        }
    })
    let vm2 = new Vue({
        el: "#app2",//Vue实例的挂载点
        components :{//引入/注册组件buttonCounter
            'wyx_counter': buttonCounter
        }
    })
</script>
</body>
</html>

可以看到组件编程, 方便功能代码的复用.

注意事项和细节说明

  1. 如果方法体, 只有简单的语句,比如 count++, 那么可以进行简写, 在组件化编程.html演示, 比如
<div id="app">
    <!--非组件化方式-普通方式-->
    <button v-on:click="count++"> 点 击 次 数 = {{count}} 次 【 非 组 件 化 方 式 】
    </button><br/>
    <button v-on:click="count++"> 点 击 次 数 = {{count}} 次 【 非 组 件 化 方 式 】
    </button><br/>
</div>


/*
之前的写法
methods: {
click1() {
this.count++;
}
*/

💫组件化小结

1 组件也是一个 Vue 实例,因此它的定义是也存在∶ data、methods、生命周期函数等

2 data 是一个函数,不再是一个对象, 这样每次引用组件都是独立的对象/数据

3 组件渲染需要 html 模板,所以增加了 template 属性,值就是 HTML 模版

😄总结

本章讲解了vue的组件化编程的具体分析以及组件化编程的各个模式加代码分析和小结

😁vue系列
扩展篇⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣ - Vue2 脚手架下载及配置淘宝镜像–和ieda的配置和打开
扩展篇⁣⁣⁣⁣ - Vue 项目结构和文件分析
第1篇⁣⁣⁣⁣  - Vue的下载以及MVVM分析
第2篇⁣⁣⁣⁣  - vue数据单双渲染以及代码讲解
第3篇⁣⁣⁣⁣  - vue的事件绑定和修饰符
第4篇⁣⁣⁣⁣  - vue的条件渲染以及列表渲染的总结归纳加代码演示
第5篇⁣⁣⁣⁣  - 是本篇
第6篇⁣⁣⁣⁣  - vue的组件化编程和钩子函数的步步分析
🤔欢迎大家加入我的社区 尘觉社区

文章到这里就结束了,如果有什么疑问的地方请指出,诸佬们一起来评论区一起讨论😁
希望能和诸佬们一起努力,今后我们一起观看感谢您的阅读🍻
如果帮助到您不妨3连支持一下,创造不易您们的支持是我的动力🤞

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

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

相关文章

leetcode 53. 最大子数组和

2023.7.28 要求找最大和的 连续子数组&#xff0c; 我的思路是用一个temp记录局部最优值&#xff0c;用ans记录全局最优值。 然后在每次for循环进行一个判断&#xff1a;当前遍历元素temp值 是否大于当前遍历元素的值&#xff0c;如果大于&#xff0c;说明temp值是帮了正忙的&a…

第12章 Linux 实操篇-Linux磁盘分区、挂载

12.1 Linux 分区 12.1.1 原理介绍 (1) Linux来说无论有几个分区&#xff0c;分给哪一目录使用,它归根结底就只有一个根目录&#xff0c;一个独立且唯一的文件结构, Linux中每个分区都是用来组成整个文件系统的一部分。 (2) Linux采用了一种叫“载入”的处理方法&#xff0c;…

临床医学怎样翻译比较 好

近年来&#xff0c;随着不同国家之间医药行业形成的共同研究趋势&#xff0c;临床翻译对于来自不同国家的医疗人员的合作至关重要。那么&#xff0c;临床医学怎样翻译比较 好&#xff0c;北京哪个翻译公司比较专业&#xff1f; 据了解&#xff0c;临床医学翻译包含患者病历记录…

selenium自动化-获取元素属性信息

在写自动化过程中我们会想验证自己的代码是否正确&#xff0c;比如登录之后&#xff0c;通过用户名或其他信息来证明你登录成功&#xff0c;或者点击链接后&#xff0c;是否会跳转新的页面。通过获取元素属性信息&#xff0c;可以解决我们的疑惑。 一、获取内容对象的内容信息 …

专题-【排序比较】

时间最好&#xff1a;直接和冒泡&#xff0c;n 堆排序和归并时间固定&#xff1a;nlog2n 空间&#xff1a;归并&#xff0c;n&#xff1b;快速&#xff0c;log2n 稳定&#xff1a;直冒归基

Spring 6【Resources资源和资源加载】(九)-全面详解(学习总结---从入门到深化)

目录 Resources资源和资源加载 Resources资源和资源加载 1.为什么要讲解Resources 在Java中 java.net.URL类是统一资源定位符的抽象&#xff0c;主要用于描述互联网上资源的一个字符串。一般语 法为&#xff1a; scheme:[//authority]path[?query][#fragment] 例如&#…

JavaScript学习 -- HMAC算法基本原理

HMAC&#xff08;Hash-based Message Authentication Code&#xff09;算法是一种基于哈希算法的消息认证码算法。它可以用于验证和保护数据在传输过程中的完整性和真实性。在JavaScript中&#xff0c;我们可以使用HMAC算法来保证数据的安全性。本篇文章将介绍HMAC算法的基本原…

超详细三子棋(保姆级教学)

超详细三子棋&#xff08;保姆级教学&#xff09; 一、模块化程序设计&#xff08;多文件编程&#xff09;介绍1.概述2.传统编程的方式3.模块化程序设计的方法二、三子棋(含多子棋)代码设计思路三、三子棋代码设计1.创建菜单函数2.实现多子棋3.棋盘初始化4.打印棋盘格式5.玩家下…

使用express搭建后端服务

目录 1 创建工程目录2 初始化3 安装express依赖4 启动服务5 访问服务总结 上一篇我们利用TDesign搭建了前端服务&#xff0c;现在的开发讲究一个前后端分离&#xff0c;后端的话需要单独搭建服务。后端服务的技术栈还挺多&#xff0c;有java、php、python、nodejs等。在众多的技…

hbase(1)-基础

1、hbase产生背景 hadoop只能执行批量处理&#xff0c;并且只能以顺序方式访问数据&#xff0c;这意味着即使最简单的搜索工作&#xff0c;也必须搜索整个数据集。那么当处理一个庞大的数据集&#xff0c;也是按照顺序处理一个巨大的数据集。 基于上述hadoop的限制&#xff0…

股东分红税高达20%,该怎么节税?

股东分红税高达20%&#xff0c;该怎么节税&#xff1f; 别吃大亏了!股东分红个税高达20%&#xff0c;这样做节税很实在&#xff01; 《税筹顾问》专注于园区招商、企业税务筹划&#xff0c;合理合规助力企业节税&#xff01; 企业成立的初衷就是为了赚钱&#xff0c;以盈利为…

ts中声明引入未使用的报错——解决方案

在编写ts项目的时候&#xff0c;经常会出现如下报错&#xff1a; 导入声明中的所有导入都未使用 这是因为导入的模块暂时没有使用&#xff0c;ts给的一个提示信息 解决方案&#xff1a; 在ts.config.json中 把noUnusedLocals 设置为false即可 {"compilerOptions"…

进阶 vue自定义指令 vue中常用自定义指令以及应用场景,案例书写

文章目录 vue3自定义指令1.什么是自定义指令&#xff1f;2.注册自定义指令2.1 全局注册2.2 局部注册<script setup>中注册&#xff1a;<script>中使用&#xff1a; 3.钩子函数参数详解4.指令传值5.总结 常用自定义指令案例v-longpress 长按v-debounce 防抖v-thrott…

微信怎么实现自动通过好友请求后自动回复呢?

每天都很忙碌 今天特别忙“录” 每天打开微信后&#xff0c; 第一件事就是回复客户&#xff0c; 但是经过一个小时、两个小时后发现&#xff0c; 只回复了昨晚留言的那一批客户&#xff0c; 还没有来得及回复刚刚发来的信息。 此外&#xff0c;通讯录中有99个客户等待手动…

代理模式-对象的间接访问

现在朋友圈有好多做香港代购的微商&#xff0c;大部分网民无法自己去香港购买想要的商品&#xff0c;于是委托这些微商&#xff0c;告诉他们想要的商品&#xff0c;让他们帮我们购买。我们只需要付钱给他们&#xff0c;他们就会去香港购买&#xff0c;然后把商品寄给我们。这就…

测试常见前端bug

目录 协作 测试方法 标签&#xff1a;标签 内容/ref/ 判断 arr&&arr.length 交互 样式不生效&#xff1a;devtools查找&#xff0c;编译前的标签&#xff0c;运行时不一定存在 可交互的需要提示 hover样式 没有交互逻辑&#xff0c;就不要设置交互 无法交互…

pytorch学习——模型选择

一.概念 模型选择是机器学习中的重要环节&#xff0c;它涉及到从各种统计&#xff0c;机器学习或深度学习模型中选取最佳模型的过程。这涉及到许多关键概念&#xff0c;包括偏差与方差&#xff0c;过拟合与欠拟合&#xff0c;训练误差和泛化误差&#xff0c;交叉验证&#xff0…

【Linux下6818开发板(ARM)】硬件空间挂载

(꒪ꇴ꒪ ),hello我是祐言博客主页&#xff1a;C语言基础,Linux基础,软件配置领域博主&#x1f30d;快上&#x1f698;&#xff0c;一起学习&#xff01;送给读者的一句鸡汤&#x1f914;&#xff1a;集中起来的意志可以击穿顽石!作者水平很有限&#xff0c;如果发现错误&#x…

HTML基础知识点总结

目录 1.HTML简介 2.HTML基础结构 主要字符&#xff1a; 3.基础知识 &#xff08;一&#xff09;p标签 &#xff08;二&#xff09;hr标签 &#xff08;三&#xff09;尖角号 &#xff08;四&#xff09;版权号 (五)div和span div span (六)列表 &#xff08;1&…

Python爬虫实战(进阶篇)—6获取微某博信息(附完整代码)

转眼将就来到了我们爬虫基础课的第 6 节课,今天我们来获取微某博信息来进行阅读学习! PS前面几节课的内容在专栏这里,欢迎大家考古:点我 首先第一步我们先登录一下微x博:点我 点击左上角的搜索框,找到你想获取的用户: 大家可以看到这里有两种搜索方式: 1、按照关键字…