组件化
组件化是vue的核心思想,它能提高开发效率,方便重复使用,简化调试步骤,提升整个项目的可维护性,便于多人协同开发
组件通信
父组件 => 子组件:
属性props
特性$attrs
引用refs
  1. // child
    props: { msg: String }
  1. // parent
    <HelloWorld msg="Welcome to Your Vue.js App"/>
// child:并未在props中声明foo<p>{{$attrs.foo}}</p>
  1. // parent
    <HelloWorld foo="foo"/>
  1. // parent
    <HelloWorld ref="hw"/>
  1. mounted() {
    this.$refs.hw.xx = 'xxx'
}
子元素$children
  1. // parent
    this.$children[0].xx = 'xxx'
子元素不保证顺序
子组件 => 父组件:自定义事件
// child
this.$emit('add', good)
// parent
<Cart @add="cartAdd($event)"></Cart>
  1. 兄弟组件:通过共同祖辈组件
通过共同的祖辈组件搭桥,$parent或$root。
// brother1
this.$parent.$on('foo', handle)
// brother2
this.$parent.$emit('foo')
祖先和后代之间
// ancestor
  1. provide() {
    return {foo: 'foo'}
}
  1. // descendant
inject: ['foo']
由于嵌套层数过多,传递props不切实际,vue提供了 provide/inject API完成该任务provide/inject:能够实现祖先给后代传值
任意两个组件之间:事件总线 或 vuex事件总线:创建一个Bus类负责事件派发、监听和回调管理
export default class Bus{
    constructor(){
        this.callbacks = {}
    }
    $on(name, fn){
        this.callbacks[name] = this.callbacks[name] || []
        this.callbacks[name].push(fn)
    }
    $emit(name, args){
        if(this.callbacks[name]){
            this.callbacks[name].forEach(cb => cb(args))
        }
    }
}
// main.js
  1. Vue.prototype.$bus = new Bus()
// child1
this.$bus.$on('foo', handle)
// child2
this.$bus.$emit('foo')
实践中可以用Vue代替Bus,因为它已经实现了相应功能vuex:创建唯一的全局数据管理者store,通过它管理数据并通知组件状态变更
插槽
插槽语法是Vue 实现的内容分发 API,用于复合组件开发。该技术在通用组件库开发中有大量应用。匿名插槽
具名插槽
  1. 将内容分发到子组件指定位置
// comp1
  1. <div>
    <slot></slot>
</div>
  1. // parent
    <comp>hello</comp>
作用域插槽
  1. 分发内容要用到子组件中的数据
// comp3
  1. <div>
    <slot :foo="foo"></slot>
</div>
// parent
<Comp3>
<!-- 把v-slot的值指定为作用域上下文对象 --><template v-slot:default="slotProps">
来自子组件数据:{{slotProps.foo}}</template>
</Comp3>
Vue-router
Vue-router是vue.js官方路由管理器,它和vue.js的核心深度集成,让构建单页面变得易如反掌
安装: vue add router
核心步骤:
步骤一:使用vue-router插件,router.js
import Router from 'vue-router'
Vue.use(Router)
步骤二:创建Router实例,router.js
export default new Router({…})
步骤三:在根组件上添加该实例,main.js
import router from './router'
new Vue({
  router,
}).$mount("#app”);
步骤四:添加路由视图,App.vue
<router-view></router-view>
导航
  1. <router-link to="/">Home</router-link>
    <router-link to="/about">About</router-link>

Vue组件化和路由的更多相关文章

  1. vue组件化的应用

    前言:vue组件化的应用涉及到vue-cli的内容,所以在应用之前是需要安装node和vue-cli的,具体如何安装我就不一一赘述了.可能一会儿我心情好的时候,可以去整理一下. 1.应用的内容:在一个 ...

  2. Vue组件化开发

    Vue的组件化 组件化是Vue的精髓,Vue就是由一个一个的组件构成的.Vue的组件化设计到的内容又非常多,当在面试时,被问到:谈一下你对Vue组件化的理解.这时候又有可能无从下手,因此在这里阐释一下 ...

  3. vue组件化之模板优化及注册组件语法糖

    vue组件化之模板优化及注册组件语法糖 vue组件化 模板 优化  在 https://www.cnblogs.com/singledogpro/p/12054895.html 这里我们对vue.js ...

  4. vue组件化初体验 全局组件和局部组件

    vue组件化初体验 全局组件和局部组件 vue组件化 全局组件 局部组件  关于vue入门案例请参阅 https://www.cnblogs.com/singledogpro/p/11938222.h ...

  5. 4.VUE前端框架学习记录四:Vue组件化编码2

    VUE前端框架学习记录四:Vue组件化编码2文字信息没办法描述清楚,主要看编码Demo里面,有附带完整的代码下载地址,有需要的同学到脑图里面自取.脑图地址http://naotu.baidu.com/ ...

  6. 3.VUE前端框架学习记录三:Vue组件化编码1

    VUE前端框架学习记录三:Vue组件化编码1文字信息没办法描述清楚,主要看编码Demo里面,有附带完整的代码下载地址,有需要的同学到脑图里面自取.脑图地址http://naotu.baidu.com/ ...

  7. 三. Vue组件化

    1. 认识组件化 1.1 什么是组件化 人面对复杂问题的处理方式 任何一个人处理信息的逻辑能力都是有限的,所以当面对一个非常复杂的问题时我们不太可能一次性搞定一大堆的内容. 但是我们人有一种天生的能力 ...

  8. 二、vue组件化开发(轻松入门vue)

    轻松入门vue系列 Vue组件化开发 五.组件化开发 1. 组件注册 组件命名规范 组件注册注意事项 全局组件注册 局部组件注册 2. Vue调试工具下载 3. 组件间数据交互 父组件向子组件传值 p ...

  9. vue - Vue组件化编程

    今天是对vue组件化的一个理解,最主要的单文件组件,然后就可以脚手架的学习了,本来昨晚就该上传的,但是用的那个上传博客园的Python脚本不行了,换了一个新的. 组件化让我越来越感觉到框架的力量了 一 ...

随机推荐

  1. 【Mark】博弈类题目小结(HDU,POJ,ZOJ)

    转载请注明出处,谢谢http://blog.csdn.net/ACM_cxlove?viewmode=contents    by---cxlove 首先当然要献上一些非常好的学习资料: 基础博弈的小 ...

  2. es6的class关键字与es5的构造函数

    1,构造函数 function Point(x, y) { this.x = x; this.y = y; } Point.prototype.toString = function () { ret ...

  3. Bootstrap Table--onEditableSave

    当某列编辑完成后,需要对当前列所在的行进行修改操作: $("#grid").bootstrapTable({ url:'', …… …… //其他属性 columns:[{ fie ...

  4. Hashtable 和 HashMap 的区别是:

    HashMap 是内部基于哈希表实现,该类继承AbstractMap,实现Map接口 Hashtable 线程安全的,而 HashMap 是线程不安全的 Properties 类 继承了 Hashta ...

  5. 初始化Thread

    此处初始化的步骤和上文中介绍的一样,也是调用runClinit方法.首先设置初始化线程为CurrentThread,然后由于其父类Object此时的状态为CLASS_READY,因此就不需要初始化父类 ...

  6. vue 全局引用jq(打包后可能会遇到的问题)

    问题描述:全局引用jquery打包到线上可能会不好使. 第一步: var path = require('path') var webpack = require('webpack') functio ...

  7. linux系统PS命令,按CPU、内存使用率对进程排序

    https://blog.csdn.net/weixin_42123737/article/details/90081318

  8. leetcode-mid-sorting and searching - 33. Search in Rotated Sorted Array

    mycode class Solution(object): def search(self, nums, target): """ :type nums: List[i ...

  9. 前端必须掌握的 docker 技能(1)

    概述 作为一个前端,我觉得必须要学会使用 docker 干下面几件事: 部署前端应用 部署 nginx 给部署的 nginx 加上 https 使用 docker compose 进行部署 给 ngi ...

  10. C# .Net动态调用webService实现思路及代码

    加载: using System; using System.Collections.Generic; using System.Linq; using System.Web; using Syste ...