vue组件化开发流程梳理,拿来即用

news2024/12/22 23:23:50

在这里插入图片描述

✨✨ 欢迎大家来到景天科技苑✨✨

🎈🎈 养成好习惯,先赞后看哦~🎈🎈

🏆 作者简介:景天科技苑
🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN新星创作者,51CTO博客专家等。
🏆《博客》:Python全栈,前后端开发,人工智能,js逆向,App逆向,网络系统安全,数据分析,Django,fastapi,flask等框架,linux,shell脚本等实操经验,网站搭建,面试宝典等分享。

所属的专栏:前端零基础,实战进阶教学
景天的主页:景天科技苑

文章目录

  • vue组件化开发
    • 组件[component]
    • 局部组件
    • 局部声子
    • 挂子
    • 用子
    • 挂子简化写法
    • 默认组件(全局组件)
    • 组件的使用

vue组件化开发

组件[component]

组件(Component)是自定义封装的功能。在前端开发过程中,经常出现多个网页的功能是重复的,而且很多不同的网站之间,也存在同样的功能。

而在网页中实现一个功能,需要使用html定义功能的内容结构,使用css声明功能的外观样式,还要使用js来定义功能的特效,因此就产生了把一个功能相关的[HTML、css和javascript]代码封装在一起组成一个整体的代码块封装模式,我们称之为“组件”。

所以,组件就是一个html网页中的功能,一般就是一个标签,标签中有自己的html内容结构,css样式和js特效。

这样,前端人员就可以在开发时,只需要书写一次代码,随处引入即可使用。

每一个组件只负责对应的结构,样式和交互,各司其职,互不干扰,然后由这些一个又有一个的组件组成了一个完整的页面。
且网页被拆分为组件后,我们就可以进行组件化编码,最直观的优点或亮点就是,组件复用,也就是多个网页相同的部分,只需要写一个组件然后按需引入就行。

vue框架就是做单页面应用的,就是一个html页面,搞定整个网站,所有页面显示效果

比如比较知名的网站:掘金 https://juejin.cn/ 完全用vue写的

在这里插入图片描述

每个网站都可以分为固定的几个区域,称为布局。每个区域都是由组件组合而成,当点击不同的区域,又由不同的组件拼凑而成
整个网站的布局类似,由一个html完成

局部组件

三步:声子、用子、挂子

注意:每个组件中的template对应的标签,都必须有一个外层标签包裹

局部声子

//组件化开发,每块页面的功能单独开发,比如对顶部导航栏,组件可以使用el之外vue的任何属性
// 组件化开发(将页面的每块功能,单独封装为一个组件,哪个页面用哪些组件,就直接拿到这几个组件,拼到页面上展示)
//定义一个组件,就是声明子组件,简称声子
let Vheader = {
    //组件的属性必须用函数方式来写
    data(){
        return{
            nav_lst: ['个人中心','登录','注册']
        }
    },
    //组件要有自己的标签,用标签将组件自己的属性包裹起来,外层必须有一个标签套着里面的所有标签
    template: '<h1>{{nav_lst}}</h1>'

};

挂子

局部声子需要挂载在vue对象,或其他组件里面

//声明完子组件,要在vue根组件处或其他组件上挂载,挂载用compoents属性
let vm = new Vue({
    el:'#app',
    data(){
        return{
        }
    },

    //挂载子组件,简称挂子。components,先给组件起个名称
    components:{
        xx: Vheader  //xx就是给挂载的子组件起的别名/名称,可以直接在html中当做标签来使用
    }


  });

用子

在html中把挂载的别名当做标签来使用

  <div id="app">
      <!--  使用子组件,简称用子。直接用挂载时给子组件创建的名称,当做标签来使用    -->
      <!--    content  header footer aside section nav H5有一些新标签,注意,组件名称尽量不要和html自带标签名称冲突 -->
      <xx></xx>

  </div>

浏览器展示
在这里插入图片描述

如果还想用其他子组件,同样也需要 声子,挂子,用子 这三个步骤
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

挂子简化写法

    //挂载子组件,简称挂子。components,先给组件起个名称
    components:{
        // xx: Vheader,  //xx就是给挂载的子组件起的名称,可以直接在html中当做标签来使用
        // xx2:Vcontent,

        //在写挂子的时候,可以让键和值相同,都是用定义组件时的名称,这样只需要写一个
        // Vheader:Vheader, //这时原始写法
        Vheader,  //这是简化写法
        Vcontent
    }


  });

用子直接使用组件名作为标签调用
在这里插入图片描述
在这里插入图片描述

上面声明的组件,挂载到了哪个vue对象中,只能在哪个vue对象中使用,如果vue对象比较多,而且都要用到组件,一个个挂载就比较麻烦
此时,使用全局组件比较好

全局组件,不需要挂载

// 全局组件  不需要挂载,直接使用。Kk是组件名称,就是局部组件挂载时起的名称,可以当做标签直接在html中使用

   //全局组件,直接用Vue.component()来创建,component不用加s。里面两个参数,第一个是组件类似挂载的名称,第二个是组件内容
    Vue.component('qj',{
        data(){
            return {
                name: '全局组件'
            }
        },
        template: '<h1 style="background-color:red;">{{name}}</h1>'
    })

直接使用
在这里插入图片描述
在这里插入图片描述

默认组件(全局组件)

直接看代码,局部组件使用时需要挂载,全局组件使用时不需要挂载。那么他们两个什么时候用呢,局部组件就在某个局部使用的时候,全局组件是大家公用的,或者说每个页面都有这么一个功能的时候,在哪里可能都会用到的时候。

组件的使用

我们在进行vue开发的时候,还记得我们自己创建的vm对象吗,这个vm对象我们称为一个大组件,根组件(页面上叫Root),在一个网页的开发中,根据网页上的功能区域我们又可以细分成其他组件,或称为子组件
在这里插入图片描述

组件有两种:默认组件[全局组件] 和 单文件组件[局部组件]

生产中,vue对象一般只用来圈地,里面不会写太多数据属性
具体的属性一般都写在子组件中

// 生产中,声明个App总组件,该组件不做数据处理,声明模板,其他组件都挂载在该组件下,vue对象下只挂载该组件
let App = {
    template:
    `<div class="App">
        <Vheader></Vheader>
        <Vcontent></Vcontent>
    </div>`,

    components: {
        Vheader,
        Vcontent
    }


}

Vue对象处挂载组件

 //Vue对象处挂载组件
    let vm = new Vue({
        el:'#app',
        data(){
            return{
            }
        },

        //挂载子组件,简称挂子。components,这里只挂载总组件APP
        components:{
            App
        }

      });

html处只需要App标签即可展示左右子组件的数据

<body>
  <div id="app">
    <!--html这里只需要将总组件标签写在这里,子组件的数据都将展示。也可以根据需求展示全局组件-->
      <App></App>
      <qj></qj>

  </div>

</body>

在这里插入图片描述

这样做方便管理,各个组件各自管理各自的

调用时也可以使用自封闭形式写标签,如下

 <App />  但可能会有点问题导致页面混乱,所以还是建议使用全封闭标签

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

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

相关文章

Revit二次开发-导出DWG设置

Revit二次开发 笔记 导出DWG ///导出Dwg/CADIList<string> setups DWGExportOptions.GetPredefinedSetupNames(doc);//获取当前导出已设置的类型DWGExportOptions dwgoptins DWGExportOptions.GetPredefinedOptions(doc, setups.LastOrDefault());//获取指定setups nam…

MybatisPlus-Generator自定义模版生成CRUD、DTO、VO、Convert等

个人博客&#xff1a;无奈何杨&#xff08;wnhyang&#xff09; 个人语雀&#xff1a;wnhyang 共享语雀&#xff1a;在线知识共享 Github&#xff1a;wnhyang - Overview 简介 如标题所言&#xff0c;本篇文章介绍如何使用MybatisPlus-Generator自定义模版生成CRUD、DTO、V…

GRACE:梯度引导的可控检索增强基于属性的生成

在本文中&#xff0c;我们提出通过梯度引导的可控检索&#xff08;GRACE&#xff09;来增强基于属性的生成&#xff0c;考虑到目标属性&#xff08;见图1&#xff09;。具体来说&#xff0c;我们训练一个鉴别器来计算给定上下文的属性分布。我们构建了一个检索库&#xff0c;存…

用python写网络爬虫:2.urllib库的基本用法

文章目录 urllib库抓取网页data参数timeout参数更灵活地配置参数登录代理Cookies 参考书籍 建议新入门的小伙伴先看我同一专栏的文章&#xff1a;用python写网络爬虫&#xff1a;1.基础知识 urllib库 urllib是python中一个最基础的HTTP库&#xff0c;一般是内置的&#xff0c;…

数字经济时代,数据清洗不是件小事

对于企业来说&#xff0c;数据无疑是当前时代业务增长和发展决策的核心要素&#xff0c;也是数字经济探索中的基础建设。不过随着数字化的加速普及&#xff0c;企业需要存储、处理的数据越来越多&#xff0c;海量的数据已经让企业难以理解&#xff0c;很难全面进行利用。尤其是…

数字化转型下的新质生产力:赋能未来发展新引擎

1. 引言&#xff1a;数字化转型与新质生产力的交融共生 在信息化、智能化的新时代&#xff0c;数字化转型已经成为推动经济社会发展的重要力量。而新质生产力&#xff0c;作为面向新兴领域和未来产业的先进生产力&#xff0c;正在数字化转型的浪潮中焕发出新的生机与活力。 数…

机器人路径规划:基于深度优先搜索(Depth-First-Search,DFS)算法的机器人路径规划(提供Python代码)

一、深度优先搜索算法介绍 深度优先搜索算法&#xff08;Depth-First-Search&#xff09;的基本思想是沿着树的深度遍历树的节点&#xff0c;尽可能深的搜索树的分支。当节点v的所有边都己被探寻过&#xff0c;搜索将回溯到发现节点v的那条边的起始节点。这一过程一直进行到已…

PTA-练习3

目录 实验4-2-3 换硬币 实验4-2-4 输出三角形字符阵列 实验4-2-5 输出整数各位数字 实验4-2-6 梅森数 实验4-2-7 找完数 实验4-2-9 水仙花数 实验6-2 英文字母替换加密&#xff08;大小写转换后移1位&#xff09; 实验6-5 简单计算器 实验6-10 统计单词的长度 实验4-2…

财富池指标公式--通达信主力资金指标公式,主力资金流向怎么看?

今日分享的通达信主力资金指标公式&#xff0c;是一个分析主力资金进出的指标。 具体信号说明&#xff1a; 当紫色的起涨点主力资金线和红色的拉升资金同时上传0线&#xff0c;并且紫色的拉升线超过资金线&#xff0c;大盘进入派发阶段&#xff0c;后市看涨&#xff0c;是参考…

pinia 的选项式和组合式的不同写法和持久化的方法

pinia 是vue3推荐的状态管理插件&#xff0c;它对标的是vue2中使用的vuex pinia 的引入方法 npm 安装 pinia在 src/store/index.js 中 创建一个pinia 的实例&#xff0c;并导出 在项目中的 main.js 中引入 2 中的pinia 并且使用 app.use(pinia) main.js中 import pinia from…

100天精通Python(实用脚本篇)——第118天:基于selenium和ddddocr库实现反反爬策略之验证码识别

文章目录 专栏导读一、前言二、ddddocr库使用说明1. 介绍2. 算法步骤3. 安装4. 参数说明5. 纯数字验证码识别6. 纯英文验证码识别7. 英文数字验证码识别8. 带干扰的验证码识别 三、验证码识别登录代码实战1. 输入账号密码2. 下载验证码3. 识别验证码并登录 书籍推荐 专栏导读 …

第111讲:Mycat实践指南:固定Hash算法分片下的水平分表详解

文章目录 1.固定Hash算法分片的概念1.1.固定Hash算法的概念1.2.固定Hash算法是如何将数据路由到分片节点的 2.使用固定Hash算法分片对某张表进行水平拆分2.1.在所有的分片节点中创建表结构2.2.配置Mycat实现固定Hash算法分片的水平分表2.2.1.配置Schema配置文件2.2.2.配置Rule分…

VMware虚拟机和主机之间无法复制粘贴,移动文件,重新安装vmware-tools变灰,VMware Tools继续运行脚本未能在虚拟机中成功运行。

起初&#xff0c;虚拟机只是无法和主机之间进行复制粘贴&#xff0c;移动文件。查询了很多资料,反反复复地安装卸载vmware-tools&#xff0c;但是都没有成功。通过这篇文章&#xff1a;虚拟机安装VMware Tools的两种方法_vmware tools有3种安装方式-CSDN博客 安装了vmware_too…

PCIE收发时序了解

文章目录 一、Pcie的发送时序1.1 不带数据的TLP包1.2 带数据的TLP包1.3 连续发送数据的TLP包 二、Pcie的接收时序2.1 不带数据的TLP包2.2 带数据的TLP包2.3 连续接收数据的TLP包 三、riffa框架和用户channel的接口3.1 RX接口波形&#xff1a;3.2 TX接口波形&#xff1a; 一、Pc…

用python写网络爬虫:3.urllib库进一步的使用方法

文章目录 异常处理URLErrorHTTPError设置超时时间 链接的解析、构造、合并urlparse方法urlsplit方法urljoin方法urlencode方法parse_qs方法quote方法 Robots 协议Robots 协议的结构解析协议 参考书籍 在上一篇文章&#xff1a;用python写网络爬虫&#xff1a;2.urllib库的基本用…

SpringBoot3整合Knife4j4.x版本(Swagger3、OpenApi3)

&#x1f60a; 作者&#xff1a; 一恍过去 &#x1f496; 主页&#xff1a; https://blog.csdn.net/zhuocailing3390 &#x1f38a; 社区&#xff1a; Java技术栈交流 &#x1f389; 主题&#xff1a; SpringBoot3整合Knife4j4.x版本(Swagger3、OpenApi3) ⏱️ 创作时间&a…

【每日力扣】131.分割回文串与450.删除二叉搜索树中的节点

&#x1f525; 个人主页: 黑洞晓威 &#x1f600;你不必等到非常厉害&#xff0c;才敢开始&#xff0c;你需要开始&#xff0c;才会变的非常厉害。 131.分割回文串 给你一个字符串 s&#xff0c;请你将 s 分割成一些子串&#xff0c;使每个子串都是 回文串 。返回 s 所有可能的…

C#使用MiniExcel读取excel表格文件

使用MiniExcel读取excel表格文件 MiniExecl提供了几种读取方法。 准备测试数据 测试类&#xff1a; public class Person{public int Id { get; set; }public string Name { get; set; }public string Description { get; set; }public double Value { get; set; }}测试数据…

伦敦数据科学与Scikit-learn:一次探索与实践的旅程

1.题目 Data Science London正在举办一场关于Scikit-learn的聚会。 这个比赛是尝试、分享和创建 sklearn 分类能力示例的练习场&#xff08;如果这变成了有用的东西&#xff0c;我们可以跟进回归或更复杂的分类问题&#xff09;。Scikit-learn&#xff08;sklearn&#xff09;…

Django项目不显示图片,路径找不到

1.问题 创建Django项目简单写一个网页&#xff0c;文字能显示&#xff0c;图片却无法加载&#xff0c;路径错误&#xff0c;找不到图片。 2.背景 我的项目结构 C:. ├─.idea │ └─inspectionProfiles ├─app01 │ ├─migrations │ ├─templates │ │ ├─app0…