当前位置:首页 > 前端开发 > 前端框架vue.js系列(9):Vue.extend、Vue.component与new Vue

前端框架vue.js系列(9):Vue.extend、Vue.component与new Vue

6个月前 (05-24)64

vue构造、vue组件和vue实例这三个是不同的概念,它们的关系有点类似于Java的继承概念:

关系:vue构造->vue组件->vue实例

也就是说不同的vue组件可以共用同一个vue构造,不同的vue实例可以共用同一个vue组件。在大型项目中,用过java开发的都知道,继承是非常重要的,前端也一样。我们先看看他们之间的实现代码区别:

<script>
	//vue构造
	Vue.extend({
		props: [],
		data: function() {
			return {}
		},
		template: ""

	});
	
	//vue组件
	Vue.component("mycomponent", {
		props: [],
		data: function() {
			return {}
		},
		template: ""
	});
	
	//vue实例
	new Vue({
		el: "",
		data: {}
	});
</script>

从上面的代码可以看出,vue构造和vue组件所需的部分初始化结构参数是一样的,这意味着vue实例可以直接跳过vue组件直接使用vue构造对自身组件初始化,也就是vue构造->vue实例,下面是三种API的区别:

vue.extend

特点:

1.只能通过自身初始化结构

使用范围:

1.挂载在某元素下

2.被Vue实例的components引用

3.Vue.component组件引用

<div id="app2"></div>
<script>
	var apple = Vue.extend({
		template: "<p>我是构造函数创建:自身参数:{
    {a}}|外部传参:{
    {b}}</p>",
		data: function() {
			return {
				a: "a"
			}
		},
		props: ["b"]
	});

	//挂载构造函数
	new apple({
		propsData: {
			b: 'Vue.extend'
		}
	}).$mount('#app2');
</script>

运行结果:

我是构造函数创建:自身参数:a|外部传参:Vue.extend。

Vue.component

特点:

1.可通过自身初始化组件结构

2.可通过引入Vue.extend初始化组件结构

3.可通过第三方模板temple.html初始化组件结构

使用范围:

任何已被vue初始化过的元素内

<div id="app3">
	<applecomponent v-bind:b="vparam"></applecomponent>
	<mycomponent v-bind:b="vparam"></mycomponent>
	<templecomponent v-bind:b="vparam"></templecomponent>
</div>

<script>
	//方法1 【引入构造】
	Vue.component('applecomponent', apple);
	//方法2 【自身创建】
	Vue.component("mycomponent", {
		props: ["b"],
		data: function() {
			return {
				a: "a"
			}
		},
		template: "<p>我是vue.component创建 自身参数:{
    {a}}|外部传参:{
    {b}}</p>"
	});
	//方法3 第三方模板引入,可参照上一篇文章
	Vue.component('templecomponent', function(resolve, reject) {
		$.get("./../xtemplate/com.html").then(function(res) {
			resolve({
				template: res,
				props: ["b"],
				data: function() {
					return {
						a: "a"
					}
				}
			})
		});
	});
	var app3 = new Vue({
		el: "#app3",
		data: {
			vparam: "Vue.component"
		}
	});
</script>

运行结果:

我是构造函数创建:自身参数:a|外部传参:Vue.component
我是vue.component创建 自身参数:a|外部传参:Vue.component
我是导入模板 自身参数:a|外部入参:Vue.component


new Vue

this.$options.key表示其自定义属性值,this.$??表示系统属性值,如this.$el

特点:

1.可以通过自身components引用Vue.extend构造,通过自身data向构造传参

2.可以通过自身components引用组件模板,通过自身data向组件传参

使用范围:

1.仅限于自身

<div id="app1">
	<dt1></dt1>
	<vueapple v-bind:b="msg"></vueapple>
</div>

<script type="text/x-template" id="dt1">
	<div>这里是子组件1</div>
</script>

<script>
	new Vue({
		el: "#app1",
		data: {
			msg: "vue实例参数"
		},
		components: {
			dt1: {
				template: "#dt1"
			},
			vueapple: apple //【引入构造】
		}
	});
</script>

运行结果:

这里是子组件1
我是构造函数创建:自身参数:a|外部传参:vue实例参数

 

作者:黄泽平
来源链接:https://blog.csdn.net/zeping891103/article/details/78133622

标签: vue

“前端框架vue.js系列(9):Vue.extend、Vue.component与new Vue” 的相关文章

手把手教你vue3.0项目搭建

手把手教你vue3.0项目搭建

前言:最近公司想重构一个项目,CTO选择了vue3.0 + ant-design-vue技术栈,正好自己也想尝试一下,试着搭建一下,以后有更好的会及...

Vue.js——使用$.ajax和vue-resource实现OAuth的注册、登录、注销和API调用

Vue.js——使用$.ajax和vue-resource实现OAuth的注册、登录、注销和API调用

概述 上一篇我们介绍了如何使用vue resource处理HTTP请求,结合服务端的REST API,就能够很容易地构建一个增删查改应用。这个应用始终遗留了一个问题,Web App...

VUE弹窗的两种实现方式

方法一 使用.sync修饰符     element就是使用的这种方式,实现方式如下:     父组件: <t...

史上最全的vue插件库

无意间发现的一个整合内容,超级强大,赶紧记录下来!原文链接 内容 UI组件 开发框架 实用库 服务端 辅...

Vue框架介绍

Vue框架介绍

Vue框架介绍   1.MVVM 1.1 什么是MVVM MVVM(Model-View-ViewModel)...

vue项目使用websocket技术

vue项目使用websocket技术

   一、为什么需要websocket?   前端和后端的交互模式最常见的就是前端发数据请求,从后端拿到数据后展示到页面中。如果前端不做操作,后端不能主动向前端推送数据,这也...

React 还是 Vue: 你应该选择哪一个Web前端框架?

React 还是 Vue: 你应该选择哪一个Web前端框架?

学还是要学的,用的多了,也就有更多的认识了,开发中遇到选择的时候也就简单起来了。 本文作者也做了总结:     如果你喜欢用(或希望能够用)模板搭建应用,...

vue.js面试题整理

vue.js面试题整理

Vue.js面试题整理 一、什么是MVVM? MVVM是Model-View-ViewModel的缩写。MVVM是一种设计思想。Model 层代表数据模型,也可以在Model...

VUE中函数调用函数

VUE中函数调用函数

VUE中函数调用函数 VUE中函数调用函数 VUE中函数调用函数 有时候,需...

Vue-基础

元素相关 if v-if="条件"  =>  v-if="arr.length>0"   v-else-if=...