IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> Vue 组件 -> 正文阅读

[JavaScript知识库]Vue 组件

一、概念

? ? ? ? 首先我们先看一个Vue组件的实例

<div id="app">
    <counter></counter>
</div>
<script>

// 定义一个名为 counter 的新组件
Vue.component('counter', {
  data: function () {
    return {
      count: 0
    }
  },
  template: '<button @click="count++">你点击了 {{ count }} 次.</button>'
})
new Vue({ el: '#app' })
</script>

????????组件是可复用的 Vue 实例,且拥有名字,可以作为自定义元素来使用

????????注意:

????????因为组件是可复用的 Vue 实例,所以它们与?new Vue?接收相同的选项,例如?datacomputedwatchmethods?以及生命周期钩子等。仅有的例外是像?el?这样根实例特有的选项

二、组件的复用

你可以将组件进行任意次数的复用:

<div id="app">
    <counter></counter>
    <counter></counter>
    <counter></counter>
</div>

注意:

? ? ? ? 1、当点击按钮时,每个组件都会各自独立维护它的?count。因为你每用一次组件,就会有一个它的新实例被创建。?

? ? ? ? 2、组件内 data 必须为一个函数,如果不是函数,点击一个按钮就可能会影响到其它所有实例。

三、注册组件

? ?1.组件名

?在注册一个组件的时候,我们始终需要给它一个名字。在上面的示例中我们看到:

Vue.component('counter', { /* ... */ })

其中 counter 就是我们这个组件的组件名 。组件名就是?Vue.component?的第一个参数

我们为组件命名时推荐使用?W3C 规范中的自定义组件名 (字母全小写且必须包含一个连字符)

?2.组件名的大小写

? ? ? ? 我们为组件命名时会有两种情况:

a.?kebab-case (短横线分隔命名)

Vue.component('my-component-name', { /* ... */ })

? 当使用 kebab-case 定义一个组件时,你也必须在引用这个自定义元素时使用 kebab-case,例如?<my-component-name>

b.?PascalCase?(首字母大写命名)

Vue.component('MyComponentName', { /* ... */ })

????????当使用 PascalCase 定义一个组件时,你在引用这个自定义元素时两种命名法都可以使用。也就是说?<my-component-name>?和?<MyComponentName>?都是可接受的。注意,尽管如此,直接在 DOM (即非字符串的模板) 中使用时只有 kebab-case 是有效的。

3.全局注册

????????到目前为止,我们只用过?Vue.component?来创建组件:

Vue.component('my-component-name', { /* ... */ })

?这些组件是全局注册的。也就是说它们在注册之后可以用在任何新创建的 Vue 根实例 (new Vue) 的模板中。例如:

Vue.component('btn-a', { /* ... */ })
Vue.component('btn-b', { /* ... */ })
Vue.component('btn-c', { /* ... */ })

new Vue({ el: '#app' })
<div id="app">
   <btn-a></btn-a>
   <btn-b></btn-b>
   <btn-c></btn-c>
</div>

在所有子组件中也是如此,也就是说这三个组件在各自内部也都可以相互使用。

4.局部注册

????????全局注册往往是不够理想的。比如,如果你使用一个像 webpack 这样的构建系统,全局注册所有的组件意味着即便你已经不再使用一个组件了,它仍然会被包含在你最终的构建结果中。这造成了用户下载的 JavaScript 的无谓的增加。

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

var A = { /* ... */ }
var B = { /* ... */ }
var C = { /* ... */ }

然后在?components?选项中定义你想要使用的组件:

new Vue({
  el: '#app',
  components: {
    'a':A,
    'b':B,
    'c':C,
  }
})

注意? ?局部注册的组件在其子组件中不可用。例如,如果你希望?A?在?B?中可用,则你需要这样写:

var A = { /* ... */ }

var B = {
  components: {
    'a': A
  },
  // ...
}

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2021-08-20 15:00:21  更:2021-08-20 15:00:49 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 9:46:41-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码