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

資訊專欄INFORMATION COLUMN

TySheMo 前端數(shù)據(jù)管理模型

SimonMa / 2693人閱讀

摘要:項(xiàng)目地址使用文檔使用案例是一個(gè)前端數(shù)據(jù)狀態(tài)管理工具。它面向復(fù)雜的前端數(shù)據(jù)管理,用于在前端結(jié)構(gòu)化數(shù)據(jù)的不斷變化中,清晰地控制數(shù)據(jù)變動(dòng),使數(shù)據(jù)變動(dòng)不引起錯(cuò)誤,并且方便表單數(shù)據(jù)的恢復(fù)校驗(yàn)格式化提交。

項(xiàng)目地址:https://github.com/tangshuang...

使用文檔:https://www.tangshuang.net/71...

使用案例:https://github.com/tangshuang...

TySheMo是一個(gè)前端數(shù)據(jù)(狀態(tài))管理工具。它面向復(fù)雜的前端數(shù)據(jù)管理,用于在前端結(jié)構(gòu)化數(shù)據(jù)的不斷變化中,清晰地控制數(shù)據(jù)變動(dòng),使數(shù)據(jù)變動(dòng)不引起錯(cuò)誤,并且方便表單數(shù)據(jù)的恢復(fù)、校驗(yàn)、格式化提交。

在需要對(duì)數(shù)據(jù)類型進(jìn)行校驗(yàn),數(shù)據(jù)變動(dòng)引發(fā)界面變動(dòng),數(shù)據(jù)校驗(yàn),格式化后輸出數(shù)據(jù),保證數(shù)據(jù)運(yùn)算時(shí)得到想要的結(jié)果等一系列復(fù)雜的數(shù)據(jù)變化需求,TySheMo可以在項(xiàng)目中發(fā)揮不錯(cuò)的的作用。雖然它不追求性能,但是在確保數(shù)據(jù)類型和格式安全上,它具有非常優(yōu)秀的思想,讓對(duì)數(shù)據(jù)有強(qiáng)烈依賴的業(yè)務(wù)可以在復(fù)雜的邏輯中保證不出錯(cuò)。

類型檢查系統(tǒng)

雖然我們已經(jīng)有typescript這樣的類型檢查系統(tǒng),但是,typescript是在編譯時(shí)進(jìn)行類型檢查的,在運(yùn)行時(shí),我們需要對(duì)一些動(dòng)態(tài)的數(shù)據(jù)(特別是從后臺(tái)api返回的數(shù)據(jù))進(jìn)行類型和格式檢查。在支持graphql的系統(tǒng)中似乎不必這么擔(dān)心,但目前大多數(shù)的restful應(yīng)用,還是需要有一個(gè)工具去做這樣的一件事。

TySheMo將數(shù)據(jù)類型的檢查抽象出三個(gè)層面的對(duì)象:原型、類型、規(guī)則。它們分別在原子、結(jié)構(gòu)、邏輯層面對(duì)數(shù)據(jù)進(jìn)行校驗(yàn),而且是在運(yùn)行時(shí)。如果校驗(yàn)失敗,你還可以通過(guò)拋出的錯(cuò)誤得到更為詳細(xì)的信息。

TySheMo內(nèi)部提供了多個(gè)數(shù)據(jù)原型(類似基礎(chǔ)數(shù)據(jù)類型)擴(kuò)展,并且直接使用js標(biāo)準(zhǔn)庫(kù)中的內(nèi)置對(duì)象作為原型,免去需要用字符串來(lái)定義類型的麻煩。內(nèi)置了Dict, List, Enum, Tuple, Range這幾種類型。通過(guò)對(duì)后臺(tái)api數(shù)據(jù)的檢查,就可以即時(shí)避免由于api返回?cái)?shù)據(jù)類型或結(jié)構(gòu)引起的錯(cuò)誤。同時(shí),它還提供了更為豐富的類型檢查規(guī)范,你可以閱讀它的文檔了解更多用法。

數(shù)據(jù)模式

TySheMo提供了一種定義結(jié)構(gòu)化數(shù)據(jù)的方式,用于對(duì)一個(gè)結(jié)構(gòu)化數(shù)據(jù)進(jìn)行規(guī)范化定義。數(shù)據(jù)模式是一個(gè)抽象的數(shù)據(jù)結(jié)構(gòu)范型,它不是具體的數(shù)據(jù),但規(guī)定了數(shù)據(jù)本身的結(jié)構(gòu)規(guī)范。并且,作為工具庫(kù),TySheMo提供了Schema類,schema實(shí)例擁有根據(jù)定義規(guī)范數(shù)據(jù)的能力。

更為重要的是Schema是一種數(shù)據(jù)結(jié)構(gòu)和行為邏輯約束的范例。行業(yè)里有json schema這樣的先驅(qū),我們?cè)谶@些先行者的基礎(chǔ)上,提煉出對(duì)業(yè)務(wù)有幫助的部分,形成一套類似后臺(tái)數(shù)據(jù)庫(kù)結(jié)構(gòu)描述一樣的定義語(yǔ)言,用以在前端去描述一個(gè)結(jié)構(gòu)化,但隨時(shí)變化的數(shù)據(jù)對(duì)象。

它基于數(shù)據(jù)類型檢查系統(tǒng),你需要在type屬性傳入對(duì)應(yīng)的類型。對(duì)于Schema實(shí)例而言,它是無(wú)狀態(tài)的,它所提供的接口是純粹的工廠,不會(huì)產(chǎn)生任何內(nèi)部資源。這樣的設(shè)計(jì),使得Schema有可能成為規(guī)范,在開發(fā)中/測(cè)試中,確保業(yè)務(wù)中給的數(shù)據(jù)是按照規(guī)范給定的,否則,就會(huì)拋出錯(cuò)誤。

數(shù)據(jù)模型

TySheMo提供了基于Schema的數(shù)據(jù)模型Model,是一個(gè)管理狀態(tài)數(shù)據(jù)的容器。數(shù)據(jù)被放在數(shù)據(jù)模型中管理時(shí),由于Schema的約束,數(shù)據(jù)不得不按照規(guī)范運(yùn)行。它提供了當(dāng)代數(shù)據(jù)響應(yīng)的特性,你可以觀察數(shù)據(jù)變化,從而來(lái)決定如何變動(dòng)界面。

作為工具庫(kù),TySheMo從業(yè)務(wù)出發(fā)對(duì)數(shù)據(jù)模型的寫作方式進(jìn)行了約束。一個(gè)數(shù)據(jù)模型,是一個(gè)class,并且需要定義它的schema。要將數(shù)據(jù)放到模型中進(jìn)行管理,你必須實(shí)例化模型,并且使用模型接口進(jìn)行數(shù)據(jù)修改和格式化。但到最后,你會(huì)發(fā)現(xiàn),模型的使用異常簡(jiǎn)單,真正復(fù)雜的部分,往往在于,如何通過(guò)Schema制定你的數(shù)據(jù)規(guī)范。

這只是對(duì)Model的數(shù)據(jù)響應(yīng)最簡(jiǎn)單的一個(gè)演示,你還可以通過(guò)Model提供的能力,完成更多的事情。你可以把它和react, vue, angular結(jié)合使用,你可以在任何應(yīng)用中使用它。特別是在表單數(shù)據(jù)管理上,TySheMo可以做到非常出色。關(guān)于Model的細(xì)節(jié)和更多特性,你可以閱讀使用文檔了解。

結(jié)語(yǔ)

TySheMo不解決所有問(wèn)題,而是專注將一個(gè)應(yīng)用中的某個(gè)局部的數(shù)據(jù)管理做到極致。你從來(lái)沒(méi)有體驗(yàn)過(guò),同一個(gè)表單的業(yè)務(wù)邏輯,你不需要修改業(yè)務(wù)邏輯代碼部分,而只需要修改UI交互的邏輯,就可以完全適應(yīng)react, vue, angular。你也許不需要它,但也許也需要它,這取決于你如何在你但應(yīng)用中管理你的數(shù)據(jù)。如果你對(duì)這個(gè)項(xiàng)目感興趣,可以通過(guò)github參與項(xiàng)目。

(完)

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

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

相關(guān)文章

  • [ 前端框架 ] 前端 MV*框架的意義

    摘要:從協(xié)作關(guān)系上講,很多前端開發(fā)團(tuán)隊(duì)每個(gè)成員的職責(zé)不是很清晰,有了前端的框架,這個(gè)狀況會(huì)大有改觀??蚣艿睦砟钍前亚岸税凑章氊?zé)分層,每一層都相對(duì)比較獨(dú)立,有自己的價(jià)值,也有各自發(fā)揮的余地。 簡(jiǎn)介: MV框架又是為什么興起的呢?它的出現(xiàn),伴隨著一些 Web 產(chǎn)品逐漸往應(yīng)用方向發(fā)展,遇到了在 C/S 領(lǐng)域相同的問(wèn)題:由于前端功能的增強(qiáng)、代碼的膨脹,導(dǎo)致不得不做前端的架構(gòu)這個(gè)事情了。經(jīng)常有人質(zhì)疑...

    fxp 評(píng)論0 收藏0
  • 通過(guò)項(xiàng)目逐步深入了解Spring MVC(一)

    摘要:是一個(gè)基于的框架??刂破鲗⒁晥D響應(yīng)給用戶通過(guò)視圖展示給用戶要的數(shù)據(jù)或處理結(jié)果。有了減少了其它組件之間的耦合度。 相關(guān)閱讀: 本文檔和項(xiàng)目代碼地址:https://github.com/zhisheng17/springmvc 轉(zhuǎn)載請(qǐng)注明出處和保留以上文字! 了解 Spring: Spring 官網(wǎng):http://spring.io/ 一個(gè)好的東西一般都會(huì)有一個(gè)好的文檔解釋說(shuō)明,如果你...

    whataa 評(píng)論0 收藏0
  • 前端培訓(xùn)-中級(jí)階段(3) - DOM 文檔對(duì)象模型(2019-06-27期)

    摘要:文檔對(duì)象模型是和文檔的編程接口文檔對(duì)象模型將頁(yè)面與到腳本或編程語(yǔ)言連接起來(lái)。通常是指,但將或文檔建模為對(duì)象并不是語(yǔ)言的一部分。文檔對(duì)象模型文檔對(duì)象模型圈起來(lái)的是比較常用的接口。目前接口繼承于接口。 前端最基礎(chǔ)的就是 HTML+CSS+Javascript。掌握了這三門技術(shù)就算入門,但也僅僅是入門,現(xiàn)在前端開發(fā)的定義已經(jīng)遠(yuǎn)遠(yuǎn)不止這些。前端小課堂(HTML/CSS/JS),本著提升技術(shù)水平...

    張紅新 評(píng)論0 收藏0

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

0條評(píng)論

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