浅入深出Vue:组件
组件在 vue
开发中是必不可少的一环,用好组件这把屠龙刀,就能解决不少问题。
组件是什么
官方的定义:
- 组件是可复用的 Vue 实例,并且可带有一个名字。
官方的定义已经非常简明了,组件就是一个实例。
如何使用组件
在具体编写组件实例代码前,我们先来如下几个约定:
所有组件基于单文件组件,即一个
.vue
文件就是一个组件data
必须为一个函数template
节点下只能有一个子节点
约束不多,但最后两个需要牢记在心。
基于单文件组件的前提下,一个组件的基本构造如下:
<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>
建议在命名时考虑以下因素:
词要达意,言简意赅,不要长篇大论
避免产生多义性
避免直接机翻中文,很多时候某些特有名词或者是业务中提炼出来的词并不适合直接机翻(机器翻译)。对同一机翻词汇,一百个人心中可能有一百种不同的解释
参考优秀开源项目的命名规范
参考语言/框架所推荐的规范
同一项目中,对于同一个业务知识、名词的翻译尽可能保持一致(同样也是为了避免多义性)
在同一个项目中,尽可能保持统一风格
组件的注册
在另一个组件中如果需要使用其它自定义组件,那首先是需要将组件注册。
而注册分为:
局部注册
全局注册
局部注册
局部注册的用法:
<template>
<div>
<!-- 第三步: 在页面中使用 -->
<hello-world></hello-world>
</div>
</template>
<script>
// 第一步:引入组件
import HelloWorld from 'your/component/path'
export default {
// 第二步:在当前组件注册此组件,注册之后才可以在页面中使用
components: [
HelloWorld
]
}
</script>
上图我们可以看到,在单文件组件中局部注册的使用步骤:
- 将组件引入
- 在当前组件中注册,这一步也就体现了局部二字,因为注册后的作用域仅在当前组件内。
- 在视图中使用
全局注册
如果这个 HelloWorld
组件是经常要用的一个 UI组件怎么办,如果使用局部注册那意味着每个组件中都将存在第一步和第二步的重复代码。
看见重复代码,我们应该形成一种想要干掉它的本能。因为重复代码属于项目中的坏味道,会让项目的整体质量下降,并且直接影响项目的可维护性和可扩展性。
想想,当这个项目非常庞大,庞大到这个基础组件已经被成百上千个组件引用了,哪天你要改这个组件的文件名或者移动路径时,将是一场灾难。
因此,在 vue
中提供了全局注册的办法。只需注册一次,剩余组件中第一步和第二步的代码就可以直接删掉,因为全局注册之后可以直接在视图中使用。
// main.js 入口文件,在创建根实例之前将其注册
import HelloWorld from 'your/component/path'
Vue.component('HelloWorld', HelloWorld)
new Vue({
...
})
但是这种手动全局注册单个组件也存在一个问题:
- 不够自动化,当组件数量繁多时,手动注册组件就又成了一个负担
这里童鞋们可以思考思考如何在 vue
中实现自动全局注册组件。
写在后面
组件系统所包含的内容是相当丰富的,三言两语很难说完整,因此这里只提组件最基础的使用和注册以及在实践中会遇到的问题。
下一篇将会详细的说明子组件及在其上进行数据传递的相关知识,同样,也是以理论为主。也是作为基础篇的最后一篇~
浅入深出Vue:组件的更多相关文章
- 浅入深出Vue:前言
浅入深出Vue系列文章 之前大部分是在做后端,后来出于某些原因开始接触Vue.深感前端变化之大,各种工具.框架令人眼花缭乱.不过正是这些变化,让前端开发更灵活. 博主在刚开始时,参考官网的各个步骤以及 ...
- 浅入深出Vue:环境搭建
浅入深出Vue:环境搭建 工欲善其事必先利其器,该搭建我们的环境了. 安装NPM 所有工具的下载地址都可以在导航篇中找到,这里我们下载的是最新版本的NodeJS Windows安装程序 下载下来后,直 ...
- 浅入深出Vue:工具准备之PostMan安装配置及Mock服务配置
浅入深出Vue之工具准备(二):PostMan安装配置 由于家中有事,文章没顾得上.在此说声抱歉,这是工具准备的最后一章. 接下来就是开始环境搭建了~尽情期待 工欲善其事必先利其器,让我们先做好准备工 ...
- 浅入深出Vue:工具准备之WebStorm安装配置
浅入深出Vue之工具准备(一):WebStorm安装配置 工欲善其事必先利其器,让我们先做好准备工作吧 导航篇 WebStorm安装配置 所有工具的下载地址都可以在导航篇中找到,这里我们下载的是最新版 ...
- 浅入深出Vue系列
浅入深出Vue导航 导航帖,直接点击标题即可. 文中所有涉及到的资源链接均在最下方列举出来了. 前言 基础篇 浅入深出Vue:工具准备之WebStorm搭建及配置 浅入深出Vue之工具准备(二):Po ...
- 浅入深出Vue:第一个页面
今天正式开始入门篇,也就是实战了~ 首先我们是要做一个博客网站,UI 框架采用江湖传闻中的 ElementUI,今天我们就来利用它确定我们博客网站的基本布局吧. 准备工作 新建一个vue项目(可以参考 ...
- 浅入深出Vue:代码整洁之封装
深入浅出vue系列文章已经更新过半了,在入门篇中我们实践了一个小小的项目. <代码整洁之道>一书中提到过一句话: 神在细节中 这句话来自20世纪中期注明现代建筑大师 路德维希·密斯·范·德 ...
- 浅入深出Vue:文章列表
终于到我们小项目的最后一个功能了,那就是列表页展示! 新建组件 先来新建组件 List.vue: <template> <div></div> </templ ...
- 浅入深出Vue:登录
上一篇我们实现了注册功能,现在我们来实现一下登录功能. 准备工作 新建登录组件 添加登录组件的路由对象 新建登录组件 Login.vue: <template> <div> & ...
- 浅入深出Vue:注册
基本布局已经有了, 现在我们来开始做我们的注册页面~ 当然需要注册才能发表文章啊(糟老头子坏得很, 我可以只有我一个人能发啊). 这里我们设定只有注册才能发表文章,也就淡化了管理员这个概念.在开发中先 ...
随机推荐
- 最通俗易懂的方式让你理解 Swift 的函数式编程
函数式编程(Functional Programming)是相对于我们常用的面向对象和面向过程编程的另外一种开发思维方式,它更加强调以函数为中心.善用函数式编程思路,可以对我们的开发工作有很大的帮助和 ...
- WPF 4 开发Windows 7 任务栏(Overlay Icon、Thumbnail Toolbar、Progress Bar)
原文:WPF 4 开发Windows 7 任务栏(Overlay Icon.Thumbnail Toolbar.Progress Bar) 在上一篇我们介绍了如何在WPF 4 中开发Wind ...
- Vmware 占用宿主机硬盘空间只增不减
问题: vmware 占用硬盘空间只增大不减少.即使你删除虚拟机系统里面的文件,占用宿主机的硬盘空间也不释放.用了一段时间后空间不够了. 解决办法: 方法一: 把一部分*sxxx.vmdk文件剪切到其 ...
- Plupload上传插件中文文档
Plupload上传插件中文帮助文档 如有疑问,加群交流:646104701 下载地址:https://www.plupload.com/download/ 配置参数 实例化一个plupload对象时 ...
- google的开源项目总结(转载)
转自http://www.feng5166.com/blog/424.html google的开源项目值得我们一用的,这些项目很有意义,甚至可以直接用在我们自己的工作上!学习编程的的一个比较好的方式就 ...
- transform 遇上 position: fixed
最近遇到一个有意思的现象,以下 demo 中 fixed 的元素没有相对 viewport 定位,而是相对于它的父元素进行定位. <html> <head> <style ...
- 零元学Expression Blend 4 - Chapter 4元件重复运用的观念
原文:零元学Expression Blend 4 - Chapter 4元件重复运用的观念 本章将教大家Blend元件重复运用的观念,这在Silverlight设计中是非常重要的,另外加码赠送渐层工具 ...
- ADB命令笔记本
ADB即Android Debug Bridge,作为电脑操作手机的工具,被Android开发者和众多国内xxx安全管家所使用.在此记录一些常见的命令,随时更新,方便以后查找.(万一以后我也要开发一款 ...
- Android零基础入门第54节:视图切换组件ViewSwitcher
原文:Android零基础入门第54节:视图切换组件ViewSwitcher 前面三期学习了ProgressBar系列组件,那本期开始一起来学习ViewAnimator组件. 一.ViewAnimat ...
- 阿里Android开发手册正式版一览
新年伊始,春意盎然之际,阿里巴巴在2月28日再度为工程师们送上了一份重磅开春好礼:<阿里巴巴Android开发手册>. 该手册长达66页,是阿里巴巴集团各大 Android 开发团队的集体 ...