前言

这个系列可能会分为几部分:

  1. 基础以及高级用法总结
  2. 一些比较有代表性的实战
  3. 源码解析(一定是用最粗俗,不对,是最通俗的语言讲解,这个我可以保证)

总之一定对得起高级进阶这几个字。。。

组件分类

vue组件主要包含:

  1. 由vue-router产生的页面,可以称之为路由组件
  2. 独立基础组件:例如Date和input这之类的可以全局复用的基础组件
  3. 业务组件,除了以上两种就是业务组件

组件精髓

props

  • tppe 类型
  • default 默认
    • 如果是对象,数组,必须要写成方法进行返回
msg:{
type: Array,
default: ()=>([])
}
  • validator 校验,有一个参数value
  • inheritAttrs 是否继承html特性
  • 子组件不能修改父组件传递过来的prop

event

方法一

<parent-com @on-click="handleClick"></parent-com>

子组件
<button>点击</button>
在子组件中触发
this.$emit('on-click', event)

方法二

加上.native就是原生方法
<parent-com @click.native="handleClick"></parent-com> 子组件
<button>点击</button>

slot

<slot> 节点就是指定的一个插槽的位置,v-slot:[name]可以指定插槽的位置,有了name就叫具名插槽

具名slot

元素可以用一个特殊的属性 name 来配置如何分发内容。多个 slot 可以有不同的名字。具名 slot 将匹配内容片段中有对应 slot 特性的元素 父组件

    <slotshow>
<p>{{msg}}</p>
<h6 slot="xxx">就是没有废话!</h6> vue2.6以上的版本是这样的
<h6 v-slot:xxx>就是没有废话!</h6>
</slotshow>

子组件

    <div class="slotcontent">
<slot></slot>
<slot name="xxx"></slot>
</div>

作用域插槽

作用域插槽是一种特殊类型的插槽,用作使用一个 (能够传递数据到) 可重用模板替换已渲染元素。 在子组件中,只需将数据传递到插槽,就像将 props 传递给组件一样,插槽的内容就可以使用这个传递过来的数据在父级中,具有特殊属性 scope 的 <template> 元素必须存在,表示它是作用域插槽的模板。scope 的值对应一个临时变量名,此变量接收从子组件中传递的 props 对象.

列表组件

var childNode = {
template: `
<ul>
// 通过:text="item.text"进行传值
<slot name="item" v-for="item in items" :text="item.text">默认值</slot>
</ul>
`,
data(){
return{
items:[
{id:1,text:'第1段'},
{id:2,text:'第2段'},
{id:3,text:'第3段'},
]
}
}
}; var parentNode = {
template: `
<div class="parent">
<p>父组件</p>
<child>
// 通过props进行接收
<template slot="item" scope="props">
<li>{{ props.text }}</li>
</template>
</child>
</div>
`,
components: {
'child': childNode
},
};

组件通信(第二篇会详细讲解8种用法)

  1. ref:给元素或组件注册引用信息;
  2. $parent / $children:访问父 / 子实例。
  3. props 父向子传递
  4. $emit和$on,子----->父
  5. vuex

一些碎知识

  1. 改变数组某一项的方法:

    1. 直接改变对象的引用
    2. 可以使用push,shift等方法
    3. 可以使用vue的变异方法
    Vue.set(vm.userinfo,2,{a:1})  == vm.$set(vm.userinfo,2,{a:1})
    
    
  2. is属性

    <table>
    <tr id="row"></tr> 注意is的使用 table中只能使用tr
    </table>
  3. 在子组件中的data必须是一个function,来return 一个对象,这是为了保证每一个实例的data属性都是独立的,不会相互影响

 

vue高级进阶( 一 ) 组件精髓概述的更多相关文章

  1. vue 高级属性父组件provide向子组件发送数据,子组件通过inject接收数据

    以前父组件向子组件中传值是通过props传值,子组件不能更改父组件中的值,但是可以通过从父组件中获取的值定义给自己的data值,这里父组件可以通过provide向子组件传递自己组件中的data值,子组 ...

  2. vue 基础-->进阶 教程(2): 指令、组件

    第二章 建议学习时间4小时  课程共3章 前面的nodejs教程并没有停止更新,因为node项目需要用vue来实现界面部分,所以先插入一个vue教程,以免不会的同学不能很好的完成项目. 本教程,将从零 ...

  3. vue 基础-->进阶 教程(3):组件嵌套、组件之间的通信、路由机制

    前面的nodejs教程并没有停止更新,因为node项目需要用vue来实现界面部分,所以先插入一个vue教程,以免不会的同学不能很好的完成项目. 本教程,将从零开始,教给大家vue的基础.高级操作.组件 ...

  4. vue从入门到进阶:组件Component详解(六)

    一.什么是组件? 组件 (Component) 是 Vue.js 最强大的功能之一.组件可以扩展 HTML 元素,封装可重用的代码.在较高层面上,组件是自定义元素,Vue.js 的编译器为它添加特殊功 ...

  5. vue 基础-->进阶 教程(2): 指令、自定义指令、组件

    第二章 建议学习时间4小时  课程共3章 前面的nodejs教程并没有停止更新,因为node项目需要用vue来实现界面部分,所以先插入一个vue教程,以免不会的同学不能很好的完成项目. 本教程,将从零 ...

  6. Vue.js 源码分析(二十七) 高级应用 异步组件 详解

    当我们的项目足够大,使用的组件就会很多,此时如果一次性加载所有的组件是比较花费时间的.一开始就把所有的组件都加载是没必要的一笔开销,此时可以用异步组件来优化一下. 异步组件简单的说就是只有等到在页面里 ...

  7. Vue.js 源码分析(二十八) 高级应用 transition组件 详解

    transition组件可以给任何元素和组件添加进入/离开过渡,但只能给单个组件实行过渡效果(多个元素可以用transition-group组件,下一节再讲),调用该内置组件时,可以传入如下特性: n ...

  8. 【Vue】详解组件的基础与高级用法

    Vue.js 最核心的功能就是组件(Component),从组件的构建.注册到组件间通信,Vue 2.x 提供了更多方式,让我们更灵活地使用组件来实现不同需求. 一.构建组件 1.1 组件基础 一个组 ...

  9. 高级进阶DB2(第2版)——内部结构、高级管理与问题诊断

    <高级进阶DB2(第2版)——内部结构.高级管理与问题诊断> 基本信息 作者: 牛新庄    出版社:清华大学出版社 ISBN:9787302323839 上架时间:2013-7-3 出版 ...

  10. 高级进阶DB2(第2版)

    <高级进阶DB2(第2版)> 基本信息 作者: 牛新庄 出版社:清华大学出版社 ISBN:9787302323839 上架时间:2013-7-3 出版日期:2013 年7月 开本:16开 ...

随机推荐

  1. 解决MSsql 中文变成"?"的问题

    ALTER DATABASE IMStest SET SINGLE_USER WITH ROLLBACK IMMEDIATE; ALTER database IMStest collate Chine ...

  2. Vue框架中有关 computed的相关知识

    1,传统使用computed属性的方式如下: 注意:此时如果我们点击修改的时候会有如下警告(表示computed属性不可以修改,如果非得修改,我们应该如下下图所示操作) 2,修改computed属性的 ...

  3. marker的存储组---layerGroup

    1 <!DOCTYPE html> 2 <html lang="zh"> 3 <head> 4 <meta charset="U ...

  4. 网站整套部署方案-负载均衡配置Nginx+宝塔+云数据库+云WAF

    这是一套部署特别方便的站点方案,包括使用nginx负载均衡,宝塔部署站点,云数据库加一套安全产品云WAF. 一.结构图 1.基本功能 负载均衡,WEB,数据库都是在一个云平台上,内网都属于一个vpc二 ...

  5. iOS设备和模块解耦-方案对比

     问题: 第一点,我们的设备之间,通过设备类型进行区分,然后分别跳转到不同的界面.导致不同设备会对同一个类别进行操作. 就会造成代码耦合,后续对类别进行增删改就会导致并行开发中容易出现代码冲突或者代码 ...

  6. vue实现记录分享是否有上级

    前言: 项目需要做活动分享功能(增加网站.app等访问量),但是,,,无功不受禄,也就需要分享时带上级ID,好友中奖,本人也受同样优惠 需求开发: 开发一个活动后,本人参加之后,分享给好友,增加自身中 ...

  7. 蓝牙mesh组网实践(选择性配网与自配网参数分析)

    目录 使用配网器配网方式: 在之前的文章中介绍了CH582单片机在蓝牙mesh组网中的两种配网方式,有介绍到:未配网设备不能选择被哪个配网器配网,配网器可以选择给哪个未配网设备配网.接下来介绍在哪里可 ...

  8. 1.markdown

    markdown 使用学习 # +标题名字 选择标题 最多6级 一个#表示加一级 一级最大 字体 对字体加粗等操作 hello **hello** 粗体 hello *hello* 斜体 hello ...

  9. JAVA JAR包注册成服务,开机启动,WINSW使用

    1,下载工具 WINSW. https://www.aliyundrive.com/s/fACj3xk8R74 点击链接保存,或者复制本段内容,打开「阿里云盘」APP ,无需下载极速在线查看,视频原画 ...

  10. JSP过滤器、Session监听器、Servlet控制器的关系和执行顺序

    1.首先配置好过滤器和监听器,访问index.jsp页面(在index.jsp中设置session的Attribute属性.session的失效时间,查看的顺序是什么?); 1.运行Tomact的结果 ...