有沒有人知道任何狀態機的JavaScript實現?我的目標是設置一個狀態機實現,將事件綁定到狀態轉換。所以,如果用戶點擊一個按鈕,那麼狀態將被改變,並且這個狀態可以在例如要改變的對象中定義某些值。JavaScript事件狀態機
我希望這是一個狀態機,因爲會有一個規則的json文件,它允許指定某些事件被調用時各種對象的值變化。因爲這將在文件中構造,我認爲將這些信息解析成狀態機對象很容易。
有沒有人知道任何狀態機的JavaScript實現?我的目標是設置一個狀態機實現,將事件綁定到狀態轉換。所以,如果用戶點擊一個按鈕,那麼狀態將被改變,並且這個狀態可以在例如要改變的對象中定義某些值。JavaScript事件狀態機
我希望這是一個狀態機,因爲會有一個規則的json文件,它允許指定某些事件被調用時各種對象的值變化。因爲這將在文件中構造,我認爲將這些信息解析成狀態機對象很容易。
存在用於在JS的有限狀態機的兩個主要庫:
1/https://github.com/ifandelse/machina.js 非常有據可查的,實施例中,支持兩種JavaScript消息總線提供商開箱:postal.js和amplify.js。
2/https://github.com/jakesgordon/javascript-state-machine 更簡單,更易於使用,完美的 「基本」 的用法。
嘗試看看https://github.com/steelbreeze/state.js - 它支持大部分狀態機語義,如UML 2規範中所述,同時仍具有高性能。 目前還沒有太多的文檔,但這些例子和測試應該提供一個很好的參考。
我一直在使用這個庫,我對它非常滿意。我們將它集成到我們的thingml方法(https://github.com/SINTEF-9012/ThingML) – bmorin
我選擇這個與js-fsm微庫。
特點基於
我的狀態機的一點促銷:stateflow 我剛剛創建了自己的狀態機,因爲我找不到對我來說足夠簡單的狀態機。
流是使用js對象定義的,其中屬性是狀態名,值是具有以下屬性的另一個js對象。
簡單的例子
var stateflow = require('stateflow');
var flow = new stateflow.StateFlow({
a: {
type:'begin',
action: function(complete) {
// do something
complete('done');
},
on: {
done:'b',
again:'a'
}
},
b: {
type:'end',
action: function(complete) {
complete('finished');
}
}
});
flow.start(function(event) {
console.log('flow result:', event);
});
檢查出來的混帳https://github.com/philipdev/stateflow或通過NPM
我最近建於JS的狀態機實現,這當然是最簡單的配置,由於其過渡DSL:
transitions: [
'next : intro > form > finish',
'back : intro < form < error',
'error : form > error',
'restart : intro < finish'
]
這兩個配置和事件處理程序分配真正靈活,你可以添加和在運行時刪除狀態,暫停和恢復過渡,勾成噸的事件,與助手的jQuery和無框架,如VUE:
Docs和DEM一大堆這裏的操作系統:
https://github.com/jakesgordon/javascript-state-machine可能是你要尋找的。 – Gael