55 Vue 组件系统

55 Vue 组件系统

组件系统是 Vue 的另一个重要概念,因为它是一种抽象,允许我们使用小型、独立和通常可服用的组件构建大型应用

组件定义及使用


在 Vue 里,一个组件本质上是一个拥有预定义选项的一个 Vue 实例

定义组件选项对象
const options = {
    template: ``,
    data() {},
    props: {},
    methods: {},
    computed: {},
    components: {},
}

template 中的模板,需要使用单个根元素节点包裹布局结构

组件结构选项中的 data 必须是函数(不能数普通对象),在函数体内部,返回一个普通对象

为什么组件选项中的 data 必须是函数

组件是可被复用的,当创建同一个组件的多个实例时,如果 data 时普通对象,则每个实例中使用到的数据都指向的是同一个 data 对象中的数据,只要其中任意一个实例修改了数据,其他实例都会受影响,这通常与实际不符

为了解决该问题,将 data 设置为函数,在函数体内部,返回数据对象,当创建组件实例时,每创建一个实例则调用一次 data 函数获取到新的数据对象,这样同一个组件的不同实例间,数据对象就是独立的,修改一个实例中的数据,不会影响到其他实例化的数据

data 的写法

data() {
	return {}
}

props 表示组件接收到的属性

props 可设置为数组,表示最基本的组件可接收到的属性名称有哪些

props 也可设置为对象,表示对组件接收到的各属性进行验证

props: {
	// 属性名称为 title1
	title1: {
		// 类型为字符型
		type: String,
		// 必须传的参数
		required: true,
	},
	// 属性名称为 title2
	title2: {
		// 类型为布尔型
		type: Boolen,
		// 没有传参时的默认值
		default: "这是默认值",
	}
}

不要在组件中修改属性值,组件的属性应该是只读的,如果需要修改数据,只能修改 data 中的数据

注册组件
全局注册
Vue.component(compoentName, options)
局部注册

是在父组件的选项对象中,使用 components 字段来定义

const fatherOptions = {
    components: {
        son: sonOpions
    }
}
使用组件

使用组件名称作为自定义标签(元素)名称进行使用

<script src="https://cdn.jsdelivr.net/npm/vue@2.6.14/dist/vue.js"></script>
<div id="app">
    <father></father>
</div>
Vue.component(father, {
    template: `<div>
		<h4>父级</h4>
		<son></son>
	</div>`,
    components: {
        son: {
            template: `<h5>子级</h5>`,
        }
    }
})
new Vue({
    el: "#app",
})

实际 html 效果为

父级
子级

如果自定义的组件名称是驼峰命名或帕斯卡命名,在使用组件时,需要将其名称改为短横线命名规范使用

插槽

可利用插槽,在父组件中向子组件分发 HTML 内容

使用 slot 标签,在定义组件时去定义插槽位置

如果使用 slot 时添加了 name 属性,则将这种插槽称为命名(具名)插槽

<script src="https://cdn.jsdelivr.net/npm/vue@2.6.14/dist/vue.js"></script>
<div id="app">
    <my-html>
        <!-- v-slot可以简写为 # -->
        <!-- 可以写作 <template #content> -->
        <template v-slot:content>
        	<h5>新内容</h5>
        </template>
    </my-html>
</div>
Vue.component(father, {
    template: `<div>
		<slot name="content">
			<h4>原内容</h4>
		</slot>
	</div>`,  
})
new Vue({
    el: "#app",
})

实际 html 效果为

新内容
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
一、 概述<br>BOS(Basic Object System)的目的是提供一个纯粹的组件使用环境。在这个环境中,软件完全由组件构成而没有额外的代码,甚至不需要撰写main函数。这个环境不仅使得软件的结构更佳,更进一步使得软件开发的性质发生变化—开发人员不再为特定的程序付出封闭的辛劳,他们写下的每一行代码现在都属于某个组件,因而总有可能在将来被复用。<br><br>BOS还是一个动态的环境。这意味着组件可以在这个环境中动态插拔,这有助于软件功能的无缝切换。这一功能也可称为动态跨平台。<br><br>BOS可以被称为一个组件系统。它定义了组件规范,并给出了组件的使用环境。但更准确的讲,BOS是一个基于组件技术的通用软件框架。<br><br>BOS可以使用在几乎所有类型的应用中。虽然目前版本的BOS是基于.NET Framework完成的,但其背后的理论却是通用的—提供一个纯粹的组件应用环境,让基于该环境的软件完全组件化。<br><br><br>二、 规范<br>2.1 组成<br>BOS由BOS核心和BOS组件构成。BOS核心即是BOS组件的动态应用环境。为了让基BOS的软件达到完全组件化的目的,BOS还包括一个通用目的的可执行程序。这个可执行程序读取一个配置数据文件,从中获取相应的初始化数据,其中包括该应用使用到的组件信息。<br><br>此外,BOS还包括一个通用编辑器BOS Editor,用于为不同的应用快速地编辑配置数据文件。<br><br>2.2 BOS核心<br>BOS核心采取接口/实现分离的设计。BOS核心接口是一个命名为BOS.Center的类。你可以自行为其提供实现,也可以使用BOS源码包中提供的实现BOS.InProcBOSCtr。<br><br>2.3 BOS组件<br>所有的BOS组件都应该遵循接口/实现分离的设计。在实现端还应该为不同的BOS组件提供相应的创建器。组件创建器必须从接口类BOS.Creator_派生。<br><br>2.4 使用BOS<br>下面给出一个简单例子(C#):<br>public interface TestComp<br>{<br> void DoSomething();<br>}<br><br>class TestCompImpl :TestComp<br>{<br> public virtual void DoSomething()<br> {<br> …<br>}<br>}<br><br>class TestCompCreator : BOS.Creator_<TestComp><br>{<br> public virtual TestComp Do( Object[] params )<br> { <br> return new TestCompImpl();<br>}<br>}<br><br>class Program<br>{<br> static void Main(string[] args)<br> {<br> Center center = new CenterImpl();<br> center.Register(new CompID(typeof(TestComp), new TestCompCreator() );<br> TestComp comp = center.Create(new CompID(typeof(TestComp), null ); <br> comp.DoSomething(); <br> }<br>}<br><br>2.5 基于BOS的应用<br>基于BOS的应用并不像2.4所述的那样使用BOS。由于BOS提供了通用目的的AppBOSExe.exe,基于BOS的应用只需要提供组件和数据配置文件即可。其启动通过命令行完成:<br>prompt> AppBOSExe.exe test.boscfg<br><br>建议将配置数据文件命名为.boscfg,并将此类型文件关联到AppBOSExe.exe,从而可以双击配置文件图标以启动应用。<br><br>2.6 配置数据文件和编辑器<br>数据配置文件表征具体的应用。数据配置文件必须满足一定语法格式。你可以参考BOS源码包中的配置数据文件以进一步了解其语法。<br><br>通常情况下,我们通过编辑器来编辑配置数据文件。编辑器以树状图呈现出配置数据。你只需在相应的结点上点击鼠标右键便可以获得相应的命令,进而一步步编辑出所需的配置数据文件。<br><br>编辑器本身也是一个基于BOS的应用。你可以通过命令行启动它,或是将其拖拽到AppBOSExe.exe图标上进行启动。<br><br>2.7 软件要求<br>目前版本的BOS基于.NET Framework 2.0 实现。BOS项目通过Visual Studio 2005 创建。<br><br>

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值