2018-07-30

 

  npm

 

 

  npm

 

## vue-unicom

vue-unicom是一个Vue.js的一个组件。解决了Vue中组件通讯的痛点。利用事件总线原理,实现了任意Vue组件之间的通讯。

## 功能

- 提供任意两个Vue组建之间的通讯问题;

- 任意一个Vue组件向其他所有组件发送指令;

- 任意一个Vue组件向某组Vue组件发送指令;

- 任意一个Vue组件向特定id组件发送消息;

- 在任意一个Vue组件内获取某组组件列表;

- 在任意一个Vue组件内获取特定id组件;

- 发送指令到还没初始化的组件;

- 发送指令到还没初始化的分组组件;

- 发送指令到还没初始化的id组件;

## 更新记录

* unicom 联通 想到中国联通就想到了这个名字

* 目的,提供vue 全局的转发机制

* [2018-01-18] 增加分组, 可以直接获取分组的 vm

* [2018-01-25] 增加 unicom-id,确定vm的唯一值

* [2018-02-07] 增加 ~ 表示,发送到还没创建的组件,目标组件创建的时候,会在created,收到unicom事件

  - ~后面为空(不包含@#...), 当目标组件被创建的时候,就会调用第二个函数参数

* [2018-02-08] 在实例组件时,也可以设置分组 unicom-name

* [2018-04-11] 去除 EventEmitter, 优化事件总线

## 运行demo

- npm install

- npm install gulp -g  (安装过可以忽略)

- gulp

- 浏览器中输入http://127.0.0.1:3101 (PC)

- 浏览器中输入http://ip:3101 (手机浏览器)

- demo中无,延后指令发送实例

- 实例访问: https://szpoppy.github.io/vue-unicom/dist/index.html

## 获取vue-unicom

- npm install vue-unicom

- github下载zip包,dist/lib/unicom.js,可以直接引入 到页面

## 使用,注册组件

````javascript

import Vue from 'vue'

import VueUnicom from 'vue-unicom'

// 非 cli 也必须 install一下

Vue.use(VueUnicom, {

    // 制定名称, 默认为 unicom

    unicom: 'unicom',

    // 定制分组使用名称 默认为 unicom + 'Name'

    unicomName: 'unicomName',

    // 定制id使用名称 默认为 unicom + 'Id'

    unicomId: 'unicomId'

})

````

## 注册接收指令

````javascript

{

    // Vue中增加 增加unicom参数

    // 这里的unicom,指 上面传入的参数

    unicom: {

        // instruct1:通讯指令

        // sender:发送指令者($vm)

        // args:指令发出者附带参数

        // 参数如果为对象,是引用类型,如果需要设置,请深度克隆一遍

        instruct1 (sender, ...args) {

            // .... this 为当前组件

        },

        instruct2 (sender, ...args) {

        }

    }

}

````

## 组件内注册分组

````javascript

{

    // Vue中增加 增加unicomName参数

    // 指定分组 属于 group, 所有实例,都属于这个分组

    unicomName: 'group'

}

````

## 组件加入多个分组

````javascript

{

    // 组件可以加入多个分组

    unicomName: ['group1', 'group2']

}

````

## 实例中加入组件分组

````html

````

## 实例中指定 unicomId

````html

````

## 组件内发送指令

````javascript

{

    methods:{

        method1 () {

            // 发送 instruct1 指令,参数为 1, 2

            this.$unicom('instruct1', 1, 2)

        }

    }

}

````

## 指令高级用法

> instruct1@group  (发送到指定分组)

> instruct1#id1    (发送到指定组件)

> @group            (获取指定分组组件)

> \#id1            (获取指定组件)

## 延迟发送指令(一次性指令)

指令使用 ~ 打头

> \~instruct1      (指令延迟发送,直到包含有instruct1指令的组件出现)

> \~instruct1@group (指令延迟发送,直到出现分组命名group的组件)

> \~instruct1#id1  (指令延迟发送,直到出现命名id1的组件)

## 组件监听

组件监听使用, 指令使用 ~ 打头, 第二个参数为 callback

> ~@group          (监听分组命名group的组件出现)

> ~#id1            (监听命名id1的组件出现)

> ~                (监听任意新出现的组件)

你可能感兴趣的:(2018-07-30)