vue非单文件组件

news2024/10/5 16:26:05

非单文件组件指的是:一个文件中包含了多个组件。

Vue 中使用组件的三大步骤:1. 创建组件、2. 注册组件、3. 使用组件。

 组件使用流程【第一步:创建组件】

利用 Vue.extend() 方法创建组件:

// 第一步:创建 frameHead 组件
const FrameHead = Vue.extend({
	name: "fhead",
	template:`
		<div>
			<strong>{{title}}</strong>
			<span>{{username}}</span>
		</div>
	`,
	data(){
		return {
			title: "商城管理系统",
			username: "张三"
		}
	}
})

// 第一步:创建 frameNav 组件【简写】
// const 组件名 = Vue.extend(配置对象) 可以简写为:const 组件名 = 配置对象;
const FrameNav = {
	template:`
		<ul>
			<li v-for="(item,index) in list" :key="index" @click="isHref(item)">
				{{item}}
			</li>
		</ul>
	`,
	data(){
		return {
			list: ["首页","用户管理","商品管理","轮播图管理"]
		}
	},
	methods:{
		isHref(name){
			alert(`跳转至${name}`);
		}
	}
}

:Vue.extend() 中的内容和 new Vue() 中的内容基本一样,也可以写 data 数据、methods 方法、计算属性等内容。它们的区别在于:

- 组件中不可以写 el ,因为所有的组件都要经过一个 Vue 实例管理,由 Vue 实例决定服务那个容器。

- 组件中的 data 必须写成函数,因为避免多次使用组件时,数据存在引用的问题(多个组件共用一块数据的问题)。

- 组件需要使用 template 配置结构内容,另外 template 中必须有一个最大的根元素包裹所有内容。

- 组件中可以使用 name 配置别名,常用于组件缓存过滤。

组件简写:const 组件名 = Vue.extend(配置对象) 可以简写为:const 组件名 = 配置对象

组件使用流程【第一步:注册组件】

局部注册:利用 new Vue 的时候配置 components 选项

const vm = new Vue({
	el: "#APP",
	// 第二步:注册组件(局部注册)
	components:{
		// FrameHead: FrameHead, 名称相同时可以简写
		FrameHead,
		FrameNav
	},
	data(){
		return {
			content: "网页内容"
		}
	}
});

:组件名是由注册组件时指定的,多个单词时可以用大驼峰命名 MyCode 或者短横线命名 my-code 。另外命名时尽量避免 HTML 中已有的元素名称,例如:h2、H2 都不行。

组件使用流程【第三步:使用组件】

<div id="APP">
	<!-- 第三步:使用组件 -->
	<frame-head></frame-head>
	<hr/>
	<!-- 第三步:使用组件 -->
	<frame-nav></frame-nav>
	<hr/>
	<p>{{content}}</p>
</div>

:使用组件就跟使用标签一样。如果是多个单词,需要使用短横线命名 my-code,在脚手架中也可以使用大驼峰命名 MyCode 。另外在脚手架中还可以写成单标签的格式,但是不使用脚手架时,写成单标签会导致后续的组件不能渲染。

 组件使用流程【完整代码】

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title>Vue2非单文件组件使用流程</title>
		<script src="./js/vue.js"></script>
	</head>
	<body>

		<div id="APP">
			<!-- 第三步:使用组件 -->
			<frame-head></frame-head>
			<hr />
			<!-- 第三步:使用组件 -->
			<frame-nav></frame-nav>
			<hr />
			<p>{{content}}</p>
		</div>

		<script>
			// 第一步:创建 frameHead 组件
			const FrameHead = Vue.extend({
				name: "fhead", // 定义别名
				template: `
					<div>
						<strong>{{title}}</strong>
						<span>{{username}}</span>
					</div>
				`,
				data() {
					return {
						title: "商城管理系统",
						username: "张三"
					}
				}
			})

			// 第一步:创建 frameNav 组件【简写】
			// const 组件名 = Vue.extend(配置对象) 可以简写为:const 组件名 = 配置对象;
			const FrameNav = {
				template: `
					<ul>
						<li v-for="(item,index) in list" :key="index" @click="isHref(item)">
							{{item}}
						</li>
					</ul>
				`,
				data() {
					return {
						list: ["首页", "用户管理", "商品管理", "轮播图管理"]
					}
				},
				methods: {
					isHref(name) {
						alert(`跳转至${name}`);
					}
				}
			}

			const vm = new Vue({
				el: "#APP",
				// 第二步:注册组件(局部注册)
				components: {
					// FrameHead: FrameHead, 名称相同时可以简写
					FrameHead,
					FrameNav
				},
				data() {
					return {
						content: "网页内容"
					}
				}
			});
		</script>
	</body>
</html>

 

 

:组件化开发的好处就是,每个组件只负责一块功能,并且每个页面都能使用这个组件,可以提高代码的复用性。另外在开发者工具中显示的是组件的 name 属性定义的名字。

原创作者:吴小糖

创作时间:2023.5.12

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

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

相关文章

前端015_标签模块_删除功能

标签模块_删除功能 1、需求分析2、EasyMock 添加模拟接口3、Api 调用接口4、测试1、需求分析 当点击删除按钮后, 弹出提示框。点击确定后,执行删除并刷新列表数据 确认消息弹框参考:https://element.eleme.cn/#/zh-CN/component/message-box#que-ren-xiao-xi 2、EasyMock …

【AUTOSAR】【以太网】TCPIP

目录 一、概述 二、约束和假设 三、依赖模块 3.1 EthIf 3.2 EthSM 3.3 SoAd 3.4 KeyM 3.5 CSM 四、功能说明 4.1 系统扩展性 4.2 IPv4 4.2.1 IPv4 4.2.2 ARP 4.2.3 Auto-IP 4.2.4 ICMP 4.3 IPv6 4.4 IPSec 4.5 基于IP的协议 4.5.1 本地地址表 4.5.2 UDP 4…

音视频八股文(12)-- ffmpeg 音频重采样

1重采样 1.1 什么是重采样 所谓的重采样&#xff0c;就是改变⾳频的采样率、sample format、声道数等参数&#xff0c;使之按照我们期望的参数输出。 1.2 为什么要重采样 为什么要重采样&#xff1f;当然是原有的⾳频参数不满⾜我们的需求&#xff0c;⽐如在FFmpeg解码⾳频…

【C++初阶】类和对象(四)

​ ​&#x1f4dd;个人主页&#xff1a;Sherry的成长之路 &#x1f3e0;学习社区&#xff1a;Sherry的成长之路&#xff08;个人社区&#xff09; &#x1f4d6;专栏链接&#xff1a;C初阶 &#x1f3af;长路漫漫浩浩&#xff0c;万事皆有期待 上一篇博客&#xff1a;【C初阶】…

(二)zookeeper实战——zookeeper集群搭建

前言 本节内容我们主要介绍一下如何在centos系统下搭建一套高可用的zookeeper集群&#xff0c;zookeeper是我们常用的中间键之一&#xff0c;例如使用zookeeper实现分布式锁、Hadoop集群高可用、kafka集群高可用等等。我们以以下三台服务器为例&#xff1a; zookeeper服务器 I…

R语言tidyverse教程:ggplot2绘图初步

文章目录 基本流程渲染美化坐标轴设置 R语言系列&#xff1a; 编程基础&#x1f48e;循环语句&#x1f48e;向量、矩阵和数组&#x1f48e;列表、数据帧排序函数&#x1f48e;apply系列函数tidyverse&#xff1a;readr&#x1f48e;tibble 基本流程 ggplot2有其独特的绘图语…

【算法题】LCP 74. 最强祝福力场

插&#xff1a; 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站。 坚持不懈&#xff0c;越努力越幸运&#xff0c;大家一起学习鸭~~~ 题目&#xff1a; 小扣在探索丛林的过程中&#xff0…

MPLS格式和802.1q帧格式

一.MPLS IETF开发的多协议标记交换&#xff08;MPLS)把第2层的链路状态信息&#xff08;带宽、延迟、利用率等&#xff09;集成到第3层的协议数据单元中&#xff0c;从而简化和改进了第3层分组的交换过程 。理论上&#xff0c;MPLS支持任何第2层和第3层协议。MPLS包头的位置界…

web集群第一次作业

目录 一. 简述静态网页和动态网页的区别 二. 简述 Web1.0 和 Web2.0 的区别 三. 安装tomcat8&#xff0c;配置服务启动脚本&#xff0c;部署jpress应用。 一. 简述静态网页和动态网页的区别 1. 首先&#xff0c;两者的页面资源特征不同&#xff1a; 静态网页处理文件类型有…

【Linux】进程信号(完整版) --- 信号产生 信号保存 信号捕捉 可重入函数 volatile SIGCHLD信号等

&#x1f34e;作者&#xff1a;阿润菜菜 &#x1f4d6;专栏&#xff1a;Linux系统编程 文章目录 一、预备知识二、信号产生1. 通过终端按键产生信号1.1 signal()1.2 core dump标志位、核心存储文件 2.通过系统调用向进程发送信号3.由软件条件产生信号3.1 alarm函数和SIGALRM信号…

华为OD机试真题 Java 实现【知识图谱新词挖掘1】【2023Q1 100分】

一、题目描述 小华负责公司知识图谱产品&#xff0c;现在要通过新词挖掘完善知识图谱。 新词挖掘: 给出一个待挖掘文本内容字符串Content和一个词的字符串word&#xff0c;找到content中所有word的新词。 新词&#xff1a;使用词word的字符排列形成的字符串。 请帮小华实现新词…

【AI领域+餐饮】| 论ChatGPT在餐饮行业的应用展望

&#x1f482;作者简介&#xff1a; THUNDER王&#xff0c;一名热爱财税和SAP ABAP编程以及热爱分享的博主。目前于江西师范大学会计学专业大二本科在读&#xff0c;同时任汉硕云&#xff08;广东&#xff09;科技有限公司ABAP开发顾问。在学习工作中&#xff0c;我通常使用偏后…

二十五、SQL 数据分析实战(9个中等难度的SQL题目)

文章目录 题目1: App 使用频率分析题目2: App 下载情况统计题目3: 寻找活跃学习者题目4: 商品分类整理题目5: 商品销售分析题目6: 网约车司机收益统计题目7: 网站登录时间间隔统计题目8: 不同区域商品收入统计题目9: 信贷逾期情况统计 题目1: App 使用频率分析 现有一张用户使…

BM64-最小花费爬楼梯

题目 给定一个整数数组 cost&#xff0c;其中 cost[i] 是从楼梯第i个台阶向上爬需要支付的费用&#xff0c;下标从0开始。一旦你支付此费用&#xff0c;即可选择向上爬一个或者两个台阶。 你可以选择从下标为 0 或下标为 1 的台阶开始爬楼梯。 请你计算并返回达到楼梯顶部的…

【C++初阶】类和对象(下)

一.再谈构造函数 构造函数其实分为&#xff1a; 1.函数体赋值 2.初始化列表 之前所讲到的构造函数其实都是函数体赋值&#xff0c;那么本篇文章将会具体讲述初始化列表。 初始化列表 语法 以一个冒号开始&#xff0c;接着是一个以逗号分隔的数据成员列表&#xff0c;每个"…

学成在线笔记+踩坑(11)——认证授权介绍、网关认证,SpringSecurity+JWT+OAuth2

导航&#xff1a; 【黑马Java笔记踩坑汇总】JavaSEJavaWebSSMSpringBoot瑞吉外卖SpringCloud黑马旅游谷粒商城学成在线牛客面试题_java黑马笔记 目录 1 【认证模块】需求分析 1.1 什么是认证授权 1.2 业务流程 1.2.1 统一认证 1.2.2 SSO单点登录 1.2.3 第三方认证 2 Spr…

java面试笔记-01-集合面试题-介绍

好了,各位同学。下面我们开始新的篇章。就是Java集合相关的面试题。相信啊,说到集合呢,你肯定是比较熟悉的。在我们之前的课程中或者是学习中,大家用过哪些集合比较多呢?List,还有Map对吧? 虽然呢,你使用起来很熟悉,但是在面试的时候,面试官呢,可不会问一些使用的问…

算法修炼之练气篇——练气三层

博主&#xff1a;命运之光 专栏&#xff1a;算法修炼之练气篇 &#x1f353;&#x1f353;十进制数转化为十进制以下任意进制&#xff08;常用记忆一下&#xff09; #include<stdio.h> int main() {//输入10 2意思就是输入十进制10转化为2进制是多少。//输出1010int num…

Learn RabbitMQ with SpringBoot

文章目录 What is RabbitMQ?RabbitMQ Core conceptRabbitMQ ArchitectureInstall and setup RabbitMQ using DockerExplore RabbitMQ using management UICreate and setup Springboot3 project in intellijSpringboot and RabbitMQ Basic MessageConnection between Springbo…

【C++ 入坑指南】(03)Hello World

大概每个程序猿的第一个程序都是 Hello World , 这是梦开始的地方。本文是C 入坑指南的第三篇&#xff0c;让我们从最经典的 Hello World 开始。 看代码 #include <iostream>using namespace std;int main() {cout << "Hello, world!" << endl;r…