时间:2021-05-18
组件在 vue开发中是必不可少的一环,用好组件这把屠龙刀,就能解决不少问题。
组件是什么
官方的定义:
官方的定义已经非常简明了,组件就是一个实例。
如何使用组件
在具体编写组件实例代码前,我们先来如下几个约定:
约束不多,但最后两个需要牢记在心。
基于单文件组件的前提下,一个组件的基本构造如下:
<template> <div> <!-- 页面内容 --> </div></template><script>export default { // 组件的逻辑,数据部分}</script><style> /** 样式定义 **/</style>一个单文件组件由三个部分组成:
这三部分会在接下来的章节中一一实践,在本篇中并不会给出具体的实例代码。 本篇更侧重于讲清楚在写组件之前应该要注意的地方。
组件的命名
在这里向跑题的一点是:
命名不仅仅是为了自己维护代码,更多的是为了团队、协作开发以及交流。良好的命名会让你的代码更具可读性,而良好的可读性会让你的代码更具可维护性。综上,希望童鞋们能认真命名,避免在项目中产出类似的命名:
var x = getSomething(y);var somethingA = getSomethingB();...在这里,vue官方是强烈建议遵循 W3C规范去为组件命名的:
当然你也可以使用Pascal命名:
但是在使用组件时,都是使用的 W3C规范。假设现在你有一个名称为 HelloWorld的组件,那么如何在其他组件中使用:
<hello-world></hello-world>建议在命名时考虑以下因素:
在同一个项目中,尽可能保持统一风格
组件的注册
在另一个组件中如果需要使用其它自定义组件,那首先是需要将组件注册。
而注册分为:
局部注册
局部注册的用法:
上图我们可以看到,在单文件组件中局部注册的使用步骤:
全局注册
如果这个 HelloWorld组件是经常要用的一个 UI组件怎么办,如果使用局部注册那意味着每个组件中都将存在第一步和第二步的重复代码。
看见重复代码,我们应该形成一种想要干掉它的本能。因为重复代码属于项目中的坏味道,会让项目的整体质量下降,并且直接影响项目的可维护性和可扩展性。
想想,当这个项目非常庞大,庞大到这个基础组件已经被成百上千个组件引用了,哪天你要改这个组件的文件名或者移动路径时,将是一场灾难。
因此,在 vue中提供了全局注册的办法。只需注册一次,剩余组件中第一步和第二步的代码就可以直接删掉,因为全局注册之后可以直接在视图中使用。
// main.js 入口文件,在创建根实例之前将其注册import HelloWorld from 'your/component/path'Vue.component('HelloWorld', HelloWorld)new Vue({ ...})但是这种手动全局注册单个组件也存在一个问题:
这里童鞋们可以思考思考如何在 vue中实现自动全局注册组件。
写在后面
组件系统所包含的内容是相当丰富的,三言两语很难说完整,因此这里只提组件最基础的使用和注册以及在实践中会遇到的问题。
下一篇将会详细的说明子组件及在其上进行数据传递的相关知识,同样,也是以理论为主。也是作为基础篇的最后一篇~
好了,以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对的支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
本文实例讲述了Vue开发之封装分页组件与使用。分享给大家供大家参考,具体如下:使用elementui中的el-pagination来封装分页组件paginati
前言本文是基于.NetCore2.0,只是蜻蜓点水,并非深入浅出。给大家介绍了关于.NetCore在Mvc中使用日志组件的相关内容,分享出供大家参考学习,下面话
对象的深拷贝与浅拷贝的区别如下:浅拷贝:仅仅复制对象的引用,而不是对象本身;深拷贝:把复制的对象所引用的全部对象都复制一遍。一.浅拷贝的实现浅拷贝的实现方法比较
本文实例为大家分享了vue组件开发之slider组件的具体使用代码,供大家参考,具体内容如下代码如下:{{item.title}}exportdefault{n
一、header组件开发之数据的传递1.App.vue引入组件importheaderfrom'./components/header/header'2.App