DuelJS 介紹

js-coder發表於2018-06-15

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(視窗)廣播訊息的功能,舉例如下:

 1 <script type="text/javascript">
 2     var channel = duel.channel(`test`);
 3     document.title = `Master ` + duel.getWindowID();
 4 
 5     channel.on(`demo_trigger`, function (message) {
 6         console.info((new Date).getTime(), message)
 7     });
 8 
 9     setInterval(function () {
10         document.title = (window.isMaster() ? `Master ` : `Slave `) + duel.getWindowID();
11     }, 100);
12 </script>
13 <button onclick="channel.broadcast(`demo_trigger`, `hello world`)">
14     channel.broadcast(`demo_trigger`, `hello world`)
15 </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