DuelJS 是什么?

DuelJS是一个快速和小型的JavaScript库,可以帮助实现浏览器tab页主从关系的切换。使用它可以优化你浏览器和服务器之间的通信,以及你浏览器内部tab页之间的通信

对于我而言,我关注的就是它可以帮助实现同域名下不同窗口(tab)之间通信,可以广播消息。

简言

DuelJS中的基本元素是channel。Channel为同一个站点的不同浏览器tab之间提供了一个特有的共享空间。

var channel = duel.channel('example'); // build your channel

每一个窗口只有连个可能的状态:核心方和从属方。核心方窗口是指当前活动的窗口(也就是获得焦点的窗口)。

检测当前窗口是否是核心方窗口的方法是:

window.isMaster()

你可以使用它来判断,并获取聊天信息,例如:

if (window.isMaster()) {
updateChatWindow(); // user function
}

越多越好

你想要更多的功能吗?是的,我们是有的。广播功能是系统向所有channel(窗口)广播消息的功能,举例如下:

 <script type="text/javascript">
var channel = duel.channel('test');
document.title = 'Master ' + duel.getWindowID(); channel.on('demo_trigger', function (message) {
console.info((new Date).getTime(), message)
}); setInterval(function () {
document.title = (window.isMaster() ? 'Master ' : 'Slave ') + duel.getWindowID();
}, 100);
</script>
<button onclick="channel.broadcast('demo_trigger', 'hello world')">
channel.broadcast('demo_trigger', 'hello world')
</button>

功能

  • 独立于其他的库(例如jQuery/Underscore等等)
  • 完全兼容
  • 容易使用
  • 稳定而且经受过检验

支持Bower

通过Bower安装

bower install duel --save

支持NPM

通过NPM安装

npm install dueljs --save

ES6导入

如果你借助babel/webpack来使用ES6,你只需要像下面这样导入dulejs:

import duel from 'dueljs'

Online demo

在线示例

在线示例地址

文档

文档地址dueljs.readthedocs.org

TabNinja

现在你可以指定任何一个tab作为超级核心方tab。测试版本的插件已经可以安装,github地址是github.com/studentIvan/tabninja

bower install tabninja --save

参考资料

http://dueljs.studentivan.ru

http://dueljs.readthedocs.io/en/latest/getting_started.html

https://github.com/studentIvan/dueljs

DuelJS 介绍的更多相关文章

  1. CSS3 background-image背景图片相关介绍

    这里将会介绍如何通过background-image设置背景图片,以及背景图片的平铺.拉伸.偏移.设置大小等操作. 1. 背景图片样式分类 CSS中设置元素背景图片及其背景图片样式的属性主要以下几个: ...

  2. MySQL高级知识- MySQL的架构介绍

    [TOC] 1.MySQL 简介 概述 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle公司. MySQL是一种关联数据库管理系统,将数据保存在不同的表中,而 ...

  3. Windows Server 2012 NIC Teaming介绍及注意事项

    Windows Server 2012 NIC Teaming介绍及注意事项 转载自:http://www.it165.net/os/html/201303/4799.html Windows Ser ...

  4. Linux下服务器端开发流程及相关工具介绍(C++)

    去年刚毕业来公司后,做为新人,发现很多东西都没有文档,各种工具和地址都是口口相传的,而且很多时候都是不知道有哪些工具可以使用,所以当时就想把自己接触到的这些东西记录下来,为后来者提供参考,相当于一个路 ...

  5. JavaScript var关键字、变量的状态、异常处理、命名规范等介绍

    本篇主要介绍var关键字.变量的undefined和null状态.异常处理.命名规范. 目录 1. var 关键字:介绍var关键字的使用. 2. 变量的状态:介绍变量的未定义.已定义未赋值.已定义已 ...

  6. HTML DOM 介绍

    本篇主要介绍DOM内容.DOM 节点.节点属性以及获取HTML元素的方法. 目录 1. 介绍 DOM:介绍DOM,以及对DOM分类和功能的说明. 2. DOM 节点:介绍DOM节点分类和节点层次. 3 ...

  7. HTML 事件(一) 事件的介绍

    本篇主要介绍HTML中的事件知识:事件相关术语.DOM事件规范.事件对象. 其他事件文章 1. HTML 事件(一) 事件的介绍 2. HTML 事件(二) 事件的注册与注销 3. HTML 事件(三 ...

  8. HTML5 介绍

    本篇主要介绍HTML5规范的内容和页面上的架构变动. 目录 1. HTML5介绍 1.1 介绍 1.2 内容 1.3 浏览器支持情况 2. 创建HTML5页面 2.1 <!DOCTYPE> ...

  9. ExtJS 4.2 介绍

    本篇介绍ExtJS相关知识,是以ExtJS4.2.1版本为基础进行说明,包括:ExtJS的特点.MVC模式.4.2.1GPL版本资源的下载和说明以及4种主题的演示. 目录 1. 介绍 1.1 说明 1 ...

随机推荐

  1. toFixed()一不小心踩了一个坑

    toFixed,多么简单的一个函数,昨天突发奇想做两道算法题练练手.结果,踩到了一个从未遇到的坑! \n 简单来讲是要对输入的很多组数据,自己写一个函数做个处理,把每次函数处理的结果要相加求和.最后输 ...

  2. github 用git bash上传项目 最后提示 Everything up-to-date 但没传上去

    今天为了把本地的项目远程到githup远程仓库,把好久不用的githup命令重新用了起来,不用怀疑,很正常的出错了. 为了长点记性,总结错误与解决办法如下: 1.我犯得第一个简单错误,是忘了git c ...

  3. 那些年我们一起清除过的浮动float与clearfix

    浮动(float),一个我们即爱又恨的属性.爱,因为通过浮动,我们能很方便地布局: 恨,浮动之后遗留下来太多的问题需要解决,特别是IE6-7(以下无特殊说明均指 windows 平台的 IE浏览器). ...

  4. MySQL如何优化

    对于全栈而言,数据库技能不可或缺,关系型数据库或者nosql,内存型数据库或者偏磁盘存储的数据库,对象存储的数据库或者图数据库--林林总总,但是第一必备技能还应该是MySQL.从LAMP的兴起,到Ma ...

  5. BZOJ_3932_[CQOI2015]任务查询系统_主席树

    BZOJ_3932_[CQOI2015]任务查询系统_主席树 题意: 最近实验室正在为其管理的超级计算机编制一套任务管理系统,而你被安排完成其中的查询部分.超级计算机中的 任务用三元组(Si,Ei,P ...

  6. BZOJ4554: [Tjoi2016&Heoi2016]游戏 luoguP2825 loj2057

    题面描述:尽可能多的放置符合要求的炸弹. 分析: 在i,j处放置炸弹,则在第i行,上一个硬石头之后,下一个硬石头之前,第j列,上一个硬石头之后,下一个硬石头之前,不能再次放置炸弹. 首先,这个题,一看 ...

  7. Lucene 源码分析之倒排索引(三)

    上文找到了 collect(-) 方法,其形参就是匹配的文档 Id,根据代码上下文,其中 doc 是由 iterator.nextDoc() 获得的,那 DefaultBulkScorer.itera ...

  8. MNIST手写识别

    Demo侠可能是我等小白进阶的必经之路了,如今在AI领域,我也是个研究Demo的小白.用了两三天装好环境,跑通Demo,自学Python语法,进而研究这个Demo.当然过程中查了很多资料,充分发挥了小 ...

  9. 教你如何使用Java手写一个基于数组实现的队列

    一.概述 队列,又称为伫列(queue),是先进先出(FIFO, First-In-First-Out)的线性表.在具体应用中通常用链表或者数组来实现.队列只允许在后端(称为rear)进行插入操作,在 ...

  10. 用Python学分析 - t分布

    1. t分布形状类似于标准正态分布2.  t分布是对称分布,较正态分布离散度强,密度曲线较标准正态分布密度曲线更扁平3.  对于大型样本,t-值与z-值之间的差别很小 作用- t分布纠正了未知的真实标 ...