我是靠谱客的博主 美满翅膀,最近开发中收集的这篇文章主要介绍小白学习Vue(7)---创建组件(组件的data),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

一.简介

今天,肺炎已经开始好转了,新增人数在不断的下降,所以我觉得,只要坚持,没有什么事过不去的,包括学习,积少成多,知识一定可以积累上去的。

2020.2.11

今天其实学习状态不怎么样,但是还是学了前端框架和每日英语,但是对于数据结构和计算机网络的学习就咕咕咕了,今天都是被游戏害的,哎嘿嘿。

二.代码

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>组件方法</title>
		<!-- <script src="./lib/vue.js"></script> -->
		<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
	</head>
	<body>
		
		<div id="app"> 
			<!-- <p>{{msg}}</p>
			<p>{{msg2}}</p> -->
			<!-- 如果要使用组件,直接把组件名称,以HTML标签形式,引入页面 -->
			<mycom1></mycom1>
		</div>
		<script>
			//用extend来创建全局的vue组件
			// var com1 = Vue.extend({
			// 	template:'<h3>这是使用Vue.extend创建的组件</h3>'//通过template属性,指定组件的html结构
			// })
			//使用vue.component('组件名称',创建出来的模板对象)
			//如果用component定义全局组件的时候,使用驼峰命名(那么在引用的时候需要把 大写的驼峰字母改为小写,同时在两单词之间加上'-'
			//如果不是驼峰命名,那么直接进行引用就好了
			// Vue.component('mycom1',com1)
			
			
			//vue.component,第一个参数:组件的名称,将来在引入的时候,就是一个标签形式来引入它
			//第二个参数:vue.extend创建的组件,其中template就是组件将来要展示的html内容
			Vue.component('mycom1',Vue.extend({
				template:'<h3>hello</h3>'
			}))
			
			
			var vm  =new Vue({
				el:'#app',
				data:{
					
				}
			})
		</script>
	</body>
</html>

这是第一种创建组件的方法,太罗嗦了,有些麻烦,优化一下。

 

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>创建组件的第二种方式</title>
		<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
	</head>
	<body>
		
		<div id="app">
			<mycom2></mycom2>
		</div>
		<script>
			//无论是哪种方式创建出来的组件,组件的template属性指向的模板内容,
			//必须有且只有唯一的一个根元素,所以推荐在里面放一个<div>元素,这样方便
			Vue.component('mycom2',{
				template:'<div><h3>GGGOOO</h3></div>'
			})
			
			var vm = new Vue({
				el:'#app',
				data:{		
				},
				methods:{				
				}
			})
		</script>
	</body>
</html>

2.这是第二种方法,在Vue.extend那里有了优化。但我们还有第三种方式

 

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>创建组件的第二种方式</title>
		<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
	</head>
	<body>

		<div id="app">
			<mycom3></mycom3>
		</div>

		<div id="app2">
			<!-- <mycom3></mycom3> -->
			<login></login>
		</div>
		<!-- 在控制的app外面,使用template定义组件的模板结构 -->
		<template id="tmp1">
			<div id="">
				<h1>这是通过template元素,在外部定义组件结构,这个方式,有代码的智能提示和高亮</h1>
				<h4>niubility</h4>
			</div>
		</template>


		<script>
			//无论是哪种方式创建出来的组件,组件的template属性指向的模板内容,
			//必须有且只有唯一的一个根元素,所以推荐在里面放一个<div>元素,这样方便
			Vue.component('mycom3', {
				template: '#tmp1'
			})

			var vm = new Vue({
				el: '#app',
				data: {},
				methods: {}
			})

			var vm2 = new Vue({
				el: '#app2',
				data: {

				},
				components: { //定义实例内部私有组件
					login: {
						template: '<h1>这是私有login</h1>'
					}

				}
			})
		</script>
	</body>
</html>

3.这是第三种,定义私有组件,这个很重要的

************************************************************************************************************

那么data怎么搞呢?

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>创建组件的第二种方式</title>
		<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
	</head>
	<body>
		
		<div id="app">
			<mycom1></mycom1>
		</div>
		<script>

			Vue.component('mycom1',{
				template:'<h3>GGGOO----{{msg}}</h3>',
				//组件中的对象必须是一个function,function内部必须返回一个对象
				//组件中的data和实例中的data的使用方式是完全一样的
				data:function(){
					return{
						msg:'这是组件的data定义的数据'
					}
				}
			
			
			})
			
			var vm = new Vue({
				el:'#app',
				data:{
					
				},
				methods:{
					
				}
			})
		</script>
	</body>
</html>

在这个地方,data内部必须是一个方法,返回必须是一个对象,要不然就不行,不符合语法标准

-------*-*-*-*---------------------------------------------------------------------------------

我们下面以一个例子来看

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>创建组件的第二种方式</title>
		<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
	</head>
	<body>
		
		<div id="app">
			<counter></counter>
			<hr >
			<counter></counter>
			<hr >
			
			<!-- <mycom2></mycom2> -->
		</div>
		
		<template id="tmp1">
			<div id="">
				<input type="button" @click="increase" name="" id="" value="点我" />
				<h3>{{count}}</h3>
			</div>	
		</template>
		
		<script>
			//这是一个计数器的组件,有个按钮,点击按钮,让data中的count加一
			Vue.component('counter',{
				template:'#tmp1',
				data:function(){
					return {
						count:'0'
					}
				},
				methods:{
					increase(){
						this.count++
					}
				}
			})
			
			var vm = new Vue({
				el:'#app',
				data:{
					
				},
				methods:{
					
				}
			})
		</script>
	</body>
</html>

这是实现了一个计数器的功能,是通过data来实现的,理解一下就非常简单了!

最后

以上就是美满翅膀为你收集整理的小白学习Vue(7)---创建组件(组件的data)的全部内容,希望文章能够帮你解决小白学习Vue(7)---创建组件(组件的data)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(47)

评论列表共有 0 条评论

立即
投稿
返回
顶部