Vue 组件化编程

Vue 组件化编程

非单文件组件

定义组件

使用Vue.extend(options)创建

  • 不要写el
  • data要写成函数,避免组件被复用时,数据存在引用关系

注册组件

  • 局部注册:new Vue()的时候,options传入components
  • 全局注册:Vue.Component("组件名",组件)
全局注册
<div id="app">
        <!-- 使用组件 -->
        <school></school>
        <!-- 单标签写法需要在脚手架坏境下使用 -->
        <!-- <school /> -->
    </div>
Vue.config.productionTip = false;
    // 定义组件
    const school = Vue.extend({
        template: `
        <div>
            <h1>我是一个school组件</h1>
            <h1>我是:{{userName}}</h1>
            <h1>我是:{{func()}}</h1>
        </div>
        `,
        data() {
            return {
                userName: "张三"
            }
        },
        methods: {
            func() {
                return 100;
            }
        }
    })
    // 全局注册组件
    Vue.component("school", school);
    var vm = new Vue({
        el: "#app",
        data() {
            return {}
        },
    })
局部注册
<div id="app">
        <!-- 使用组件 -->
        <school></school>
        <!-- 单标签写法需要在脚手架坏境下使用 -->
        <!-- <school /> -->
    </div>
Vue.config.productionTip = false;
    // 定义组件
    const school = Vue.extend({
        template: `
        <div>
            <h1>我是一个school组件</h1>
            <h1>我是:{{userName}}</h1>
            <h1>我是:{{func()}}</h1>
        </div>
        `,
        data() {
            return {
                userName: "张三"
            }
        },
        methods: {
            func() {
                return 100;
            }
        }
    })
    // 全局注册组件
    // Vue.component("school", school);
    var vm = new Vue({
        el: "#app",
        data() {
            return {}
        },
        // 局部注册组件
        components:{
        	school;
    })

组件嵌套

<div id="app"></div>
 Vue.config.productionTip = false;
    //定义student组件
    const student = Vue.extend({
        name: 'student',
        template: `
                  <div>
                      <h4>学生姓名:{{name}}</h4>	
                      <h4>学生年龄:{{age}}</h4>	
                </div>
              `,
        data() { return { name: '张三', age: 18 } }
    })

    //定义school组件
    const school = Vue.extend({
        name: 'school',
        template: `
                  <div>
                      <h3>学校名称:{{name}}</h3>	
                      <h3>学校地址:{{address}}</h3>	
                      <student></student>
                 </div>
              `,
        data() { return { name: '某某大学', address: '北京' } },
        //注册组件(局部)
        components: { student }
    })

    //定义hello组件
    const hello = Vue.extend({
        template: `<h3>{{msg}}</h3>`,
        data() { return { msg: '欢迎来到某某大学学习!' } }
    })

    //定义app组件
    const app = Vue.extend({
        template: `
                  <div>	
                      <hello></hello>
                     <school></school>
                </div>
              `,
        components: { school, hello }
    })

    //创建vm
    new Vue({
        el: '#app',
        template: '<app></app>',
        //注册组件(局部)
        components: { app }
    })

在这里插入图片描述

  1. Vue.extend()方法本质就是实例化VueComponent构造函数
  2. 两种注册方法的区别:
    全局注册:只需要注册一次,在任何组件中都可以使用
    局部注册:在变量A中注册,只能在A中使用组件
  3. VueComponent.prototype.__proto__===Vue.prototype

组件命名特性:

  1. 可以使用小写或者大写首字母都会自动转为大写
  2. my-schoolmyschool 都为转为同样格式的 MySchool,但是myschool需要在脚手架坏境下使用
  3. 使用的组件名可以不和组件定义的名字相同,组件名可以自定义
  4. 使用的组件名需要规避HTML中已有的元素标签名称

单文件组件

MySchool.vue
<template>
    <h1>我是MySchool组件</h1>
</template>

<script>
export default {
    name:"MySchool",  // 不能使用单个单词,如school
    data(){
        return{
            msg:"欢迎学习vue",
        }
    }
}
</script>

<style>

</style>
MyStudent.vue
<template>
    <h1>我是MyStudent.组件</h1>
</template>

<script>
export default {
    name:"MyStudent.",  // 不能使用单个单词,如school
}
</script>

<style>

</style>
MyApp.vue
<template>
	<div id="app">
        <MySchool></MySchool>
        <MyStudent></MyStudent>
    </div>
</template>

<script>
// 导入
import MySchool from './MySchool.vue';
import MyStudent from './MyStudent.vue';
export default {
    name:"MyApp.",  // 不能使用单个单词,如school
    // 注册
    components:{
    	MySchool,
    	MyStudent
    }
}
</script>

<style>

</style>

在这里插入图片描述


  • 失联

最后编辑时间 2024,3,31;16:32

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Linux 个人笔记之三剑客 grep sed awk

文章目录 零、预一、grep 文本过滤工具基础篇实战篇 二、sed 字符流编辑器基础篇实战篇 三、awk 文本处理工具基础篇实战篇 四、附xargsuniq & sort基础篇实战篇 cut 零、预 bash 的命令行展开 {} $ echo file_{1..4} file_1 file_2 file_3 file_4$ echo file_{a..d} file_…

高等数学基础篇(数二)之多元函数的基本概念

多元函数基本概念&#xff1a; 一、多元函数的极限 二、多元函数的连续性 三、偏导数 四、全微分 目录 一、多元函数的极限 二、多元函数的连续性 三、偏导数 1.偏导数的定义 2.二元函数偏导数的几何意义 3.高阶偏导数 四、全微分 补充&#xff1a; 一元函数极限连…

BIONIOAIO

通信技术整体解决的问题 1.局域网内的通信要求 2.多系统间的底层消息传递机制 3.高并发下&#xff0c;大数据量的通信场景需要 4.游戏行业。无论是手游服务端、还是大型网络游戏&#xff0c;java的应用越来越广 IO模型基本说明 就是用什么样的通道或者说是通信模式和架构…

数学逻辑专题

数学专题 分治篇LeetCode 263. 丑数解题思路代码实现总结 不要纠结&#xff0c;干就完事了&#xff0c;熟练度很重要&#xff01;&#xff01;&#xff01;多练习&#xff0c;多总结&#xff01;&#xff01;&#xff01; 分治篇 LeetCode 263. 丑数 解题思路 为判断 nnn 是否…

前端实现菜单搜索搜索(功能模版)

目录 前言正文 前言 总体界面如下所示&#xff1a; 正文 <template><div class"avue-searchs"click.self"handleEsc"><div class"avue-searchs__title">菜单搜索</div><div class"avue-searchs__content"…

以XX医院为例的医疗建筑能效管理系统【建筑能耗 供电可靠 】

一、行业背景 二、行业特点 1.供电可靠性要求高&#xff1a;医院配电系统复杂&#xff0c;门诊、急救、手术室、ICU/CCU、血液透析等场合特一级和一级负荷比较多&#xff0c;一旦发生故障会造成严重影响&#xff0c;对配电可靠性要求极高。 2.能耗水平高&#xff1a;医院能耗…

Vue.js基础指令

&#xff08;在讲指令之前&#xff0c;可以先了解插值表达式&#xff0c;如果已经知道&#xff0c;当我没说&#xff09; 一.插值表达式 1.数据绑定最常见的形式就是双大括号的文本插值&#xff0c;Mustache上属性的值替代。只要绑定的数据对象上属性发生了改变&#xff0c;插…

10_MVC

文章目录 JSON常用的JSON解析Jackson的常规使用指定日期格式 MVC设计模式MVC介绍前后端分离案例&#xff08;开发与Json相关接口&#xff09; 三层架构三层架构介绍 JSON JSON&#xff08;JavaScript Object Notation&#xff09; 是一种轻量级的数据交换格式&#xff0c;是存…

【教学类-09-03】20240401细线迷宫图02(A4横版一页-2份竖版)

作品展示&#xff1a; 背景需求&#xff1a; 【教学类-09-02】20240331细线迷宫图01&#xff08;A4横版一页1份横版&#xff09;-CSDN博客文章浏览阅读779次&#xff0c;点赞28次&#xff0c;收藏6次。【教学类-09-02】20240331细线迷宫图01&#xff08;A4横版一页1份横版&…

【2012 统考真题/完整代码】找单词共同后缀的起始位置

题目 假定采用带头结点的单链表保存单词&#xff0c;当两个单词有相同的后缀时&#xff0c;则可共享相同的后缀存储空间&#xff0c;例如&#xff0c;“loading”和“being”的存储映像如下图所示。 设str1和str2分别指向两个单词所在单链表的头结点&#xff0c;链表结点结构为…

PTA L2-043 龙龙送外卖

龙龙是“饱了呀”外卖软件的注册骑手&#xff0c;负责送帕特小区的外卖。帕特小区的构造非常特别&#xff0c;都是双向道路且没有构成环 —— 你可以简单地认为小区的路构成了一棵树&#xff0c;根结点是外卖站&#xff0c;树上的结点就是要送餐的地址。 每到中午 12 点&#…

【Linux】权限理解

权限理解 1. shell命令以及运行原理2. Linux权限的概念3. Linux权限管理3.1 文件访问者的分类&#xff08;人&#xff09;3.2 文件类型和访问权限&#xff08;事物属性&#xff09;3.2.1 文件类型3.2.2 基本权限 3.3 文件权限值的表示方法3.4 文件访问权限的相关设置方法3.4.1 …

Taskflow应用:波前并行(Wavefront Parallelism)

2D的Wavefront如下图所示&#xff1a; #include <taskflow/taskflow.hpp>std::mutex cout_mutex; void format_str(std::string const& str) {std::lock_guard<std::mutex> lock(cout_mutex); std::cout << str << std::endl; }std::string crea…

算法编程:计算斐波那契数列

实现代码&#xff1a;C 实现方法&#xff1a;通过递推法、递归法、矩阵快速幂方法 适用&#xff1a; 范围小且单次查询时&#xff0c;可以不用记忆化处理。 范围大或多次查询时&#xff0c;应使用记忆化处理。 时间复杂度&#xff1a; 递归法&#xff1a;O(n^2)-->递推法(…

三台电机的顺启逆停

1&#xff0c;开启按钮输入信号是 电机一开始启动&#xff0c;5秒回电机2启动 &#xff0c;在5秒电机三启动 关闭按钮输入时电机3关闭 &#xff0c;5秒后电机2关闭 最后电机一关闭 2&#xff0c;思路开启按钮按下接通电机1 并且接通定时器T0 定时器T0 到时候接通电机2 并且开…

YOLOV8逐步分解(3)_trainer训练之模型加载

yolov8逐步分解(1)--默认参数&超参配置文件加载 yolov8逐步分解(2)_DetectionTrainer类初始化过程 接上2篇文章&#xff0c;继续讲解yolov8训练过程中的模型加载过程。 使用默认参数完成训练器trainer的初始化后&#xff0c;执行训练函数train()开始YOLOV8的训练。 1. t…

windows下安装iteliij Idea2023.3

首先从官网下载 双击打开进行安装&#xff1a; 安装完成后&#xff0c;需要对Idea进行稍微处理下。使用我分享给大家的文件&#xff0c;操作以下步骤&#xff1a; 注意&#xff1a;不能打开IDEA软件。 进入到scripts中点击uninstall-all-users.vbs,最后点击确定。 接下来运行in…

如何成功找到理想的工作,java不行了吗?我靠这个方法成功拿到大厂10个offer

第一段&#xff1a;引言 作为一名即将毕业的大学生&#xff0c;步入职场是每个毕业生都要面对的现实挑战。随着社会竞争的日益激烈&#xff0c;如何成功找到一份理想的工作成为许多毕业生所关注的焦点。本文将分享一些关于毕业生求职的经验和建议&#xff0c;希望能够帮助毕业生…

图的遍历试题

一、单项选择题 01.下列关于广度优先算法的说法中&#xff0c;正确的是( ). Ⅰ.当各边的权值相等时&#xff0c;广度优先算法可以解决单源最短路径问题 Ⅱ.当各边的权值不等时&#xff0c;广度优先算法可用来解决单源最短路径问题 Ⅲ.广度优先遍历算法类似于树中的后序遍历算法…

C++中的动态内存管理

1.C中动态内存管理 C语言内存管理方式在C中可以继续使用&#xff0c;但有些地方就无能为力&#xff0c;而且使用起来比较麻烦&#xff0c;因此C又提出了自己的内存管理方式&#xff1a;通过new和delete操作符进行动态内存管理。 1.1 new/delete操作内置类型 c语言和c的动态内存…