成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

RhykeJS——專為開啟“實(shí)驗(yàn)室功能”的手勢(shì)密碼庫(kù)

用戶83 / 1500人閱讀

摘要:預(yù)覽地址項(xiàng)目地址初衷在前端業(yè)務(wù)上生產(chǎn)的時(shí)候,可能仍然有部分功能需要被隱藏,只有達(dá)成特定的條件才能夠顯示,這些功能可以被稱作為實(shí)驗(yàn)室功能。參考了上述多種做法,提出了使用摩斯電碼節(jié)奏作為手勢(shì)密碼,開啟實(shí)驗(yàn)室功能的想法。

預(yù)覽地址:https://jrainlau.github.io/rh...
項(xiàng)目地址:https://github.com/jrainlau/r...

初衷

在前端業(yè)務(wù)上生產(chǎn)的時(shí)候,可能仍然有部分功能需要被隱藏,只有達(dá)成特定的條件才能夠顯示,這些功能可以被稱作為“實(shí)驗(yàn)室功能”。常規(guī)的做法就是類似Segmentfault,知乎之類的應(yīng)用,在層級(jí)較深的地方設(shè)置一個(gè)開關(guān)以開啟實(shí)驗(yàn)室功能,又或者像微信那樣通過在對(duì)話框輸入特定的字符串,來(lái)啟用隱藏的功能。RhykeJS參考了上述多種做法,提出了使用摩斯電碼節(jié)奏作為手勢(shì)密碼,開啟實(shí)驗(yàn)室功能的想法。

原理

RhykeJS名字來(lái)源于“rhythm”和“awake”的組合,也就是“通過節(jié)奏喚醒”。

RhykeJS內(nèi)部,監(jiān)聽了指定范圍內(nèi)的用戶點(diǎn)擊事件(mouse或者touch事件)。通過設(shè)置dashTime,可以指定一個(gè)時(shí)間區(qū)分“短信號(hào)”和“長(zhǎng)信號(hào)”并直接轉(zhuǎn)化成節(jié)奏.-。當(dāng)輸入節(jié)奏與設(shè)定節(jié)奏相吻合時(shí),則觸發(fā)事件。

可以在codepen進(jìn)行預(yù)覽:
https://codepen.io/jrainlau/p...

安裝及引入

支持通過yarn或npm進(jìn)行安裝。

yarn add rhyke

npm install rhyke --save

RhykeJS被打包成了UMD模塊,支持ES Modules,CommonJSWeb瀏覽器方式進(jìn)行引入。

ES6 modules

import Rhyke from "rhyke"

CommonJS

const Rhyke = require("rhyke")

Web broswer


使用

被引入進(jìn)來(lái)的Rhyke實(shí)例是一個(gè)構(gòu)造函數(shù),需要通過new操作符并傳入配置對(duì)象進(jìn)行初始化。

const rhyke = new Rhyke({
    rhythm: "...---...",
    matching (rhyArr) {
      // 獲取用戶的莫斯電碼節(jié)奏輸入
      // 例如 [".", ".", "-", "-", "-", "."]
    },
    matched () {
      // 當(dāng)輸入的節(jié)奏與設(shè)定的節(jié)奏吻合時(shí)觸發(fā)
    },
    unmatched () {
      // 當(dāng)輸入的節(jié)奏與設(shè)定的節(jié)奏不吻合時(shí)觸發(fā)
    },
    onTimeout () {
      // 當(dāng)手勢(shì)密碼輸入超時(shí)時(shí)觸發(fā)
    }
})
配置

Rhyke接受一個(gè)配置對(duì)象作為參數(shù)

defaultOptions = {
    // 受監(jiān)聽范圍,默認(rèn)為“body”
    el: "body",
    // 定義莫斯電碼節(jié)奏,短為“.”,長(zhǎng)為“-”,默認(rèn)為“...”
    rhythm: "...",
    // 定義電碼為“長(zhǎng)”的時(shí)間,默認(rèn)為大于等于400毫秒
    dashTime: 400,
    // 定義輸入超時(shí)時(shí)間,若超時(shí)則重新獲取用戶節(jié)奏輸入,默認(rèn)為2000毫秒
    timeout: 2000,
    // 是否開啟移動(dòng)端touch事件。默認(rèn)為false,使用mouse事件作為監(jiān)聽,在移動(dòng)端需要設(shè)置為true,
    // 使用touch事件作為監(jiān)聽
    tabEvent: false,
    // 獲取用戶的莫斯電碼節(jié)奏輸入
    matching: (arr) => {},
    // 當(dāng)輸入的節(jié)奏與設(shè)定的節(jié)奏吻合時(shí)觸發(fā)
    matched: () => {},
    // 當(dāng)輸入的節(jié)奏與設(shè)定的節(jié)奏不吻合時(shí)觸發(fā)
    unmatched: () => {},
    // 當(dāng)手勢(shì)密碼輸入超時(shí)時(shí)觸發(fā)
    onTimeout: () => {}
}
API

有時(shí)候可能只需要開啟一次實(shí)驗(yàn)室功能,在開啟完畢以后把受監(jiān)聽范圍的Rhyke事件注銷,那么可以在matched階段的最后通過下列方法進(jìn)行事件解綁:

matched () {
  // something was awoke
  rhyke.removeListener()
}
證書

MIT

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/89843.html

相關(guān)文章

  • 超小Web手勢(shì)庫(kù)AlloyFinger原理

    摘要:目前作為騰訊手機(jī)手勢(shì)解決方案,在各大項(xiàng)目中都發(fā)揮著作用。因此也入選了騰訊平臺(tái)的精品組件除了國(guó)內(nèi)外的項(xiàng)目團(tuán)隊(duì)都在使用,國(guó)內(nèi)外的各大網(wǎng)站也進(jìn)行了轉(zhuǎn)載報(bào)道,作為超級(jí)小的手勢(shì)庫(kù),騰訊的項(xiàng)目為什么不選擇而選擇下面從各個(gè)角度架構(gòu)原理上進(jìn)行一下分析。 目前AlloyFinger作為騰訊手機(jī)QQ web手勢(shì)解決方案,在各大項(xiàng)目中都發(fā)揮著作用。感興趣的同學(xué)可以去Github看看: https://git...

    Karuru 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<