vue 如何生成一个dom元素_通过一个简单的示例学习如何编写Vue组件

d335836b7e8eedfb39ded974cae3f8c3.png

大家好,本篇文章我将带着大家一起学习如何编写自定义组件(Components),通过「vue基础」新手快速入门篇(一)这篇文章的学习,我们知道了 Vue 设计的目的就是为了方便我们创建基于组件UI的项目。基于这个设计原则,我们可以更专注于设计可重用、各自独立、基于接口方式的组件,就好比乐高玩具一样,我们可以基于组件组装我们的项目。

首先我们来看一个简单的例子,比如我们有一个头像的组件(avatar)用来展示用户的头像,我们只需要创建一次,我们就可以随意将此组件添加至项目需要用到的地方,十分方便。比如如下的集成方式:

6f72723948e1584129cdb4c6a1a1b92b.png

从上述代码我们可以看出,在项目中集成组件十分方便,就类似一个 HTML 标签,这个标签我们可以自定义,比如这个例子,我们定义的是 , 除了自定义标签,你还可以自定义任何属性,同时可利用属性进行传值,比如这个例子我们自定义了src属性。

自定义组件

接下来,我们来学习如何编写Vue自定义组件。

首先我们来先了解下,在 「vue基础」新手快速入门篇(一)这篇文章我们通过引入JS文件快速熟悉了Vue,基于这种方式我们如何自定义组件呢。我们可以使用 Vue 这个全局对象声明组件,声明的函数接受两个参数,一个是组件的名称,一个是组件设置相关的参数对象,基于这种方式,我们可以用如下的方式,快速自定义组件:

407e6edc34e0d6813cce8babaeee837d.png

关于组件的命名,你可以选择kebab case(短横线命名)的方式,例如 my-custom-componen,或者使用 pascal case(帕斯卡命名)首字母大写的方式进行命名,例如 MyCustomComponent,个人比较推荐使用 pascal case。

通过这种方式注册的组件可以在项目中的任何位置进行使用,并可以嵌套在其他组件的模板里,这样大大提高了我们开发的灵活性。

在本系列的上一篇文章里「vue基础」Vue相关构建工具和基础插件简介,我们介绍了单文件组件(single file components:SFCs) ,并且简单的介绍了如何声明组件,通过这种方式声明的组件,我们需要通过import的方式进行引用才能进行使用。在后面我会详细进行介绍。

组件参数介绍

通过Vue对象进行组件声明的设置相关参数和使用 new Vue 方式进行实例化的设置参数基本一致(这篇文章 「vue基础」新手快速入门篇(一)有介绍),但是还有两个重要的区别。

首先,组件不接受 el 这个参数,你需要提供 template 属性进行设置模板的内容。

字符串模板

13aa1ebeeae6552aa530ba47ea1756dc.png

如果字符串内容以 # 开头,Vue将会视为选择器,并在 DOM 中查找匹配的元素,然后将其内容作为模板的内容,如下所示:

DOM模板

de6960f1cb57b6edceb558368830f8c2.png

如果你使用 SFCs 的方式创建组件,你需要使用 这样的标记在你的.vue文件中,如下所示:

HelloWorld.vue

ccb29a9babf488cf6c250949fef6f36d.png

第二个不一样的地方就是组件的 data 参数属性必须是个函数声明,通过return的形式返回数据,每个组件包含一个数据对象实例。如下段代码所示:

99ace659e04eaccfd895887e8c98a0d0.png

亲自动手实践一个简单的自定义组件

好了,接下来我们重新回到 「vue基础」新手快速入门篇(一)这篇文章的一个示例,我们来亲自动手将这个例子改写成一个 SFCs 方式的自定义组件,首先我门来看下原先示例的代码,关于代码的说明,这里我就不多说了,大家可以返会入门篇进行查看:

4ff4e7ab59b6dbea7e37e8f69900a70d.png

效果如下图:

790d57a410f48b604f716ea71b21f0c8.png

我们将会新建个 .vue 文件,首先你先通过构建工具创建一个Vue项目,不知道怎么创建的朋友们,可以看我的上一篇文章「vue基础」Vue相关构建工具和基础插件简介,里面有详细介绍,接下来我们按照默认的方式创建一个 Vue 项目。

打开项目文件夹,在 src/components 路径下,我们来创建一个 StaffDirectory.vue 的文件,按照如下的步骤添加代码,示例如下:

template部分(src/components/StaffDirectory.vue)

c479f6ae0d77fcfdc353e78f6a32265a.png

你可能会注意到我们基本没什么改动,直接把对应的相关区域复制到 标签内,但是有一点你需要各位注意,最外层一定要有个闭合标签,最外层不能多于1个,因此我们模板的最外层标签是:

脚本部分(src/components/StaffDirectory.vue )

24c8b3991cb42949a3bb3c29b6ef8fe7.png

你会注意到我们使用了 export 这个关键词,这是ES6+的新语法,允许我们通过模块导入的形式,在其他的组件文件里进行使用。

你可能还会注意到,我们这里有个 name 的属性,这个属性也很重要,它将会比较方便的辅助我们进行调试定位问题,稍后的文章会有介绍。因此千万别漏掉这个属性的设置。

样式部分(src / StaffDirectory.vue)

ab3dee4ea9882d6ee097045cd94c6157.png

最后完成的组件代码,如下图所示:

e6da0a5f7840618a47d6dd87402b6d78.png

最后在 App.vue 文件引入我们的组件

我们可以使用import语法进行引入我们的组件,示例代码如下:

63240e87254e81b0927da48af23b00ed.png

你可能会注意这里我们导入了一个CSS样式库,在第一篇文章里我们是将CSS文件直接引入,这里你需要通过 npm 的安装这个CSS框架,相关命令:npm install semantic-ui-css

好了,到这里我们就完成了上篇文章的例子,通过 SFCs 的组件方式进行了改造,你可以通过npm run serve 看看运行效果是否一致。

小节

由于文章篇幅有限,关于组件的介绍,今天就介绍到这里,我们一起学习了如何编写一个简单的自定义组件,下一篇文章我们将继续深入学习组件的相关内容,比如组件的生命周期、属性传值、父子组件传值、槽(Slots),敬请期待。

vue基础相关文章

「vue基础」新手快速入门篇(一)

「vue基础」Vue相关构建工具和基础插件简介

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/568030.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

tensorFlow13卷积神经网络发展

数据增强:增加训练数据,水平翻转,改变对比度 dim代表插入的位置。0代表第一个位置,1表示第二个位置,-1表示最后一个位置

native 真机测试react_React native 安卓真机调试

一、准备工作:1、检测adb是否已经在环境变量中配置,打开:计算机”-“属性”-“高级属性设置”,在高级选项里点击“环境变量”,查看是否设置了adb.exe路径,如果没有就必须添加环境变量操作;或者在…

物体运动到一个点停止_大颗粒搭建中常见的结构运动

今天,给大家带来大颗粒搭建中常见的结构家长们可以带孩子一起将原理编程实践举一反三,创造创新!1齿轮传动齿轮传动是指用主、从动轮的齿轮进行动力传递,从而达到使物体运动的作用。① 减速传动当小轮是主动力大轮是从动轮时物体作…

第k个数组中的最小值

练习1&#xff1a; 二维vector操作&#xff1a; #include<iostream> #include <vector> using namespace std; int main() {vector<vector<int>> a;vector<int> b;b.push_back(1);b.push_back(2);vector<int> c;c.push_back(11);c.push_b…

python不能安装怎么办_python3安装不上怎么办

下载安装程序Python官方的解释器安装包&#xff0c;可以 登录Python 官方网站 下载。点击这里下载注意&#xff1a;如果您要在Windows7上运行Python3.6版本的解释器&#xff0c;一定确保Windows已经安装了 Win7 service pack1 补丁包 &#xff0c;否则安装Python3.6解释器会失败…

VS中监视窗口,即时窗口和输出窗口的使用

以下内容来自&#xff1a;http://shashoutian2005.blog.163.com/blog/static/1685415200971845843605/ 一、监视窗口 &#xff11;、配置应用程序&#xff0c;使应用程序处于调试状态。 &#xff12;、点击“调试”----“窗口”----“监视”----“监视&#xff11;”&#x…

云米冰箱能控制扫地机器人_既能解放劳动力又能提升家庭幸福指数的小家电,云米互联网扫地机Pro开箱!...

既能解放劳动力又能提升家庭幸福指数的小家电&#xff0c;云米互联网扫地机Pro开箱&#xff01;2019-01-15 15:15:004点赞7收藏10评论年底了两人工作都比较忙&#xff0c;周六经常还得去加个班&#xff0c;难得有个周日必须得睡个懒觉呀&#xff0c;基本一睁眼就是9点60了&…

Leedcode1-求树的最小高度

#include<iostream> #include<algorithm> #include<queue> using namespace std; //5种情况&#xff1a;空树&#xff1b;没有子树&#xff1b;只有左/右子树&#xff1b;有俩子树&#xff1b; struct BinaryNode {BinaryNode *left;BinaryNode *right;int d…

jquery对文本赋值和取值_jQuery对表单元素的取值和赋值操作代码

JSjQuery对表单元素的取值和赋值操作代码作者&#xff1a; 来源&#xff1a;www.28hudong.com2013-03-30 00:52:47阅读次$("#keyword")[0].value ""; /*获得TEXT.AREATEXT的值*/ var textval $("#text_id").attr("value"); //或者 v…

navicat 添加外键1215错误

1、主键和外键的字段约束和数据类型必须相同 2、两张表的编码必须相同 3、主键和外键的编码也必须相同 4、设置外键的字段必须先在表中建立字段且不能是主键。 5、外键字段参考字段必须为参考表的主键 6、设置外键前需要把表清空

hbasehlog_HBase原理--RegionServer核心组件之HLog

RegionServer是HBase系统中最核心的组件&#xff0c;主要负责用户数据写入、读取等基础操作。RegionServer组件实际上是一个综合体系&#xff0c;包含多个各司其职的核心模块&#xff1a;HLog、MemStore、HFile以及BlockCache。RegionServer内部结构RegionServer是HBase系统响应…

C++/C中 sizeof(指针)和sizeof(数组名)的区别

1、sizeof(array)/sizeof(int)的含义 array是个数组 sizeof (array)就是这个数组所占的内存总量&#xff08;字节数), sizeof(int)就是单个所占的内存. 所以呢&#xff0c; sizeof (array&#xff09; / sizeof (int)就是array数组的元素的个数. 2、 sizeof(指针)和sizeof(数…

python zipfile setpassword_Python模块:zipfile

"""author:Peng(非原创)记录&#xff1a;开发历程"""最近在写一个Android APP&#xff0c;需下载服务器上的数据。有些PDF如果直接传输的话&#xff0c;将会增加通信的数据量&#xff0c;使下载时间变长。服务器在传输这些数据之前先对其进行压缩…

C++迭代器的使用和操作总结

目录 一.定义和初始化二.常用操作三.迭代器const_iterator四.使迭代器失效的操作 正文 迭代器是一种检查容器内元素并遍历元素的数据类型。C更趋向于使用迭代器而不是下标操作&#xff0c;因为标准库为每一种标准容器&#xff08;如vector&#xff09;定义了一种迭代器类型&am…

php页面之间传值_php如何在不同页面之间传值

php在不同页面之间传值的方法&#xff1a;1、利用post传值&#xff1b;2、利用get传值&#xff1b;3、利用session传值。session是全局变量的一种&#xff0c;经常用于用户登录后保存用户id之类的常用数据&#xff0c;选择session是非常好的选择。常用的三种方法&#xff1a;一…

数据结构-栈3-栈的应用-就近匹配

#define _CRT_SECURE_NO_WARNINGS #include"LinkList.c" #include<stdio.h> #include<stdlib.h> #include<string.h> //括号有没有匹配。哪个不匹配就指向哪个。。 //扫描字符串 //1、非括号字符忽略 //2、若遇到左括号&#xff0c;则入栈 //3、若…

使用 Jekyll 构建你的网站 - 初入门

文章目录 一、Jekyll介绍二、Jekyll安装和启动2.1 配置Ruby环境1&#xff09;Windows2&#xff09;macOS 2.2 安装 Jekyll2.3 构建Jekyll项目2.4 启动 Jekyll 服务 三、Jekyll常用命令四、目录结构4.1 主要目录4.2 其他的约定目录 五、使用GitLink构建Jekyll博客5.1 生成Jekyll…

调用ice服务器_Nodejs+socket.io搭建WebRTC信令服务器

前言我们在学习 WebRTC 时&#xff0c;首先要把实验环境搭建好&#xff0c;这样我们就可以在上面做各种实验了。对于 WebRTC 来说&#xff0c;它有一整套规范&#xff0c;如使它使用的接口、使用SDP进行媒体协商、通过ICE收集地址并进行连通性检测等等。除此之外&#xff0c;We…

数据结构-栈4-栈的应用-中缀转后缀

//碰到数字直接输出 //运算符号&#xff1a;与栈顶符号进行优先级比较//若栈顶符号优先级比运算符号优先级低&#xff1a;此符号进栈&#xff08;括号优先级最低&#xff09;//若栈顶符号优先级不低于运算符号优先级&#xff1a;将栈顶符号一直弹出并输出&#xff0c;直到不满足…

四二拍用音符怎么表示_每个音符都是赞美歌拍子分析 0基础识简谱每日必看

点击上方蓝字 关注我们拍子状态分析是为了帮助0基础家人识谱用的&#xff0c;一首诗歌拿在手上只所以看起来复杂&#xff0c;是这些节奏让人眼花缭乱&#xff0c;其实真正理解了其中的含义&#xff0c;就会感觉豁然开朗&#xff0c;此种方法是掌握节奏型的捷径&#xff0c;不需…