当前位置: 首页 > news >正文

vue-组件基础

基本参考了vue.js官网,按照自己的思路理一理。

1,基本示例

  • 我们可以在一个通过 new Vue 创建的 Vue 根实例中,把这个组件作为自定义元素来使用:
<div id="components-demo">
  <button-counter></button-counter>
</div>
复制代码
// 定义一个名为 button-counter 的新组件
Vue.component('button-counter', {
  data: function () {
    return {
      count: 0
    }
  },
  template: '<button v-on:click="count++">You clicked me {{ count }} times.</button>'
})
复制代码
new Vue({ el: '#components-demo' })
复制代码

2,组件的复用

2.1,组件的特性

  1. 组件是可任意次数复用的 Vue 实例
  2. 组件可以作为自定义元素来使用
    • 每用一次组件,就会有一个它的新实例被创建。
    • 每个组件都会各自独立维护它的 data等实例属性

2.2,data是函数

  • 为了保证,每个实例可以维护一份被返回对象的独立的拷贝:
data: function () {
  return {
    count: 0
  }
}
复制代码

3,组件的组织

  • 通常,会以一棵嵌套的组件树的形式来组织

4,组件注册类型

4.1,全局注册

Vue.component('my-component', {
  // ... options ...
})
复制代码
  1. 全局注册,意味着在注册之后可以用在,任何新创建的 Vue 根实例 (new Vue) 的模板中。比如:
Vue.component('component-a', { /* ... */ })
Vue.component('component-b', { /* ... */ })
Vue.component('component-c', { /* ... */ })

new Vue({ el: '#app' })
复制代码
<div id="app">
  <component-a></component-a>
  <component-b></component-b>
  <component-c></component-c>
</div>
复制代码
  1. 任何新创建的 Vue 根实例 (new Vue) 的模板,指:
  • 因为,在开发中,一般都是以App文件作为根模板,即根实例的模板,其他的都是其后代模板。如下代码所示:
import Vue from 'vue'
import App from './App'
import router from './router'

/* eslint-disable no-new */
new Vue({
  el: '#app',
  router,
  components: { App },
  template: '<App/>'
})
复制代码
  • 所以,所有的后代模板都可以使用全局注册的组件。
  • 所以,全局注册的组件,在各自的内部,也可以互相使用

4.2,局部注册

  • 全局注册的缺陷:

全局注册的组件意味着即便你已经不再使用一个组件了,它仍然会被包含在你最终的构建结果中。这造成了下载的 JavaScript 无谓的增加。

在这些情况下,可以通过一个普通的 JavaScript 对象来定义组件:

  • 这些 JavaScript 对象,和在模块中 export default 出的对象一样的。
var ComponentA = { /* ... */ }
var ComponentB = { /* ... */ }
var ComponentC = { /* ... */ }
复制代码
new Vue({
  el: '#app'
  components: {
    'component-a': ComponentA,
    'component-b': ComponentB
  }
})
复制代码
  • 局部注册的组件,在其它同时注册的局部组件中不可用!

ComponentBComponentA中是不可用的。

这样就可以实现了:

var ComponentB = {
  components: {
    'component-a': ComponentA
  },
  // ...
}
复制代码

这是一般情况下写的,都是通过 Babelwebpack 使用 ES6 模块

  • 在某组件中,局部注册 ComponentA
import ComponentA from './ComponentA.vue'

export default {
  components: {
    ComponentA
  },
  // ...
}
复制代码

5,模块系统

5.1,在模块系统中,局部注册

这就是一般在项目中得main.js文件:

import Vue from 'vue'
import App from './App'
import router from './router'


/* eslint-disable no-new */
new Vue({
  el: '#app',
  router,
  components: { App },
  template: '<App/>'
})
复制代码
  • components属性,其属性值是一个对象。这样的书写方式,就代表注册局部组件
  • template,表示要使用的模板,可以使用引入的,也可以直接写html标签。

5.2,基础组件的自动化全局注册

这里主要想说的是,引入图片的方法。关于webpack的require.context()

-- 待续

转载于:https://juejin.im/post/5b8685d9e51d4538db34c7fd

相关文章:

  • 办公用品管理系统VB——库存数量导出EXCEL,SaveEXCEL
  • 字节、字、bit、byte的关系
  • Timer 控件中的Elapsed事件与tick事件的区别
  • @ConfigurationProperties注解对数据的自动封装
  • Java 中创建子类对象会创建父类对象么?
  • 通过PXE部署系统时报错 0xc000000f
  • RabbitMQ之消息确认机制(事务+Confirm)
  • 大屏FAQ
  • java源码 - CountDownLatch
  • 推荐几十本DBA学习的书
  • 利用 Siblings一步实现多个同级div,只改变当前点击的div样式
  • 前端笔记-201808
  • 设置PHP最长运行时间
  • zabbix添加nginx中间件监控
  • 将MWeb的文章发布到自己做的网站(超级详细)
  • Hibernate最全面试题
  • LintCode 31. partitionArray 数组划分
  • PaddlePaddle-GitHub的正确打开姿势
  • Python3爬取英雄联盟英雄皮肤大图
  • vue-router 实现分析
  • 阿里云应用高可用服务公测发布
  • 初识MongoDB分片
  • 技术发展面试
  • 世界编程语言排行榜2008年06月(ActionScript 挺进20强)
  • 微服务框架lagom
  • 新手搭建网站的主要流程
  • 移动端 h5开发相关内容总结(三)
  • 在Mac OS X上安装 Ruby运行环境
  • 转载:[译] 内容加速黑科技趣谈
  • 如何通过报表单元格右键控制报表跳转到不同链接地址 ...
  • 我们雇佣了一只大猴子...
  • #《AI中文版》V3 第 1 章 概述
  • #FPGA(基础知识)
  • #LLM入门|Prompt#2.3_对查询任务进行分类|意图分析_Classification
  • #pragma once与条件编译
  • #我与Java虚拟机的故事#连载07:我放弃了对JVM的进一步学习
  • (博弈 sg入门)kiki's game -- hdu -- 2147
  • (分类)KNN算法- 参数调优
  • (附源码)计算机毕业设计SSM基于健身房管理系统
  • (企业 / 公司项目)前端使用pingyin-pro将汉字转成拼音
  • (全部习题答案)研究生英语读写教程基础级教师用书PDF|| 研究生英语读写教程提高级教师用书PDF
  • (四)Tiki-taka算法(TTA)求解无人机三维路径规划研究(MATLAB)
  • (转)mysql使用Navicat 导出和导入数据库
  • (转载)在C#用WM_COPYDATA消息来实现两个进程之间传递数据
  • .NET 4.0中使用内存映射文件实现进程通讯
  • .NET HttpWebRequest、WebClient、HttpClient
  • .NET LINQ 通常分 Syntax Query 和Syntax Method
  • .NET 反射的使用
  • .NET开源快速、强大、免费的电子表格组件
  • .net图片验证码生成、点击刷新及验证输入是否正确
  • .net网站发布-允许更新此预编译站点
  • .NET值类型变量“活”在哪?
  • .Net转Java自学之路—SpringMVC框架篇六(异常处理)
  • .pop ----remove 删除
  • @ModelAttribute 注解