亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

[譯]Flux入門

Ashin / 2135人閱讀

摘要:正式入坑我將按順序解釋概念,并且一個一個地構(gòu)建它們。視圖的和調(diào)度員本質(zhì)上是一個加入了額外規(guī)則的事件系統(tǒng)。它來廣播事件并注冊回調(diào)。這描述了我們的,我們稱之為。然后,會響應(yīng)已分派的操作這是處理調(diào)度回調(diào)的傳統(tǒng)方式。

原文地址:https://blog.andrewray.me/flu... ,作者:Andrew Ray

TL;DR 當(dāng)我在努力學(xué)習(xí)Flux時,我希望有人告訴我:它并不簡單,也沒有好的文檔可以查,并且有許多變化的部分。

我需要使用Flux嗎?

如果你的應(yīng)用程序需要處理動態(tài)數(shù)據(jù)(dynamic data)的話,那么答案就是yes,你可能需要使用Flux。

如果你的應(yīng)用程序僅僅是無需共享狀態(tài)靜態(tài)視圖(static view),并且你從不保存也不更新數(shù)據(jù),那么你不需要使用Flux,F(xiàn)lux不會給你帶來任何好處。

為什么是Flux?

皮一下,因為Flux是個適度復(fù)雜的主意,為啥要增加復(fù)雜度呢?

90%的iOS應(yīng)用程序是表格視圖中的數(shù)據(jù)。iOS工具包具有良好定義的視圖和數(shù)據(jù)模型可以讓應(yīng)用開發(fā)變得簡單。

但是在前端(Font End:HTML,JS,CSS),我們甚至都沒有。相反,我們遇到一個很大的問題:沒有人知道應(yīng)該如何去構(gòu)建一個前端應(yīng)用。我從事這個行業(yè)多年,從來沒人教給我“最佳實踐”,相反,他們教了我好多“庫(libraries)”,諸如jQuery,Angular,Backbone等等。但是真正的問題、數(shù)據(jù)流,仍然避開了我們。

什么是Flux?

Flux是一個用來描述具有非常特定事件和監(jiān)聽的“單向”數(shù)據(jù)流的詞。沒有官方的Flux庫,但是你需要Flux Dispatcher和任何的JavaScript event library。

官方文檔寫的就像某人的意識流一樣,從這里開始學(xué)習(xí)是不太好的。但是一旦你掌握了Flux,它可以幫助你填補空白。

不要試圖把Flux同MVC架構(gòu)進(jìn)行比較,它們的相似之處只會令人困惑。

正式入坑!我將按順序解釋概念,并且一個一個地構(gòu)建它們。

1.視圖的“Dispatch”和“Actions”

Dispatcher(調(diào)度員)本質(zhì)上是一個加入了額外規(guī)則的事件系統(tǒng)。它來廣播事件并注冊回調(diào)。全局的dispatcher只有唯一的一個,你應(yīng)該使用Facebook Dispatcher Library。實例化非常容易:

var AppDispatcher = new Dispatcher();  

假設(shè)你的應(yīng)用程序有一個“新建”按鈕來向列表添加項目。

  

點擊會發(fā)生什么?你的視圖會調(diào)度一個非常具體的“操作”,其中包含操作名稱和新項目數(shù)據(jù):

createNewItem: function( evt ) {

    AppDispatcher.dispatch({
        actionName: "new-item",
        newItem: { name: "Marco" } // example data
    });

}

action”是Facebook創(chuàng)造的另一個詞。它是一個JavaScript對象,用以描述我們想要做什么事情,以及做這件事我們需要的數(shù)據(jù)。正如你所見到的,我們要做的事情就是添加一個new-item,我們需要的數(shù)據(jù)就是項目name。

2."Store"響應(yīng)調(diào)度的操作

像Flux一樣,“Store”這個詞也是Facebook創(chuàng)造的.對于我們的應(yīng)用程序,我們需要列表的特定邏輯和數(shù)據(jù)集合。這描述了我們的Store,我們稱之為ListStore。

Store是一個單體對象,意味著你可能不能通過“new”關(guān)鍵字來聲明它,應(yīng)用程序中每個Store里只有一個實例。

// Single object representing list data and logic
var ListStore = {

    // Actual collection of model data
    items: []

};

然后,Store會響應(yīng)已分派的操作:

var ListStore = …

// Tell the dispatcher we want to listen for *any*
// dispatched events
AppDispatcher.register( function( payload ) {

    switch( payload.actionName ) {

        // Do we know how to handle this action?
        case "new-item":

            // We get to mutate data!
            ListStore.items.push( payload.newItem );
            break;

    }

}); 

這是Flux處理調(diào)度回調(diào)的傳統(tǒng)方式。每個payload包含一個action的名稱(actionName)和數(shù)據(jù)(newItem),switch語句確定Store是否應(yīng)該響應(yīng)action,并且知道根據(jù)action的類型處理數(shù)據(jù)變化。

           
               
                                           
                       
                 

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

轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/108805.html

相關(guān)文章

  • 】展示型組件和容器型組件(作者:Dan Abramov,Redux的開發(fā)者)

    摘要:我的教程可能也會幫你一把其他的二分法展示型組件和容器型組件這種分類并非十分嚴(yán)格,這是按照它們的目的進(jìn)行分類。在我看來,展示型組件往往是無狀態(tài)的純函數(shù)組件,容器型組件往往是有狀態(tài)的純類組件。不要把展示型組件和容器型組件的劃分當(dāng)成教條。 本文譯自Presentational and Container Components,文章的作者是Dan Abramov,他同時也是Redux和Crea...

    lily_wang 評論0 收藏0
  • Flux7 Docker 系列教程(八):Docker Remote API

    摘要:本系列教程翻譯自,系列共有九篇,本文譯自第八篇。是將會用來取代命令的工具。準(zhǔn)備示例系統(tǒng)是,配置文件在。修改完畢后,重啟。列出所有容器創(chuàng)建新容器檢查容器用于獲取容器底層信息。進(jìn)程列表獲取容器內(nèi)運行進(jìn)程的列表。下篇文章介紹的是用于鏡像操作的。 本系列教程翻譯自 Flux7 Docker Tutorial Series,系列共有九篇,本文譯自第八篇 Part 8: Docker Rem...

    geekidentity 評論0 收藏0
  • Flux7 Docker 系列教程(八):Docker Remote API

    摘要:本系列教程翻譯自,系列共有九篇,本文譯自第八篇。是將會用來取代命令的工具。準(zhǔn)備示例系統(tǒng)是,配置文件在。修改完畢后,重啟。列出所有容器創(chuàng)建新容器檢查容器用于獲取容器底層信息。進(jìn)程列表獲取容器內(nèi)運行進(jìn)程的列表。下篇文章介紹的是用于鏡像操作的。 本系列教程翻譯自 Flux7 Docker Tutorial Series,系列共有九篇,本文譯自第八篇 Part 8: Docker Rem...

    philadelphia 評論0 收藏0
  • Redux、Flux、Vuex

    摘要:結(jié)構(gòu)和數(shù)據(jù)流一個單向數(shù)據(jù)流是模式的核心,上面示圖應(yīng)該是程序員心中主要的模型圖。 前言 這篇文章不會用具體的代碼去闡述redux、flux或者vuex,因為我覺得它們所帶來的更是一種編程思想。 前端進(jìn)化和框架演變 在很久以前,前端沒有MVVM的概念,MVVM是對MVC細(xì)化的說法(個人覺得兩者區(qū)別不大),MVC的模式一直在后臺使用,效果和優(yōu)點都很明顯。 后來前端工程師仿照MVC模式開發(fā)了很...

    joy968 評論0 收藏0
  • Flux再進(jìn)化:Introducing Relay and GraphQL

    摘要:它的設(shè)計使得即使是大型團(tuán)隊也能以高度隔離的方式應(yīng)對功能變更。獲取數(shù)據(jù)數(shù)據(jù)變更性能,都是讓人頭痛的問題。通過維護(hù)組件與數(shù)據(jù)間的依賴在依賴的數(shù)據(jù)就緒前組件不會被渲染為開發(fā)者提供更加可預(yù)測的開發(fā)環(huán)境。這杜絕了隱式的數(shù)據(jù)依賴導(dǎo)致的潛在。 關(guān)于Relay與GraphQL的介紹 原文:Introducing Relay and GraphQL 視頻地址(強烈建議觀看):https://www.y...

    cncoder 評論0 收藏0

發(fā)表評論

0條評論

Ashin

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<