成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

前端開發中使用”有限狀態機“解決復雜的交互問題

開發 前端
如果你使用的是純JS或者單獨僅有jQuery的情況下,遇到這種讓人焦頭爛額的情形會尤為明顯,前端MVC一定程度上隱藏了并處理了這些問題,但是也并不完全。這個時候你可能需要了解一下關于”有限狀態機“的概念,前端開發中這應該是一個很有用的東西。

前端開發是有邏輯的,這點毋庸置疑。程序員的思維邏輯賦予了代碼各種能力,但是前端開發中經常面對的是用戶的操作。在一個比較復雜的頁面中(貌似現在也很少有簡單頁面了),用戶的操作是不可預見的,假如有很多按鈕,每個按鈕都會做一件自己***的事,如果上帝保佑所有的這些操作,這些事件都彼此沒有限制,而且結果互不影響,那沒有問題。但在開發中好像沒有這種好運氣,所以經常需要協調和平衡這些函數之間的執行。

如果你使用的是純JS或者單獨僅有jQuery的情況下,遇到這種讓人焦頭爛額的情形會尤為明顯,前端MVC一定程度上隱藏了并處理了這些問題,但是也并不完全。這個時候你可能需要了解一下關于”有限狀態機“的概念,前端開發中這應該是一個很有用的東西。

描述一下”有限狀態機“:

有限狀態自動機,簡稱狀態機,是表示有限個狀態以及在這些狀態之間的轉移和動作等行為的數學模型。

狀態總數(state)是有限的。

任一時刻,只會處于一種狀態中。

在某種條件下,會從一種狀態轉變到另一種狀態中。

在維基百科中稱:有限狀態機FSM是設計和實現事件驅動程序內復雜行為組織原則的有力工具。

對于前端來說,尤其是Javascript編程時,這個模型的意義就在于可以將其套用在很多對象上。具體個例子,比如一個按鈕平時就是正常的按鈕,當你點擊后變成一個input。當然你可能會說這么簡單的功能,我直接用jQuery甚至不用都可以,操作DOM顯示和隱藏就好了。如果你還抱有這種天真的想法,我只能說你沒遇到過讓你痛不欲生的頁面。。。當頁面復雜到一定程度,單純操作DOM去處理前端只會加快你瘋掉的進程。

這里對于Button套用有限狀態機的模型,相當btn對象只有兩個狀態,顯示狀態和編輯狀態。看看代碼吧:

  1. var btn = {  
  2.   // 當前狀態  
  3.   currentState: 'btn',  
  4.     
  5.   // 綁定事件  
  6.   initialize: function() {  
  7.     var self = this;  
  8.     self.on("click", self.transition);  
  9.   },  
  10.     
  11.   // 狀態轉換  
  12.   transition: function(event){  
  13.     switch(this.currentState) {  
  14.       case "btn":  
  15.         this.currentState = 'input';  
  16.         doSomething();  
  17.         break;  
  18.       case "input":  
  19.         this.currentState = 'btn';  
  20.         doSomething();  
  21.         break;  
  22.       default:  
  23.         console.log('Invalid State!');  
  24.         break;  
  25.     }  
  26.   }   
  27. };  

上面就是有限狀態機的寫法,邏輯和層次上確實清晰了,對于狀態越多的對象,就越適合這種寫法。

通過有限狀態機的這種模式,我認為最重要的一點就是將用戶的操作行為,也就是組件的事件響應(比如點擊)與組件的行為表現分離開來.在確切的說,通過建立一個有限狀態機的模型,我們完全不關心用戶的點擊行為具體做了什么,這時組件可能會有幾種狀態對應不同的表現形式,而用戶觸發的事件僅僅是切換了模型的狀態.至于每個狀態的具體表現和行為,我們完全可以單獨定義,也就說這時一種行為和響應上的解耦.

Github上有兩個比較好的庫,都是實現FSM的,有興趣可以具體看看:

https://github.com/fschaefer/Stately.js

https://github.com/jakesgordon/javascript-state-machine

原文鏈接:http://my.oschina.net/blogshi/blog/266763

責任編輯:林師授 來源: oschina博客
相關推薦

2013-09-03 09:57:43

JavaScript有限狀態機

2021-04-29 09:31:05

前端開發技術

2021-09-07 06:40:26

狀態機識別地址

2022-03-06 19:57:50

狀態機easyfsm項目

2025-04-28 08:25:00

狀態機框架狀態機開發

2022-05-28 16:08:04

前端

2023-03-06 07:35:30

狀態機工具訂單狀態

2023-04-12 07:14:31

Spring應用業務

2025-06-04 01:55:00

2021-08-18 16:02:29

Windows 11操作系統微軟

2021-08-11 15:35:54

多設備交互應用框架

2021-06-05 05:11:52

代碼狀態機邏輯

2025-04-14 09:30:11

Spring狀態機訂單

2021-07-08 09:15:20

單片機編程狀態機編程語言

2010-06-18 12:38:38

UML狀態機視圖

2022-03-25 10:13:05

自動駕駛監督學習數據集

2020-03-27 10:50:29

DSL 狀態機工具

2010-07-12 15:09:20

UML狀態機視圖

2010-06-18 13:25:44

UML狀態機視圖

2014-10-24 13:48:05

2014WOT深圳手游
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 在线成人免费视频 | 色综合天天综合网国产成人网 | jizz18国产 | 麻豆国产一区二区三区四区 | 日韩av大片免费看 | 午夜丰满寂寞少妇精品 | 在线观看免费av网站 | 国产精品亚洲第一 | 亚洲精品专区 | 亚洲最新在线视频 | 久久免费电影 | 男人天堂国产 | 中文字幕综合在线 | 国产精品久久久久久一区二区三区 | 日韩欧美三区 | 午夜免费视频 | 激情欧美日韩一区二区 | 亚洲www | 日日射影院| 亚洲www.| 五月婷婷在线视频 | 日日草夜夜草 | 午夜国产一级 | 国精产品一区一区三区免费完 | 成人国产精品免费观看 | 欧美激情欧美激情在线五月 | 亚洲成人免费网址 | 新超碰97| 久久精品欧美一区二区三区不卡 | 爱爱视频日本 | 国产精品伦理一区二区三区 | 亚州午夜精品 | 日韩一区二区视频 | 国产黄色麻豆视频 | 亚洲精品电影在线 | 狠狠狠色丁香婷婷综合久久五月 | 午夜精品久久久久久久 | 久久高清 | 亚洲国产精品久久久久久 | 红色av社区| 国产一二三区在线 |