0

0

vue组件是什么?Vue组件的的介绍

不言

不言

发布时间:2018-08-07 13:48:06

|

4641人浏览过

|

来源于php中文网

原创

vue组件是什么?组件是可复用的 vue 实例。本质上是一个对象,该对象包含data、computed、watch、methods、filters以及vue组件生命周期钩子等成员属性,下面本文将给大家具体说一说vue组件的内容。

我们先来看一下组件结构:

{
  data(){
    return {
      //
    }
  },
  computed:{
    displayName(){
      return '';
    }
  },
  methods:{
    onClickHandler(params){
      // do something
    }
  }
}

基础知识:

data属性

data属性维护一个组件内部状态,其余组件正常情况下不可见。

立即学习前端免费学习笔记(深入)”;

目前不知道如何监听其变化;

因为计算属性computed和侦听属性watch只能监听 响应式依赖 的变化,而$refs非响应式。

可以通过props传递给子组件;

可以通过$emit的方式传递给父组件;

可以通过this.$refs.ref.$data在mounted生命周期内获取子组件的内部状态;

一个组件的 data 选项必须是一个函数。

  data选项有两种定义方式:
  
  一、对象形式:
  
  ```
  data:{
    //引用该组件的地方,共用一个状态的引用,以至于,只要有一处修改了$data中的某一属性值,其它引用该组件的地方也跟随着改变该属性值(其实,不是跟随,本来就是同一个指向)。
  }
  ```
  
  二、函数形式:
  
  ```
  data(){
    return {
      //引用该组件的地方,每一个组件都会获得独立的引用,互不干扰。
    }
  }
  ```

computed属性、methods属性、filter

区别 method computed filter
类型 函数 数据变量 函数
用途 作事件处理函数 作数据 作管道符
作用范围 组建内 组建内 组建内(局部注册)、全局(全局注册)
参数 可以带参 不带参(非函) 带参
返回值 不要求 必须有 必须有
触发 交互时触发 在它的相关依赖发生改变时才会重新求值 传入的数据变化时执行

注意:

Vue中并不是所有的属性都是响应式的,如$refs无法监听它的变动;

组件构建的主要区别在于模板的生成方式

模板定义方式

template选项

字符串模板

以HTML标签结构组成的字符串;

示例:

{
  template: '

简单示例

', props: { level: { type: Number, required: true } } }

id选择器指定的模板

以id标识的一段script标签包裹的HTML片段;

示例:


{
  template: '#anchored-heading-template',
  props: {
    level: {
      type: Number,
      required: true
    }
  }
}

render

发挥JavaScript最大的编程能力,该函数接收一个createElement方法作为第一个参数用来创建VNode;

createElement接收三个参数:组件根节点类型、组件配置对象、子节点(官方关于组件配置对象的说明);

示例:

{
  render: function (createElement) {
    return createElement(
      'h' + this.level,   // tag name 标签名称
      this.$slots.default // 子组件中的阵列
    )
  },
  props: {
    level: {
      type: Number,
      required: true
    }
  }
}

vue单文件组件

单文件组件将模板、逻辑、样式在结构上分离,保存在同一个文件中。



方案选择

template 单文件 render
一行的简单结构 常规的选择 前边两种方案解决不了时候的选择(灵活性高)

注意:不论选择哪一种方案,定义模板时,一定要有一个非template标签元素作根DOM,有且仅有一个。

vue组件注册方式

局部注册

以上几种方案定义的组件本质上都是一个对象,获取该对象(假设变量名为TabBar),要求只在另一个组件(假设变量名为App)内使用:

45°C商城系统
45°C商城系统

系统介绍 45°C 商城系统,以 Thinkphp5.0 + Uniapp + Layui2.9 + Vue 为技术基石,精心打造出的全新 MINI 商城应用。其功能覆盖全面,无论是 PC 商城、H5 商城,还是公众号商城、微信小程序以及抖音小程序的制作都能完美胜任。采用标准系统结合插件模式开发,用户能够极为便捷地定制专属的个性模块。整个系统,从程序设计到 UI 呈现,都秉持着一贯的小而美理念。程

下载

App组件的配置对象:

{
  components:{
    'tab-bar': TabBar,
  }
}

这样就是局部注册,该组件TabBar只能在App模板中使用,其它组件对TabBar不可见。

全局注册

以上几种方案定义的组件本质上都是一个对象,获取该对象(假设变量名为TabBar),要求项目内任何组件可使用:

一般在项目的入口文件(如:脚手架搭建项目的main.js)中:

Vue.component('tab-bar',TabBar);

这样就是全局注册,该组件TabBar能在整个项目内使用,所有组件对TabBar可见。

vue组件生命周期钩子

以下用自己的语言将生命周期钩子表述一下:

373131711-5a9627da1fb25_articlex.png

beforeCreate

在这个时候,生命周期函数已经准备好。

组件实例已经构建,但本组件实例的数据、方法还没有注入;

可以在各个生命周期内通过组件实例this调用根实例上注入的$router$store等对象。

可以在本生命周期内进行数据初始化;

created

在这个时候,当前组件实例this上的属性($dataprops$methods...)已经注入绑定,可以调用本实例上的成员属性;

beforeMount

在进入本生命周期之前,会进行以下判断:

是否有el选项(指定挂载目标):

有el选项的是根实例;

没有el选项的是非根实例(默认挂载元素为组件调用的位置);

是否有template选项:

有template选项的是内联模板;

没有template选项的是单文件组件;

个人觉得,还有render选项的判断;

最终这些模板都会转换为render函数进行渲染!!!

这个生命周期在解析模板,不知道有什么实际用途。

mounted

在本生命周期之前,已经将模板渲染为真实DOM,其中vm.$el为组件实例的根DOM元素;

本生命周期是初始化第三方插件的场所;

必要时候,可以在本生命周期内对DOM进行操作;

本生命周期是获取this.$refs.ref的场所;

相关文章推荐:

Vue组件及数据传递详解

Vue组件的开发技巧总结

vue注册组件有几种方法

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
js 字符串转数组
js 字符串转数组

js字符串转数组的方法:1、使用“split()”方法;2、使用“Array.from()”方法;3、使用for循环遍历;4、使用“Array.split()”方法。本专题为大家提供js字符串转数组的相关的文章、下载、课程内容,供大家免费下载体验。

320

2023.08.03

js截取字符串的方法
js截取字符串的方法

js截取字符串的方法有substring()方法、substr()方法、slice()方法、split()方法和slice()方法。本专题为大家提供字符串相关的文章、下载、课程内容,供大家免费下载体验。

212

2023.09.04

java基础知识汇总
java基础知识汇总

java基础知识有Java的历史和特点、Java的开发环境、Java的基本数据类型、变量和常量、运算符和表达式、控制语句、数组和字符串等等知识点。想要知道更多关于java基础知识的朋友,请阅读本专题下面的的有关文章,欢迎大家来php中文网学习。

1503

2023.10.24

字符串介绍
字符串介绍

字符串是一种数据类型,它可以是任何文本,包括字母、数字、符号等。字符串可以由不同的字符组成,例如空格、标点符号、数字等。在编程中,字符串通常用引号括起来,如单引号、双引号或反引号。想了解更多字符串的相关内容,可以阅读本专题下面的文章。

625

2023.11.24

java读取文件转成字符串的方法
java读取文件转成字符串的方法

Java8引入了新的文件I/O API,使用java.nio.file.Files类读取文件内容更加方便。对于较旧版本的Java,可以使用java.io.FileReader和java.io.BufferedReader来读取文件。在这些方法中,你需要将文件路径替换为你的实际文件路径,并且可能需要处理可能的IOException异常。想了解更多java的相关内容,可以阅读本专题下面的文章。

655

2024.03.22

php中定义字符串的方式
php中定义字符串的方式

php中定义字符串的方式:单引号;双引号;heredoc语法等等。想了解更多字符串的相关内容,可以阅读本专题下面的文章。

610

2024.04.29

go语言字符串相关教程
go语言字符串相关教程

本专题整合了go语言字符串相关教程,阅读专题下面的文章了解更多详细内容。

172

2025.07.29

c++字符串相关教程
c++字符串相关教程

本专题整合了c++字符串相关教程,阅读专题下面的文章了解更多详细内容。

83

2025.08.07

C++ 设计模式与软件架构
C++ 设计模式与软件架构

本专题深入讲解 C++ 中的常见设计模式与架构优化,包括单例模式、工厂模式、观察者模式、策略模式、命令模式等,结合实际案例展示如何在 C++ 项目中应用这些模式提升代码可维护性与扩展性。通过案例分析,帮助开发者掌握 如何运用设计模式构建高质量的软件架构,提升系统的灵活性与可扩展性。

14

2026.01.30

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
React 教程
React 教程

共58课时 | 4.4万人学习

TypeScript 教程
TypeScript 教程

共19课时 | 2.6万人学习

Bootstrap 5教程
Bootstrap 5教程

共46课时 | 3.1万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号