国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

前端框架管理

php中世界最好的語(yǔ)言
發(fā)布: 2018-03-19 17:13:27
原創(chuàng)
1837人瀏覽過(guò)

這次給大家?guī)?lái)前端框架管理,前端框架管理的注意事項(xiàng)有哪些,下面就是實(shí)戰(zhàn)案例,一起來(lái)看一下。

當(dāng)今前端最火的三個(gè)框架要數(shù)Angular2+、Vue、React。它們?nèi)慷加玫搅私M件化、模塊化的思想,讓前端開(kāi)發(fā)變得更加規(guī)范。

但缺點(diǎn)也是明顯的。除了文檔不齊全、缺乏案例、學(xué)習(xí)成本高以外,組件之間的狀態(tài)管理也是一個(gè)大問(wèn)題。組件化是好事,但是如果沒(méi)有處理好組件之間的數(shù)據(jù)流動(dòng),就會(huì)造成項(xiàng)目混亂、維護(hù)困難的負(fù)面影響。

先來(lái)說(shuō)說(shuō)為什么要進(jìn)行狀態(tài)管理:

比如說(shuō)兩張列表都引用了同一個(gè)數(shù)據(jù)源,用戶在其中一張列表上做修改,另外一張列表上的數(shù)據(jù)也要跟著變。用angular1的時(shí)候要解決很簡(jiǎn)單,使用$rootScope即可。但是到了三大框架,沒(méi)有$rootScope這個(gè)概念,想要實(shí)現(xiàn)數(shù)據(jù)的同步更新,怎么辦?

有人可能會(huì)說(shuō),這簡(jiǎn)單,用戶在第一張表做修改的時(shí)候我們發(fā)一個(gè)消息給第二張表,讓它把相應(yīng)的數(shù)據(jù)改了不就完事了。但是如果有10張表,20張表呢?都去一張張通知嗎?要是其他組件也有用到這個(gè)數(shù)據(jù)源,也都去通知更新嗎?

所以這個(gè)方案在項(xiàng)目簡(jiǎn)單的時(shí)候或許可行,但是項(xiàng)目一復(fù)雜,問(wèn)題立馬就會(huì)暴露出來(lái)。為了以防未來(lái)項(xiàng)目推翻重來(lái),我們還是應(yīng)該一開(kāi)始就考慮好。

狀態(tài)管理這個(gè)概念,就是為了應(yīng)對(duì)復(fù)雜的數(shù)據(jù)流動(dòng)。

三大框架實(shí)現(xiàn)狀態(tài)管理的方法分別為:

Vue:Vuex

React:Redux(dva.js)

Angular2+:Redux(ngrx)

雖然三大框架實(shí)現(xiàn)狀態(tài)管理的方案不同,但是底層的思想都是一致的。這里大致的來(lái)講一下:

項(xiàng)目為了實(shí)現(xiàn)狀態(tài)管理,新增了幾個(gè)模塊:reducers、effects、services、models。如果是angular2+的話還有actions。

先來(lái)說(shuō)說(shuō)這幾個(gè)模塊的作用:

models:數(shù)據(jù)模型。存放了數(shù)據(jù)本身和修改數(shù)據(jù)的方法。在angular2+中models存放的是實(shí)體(entity)。學(xué)過(guò)后端的應(yīng)該會(huì)很熟悉。是對(duì)數(shù)據(jù)的一種聲明。

reducers:負(fù)責(zé)進(jìn)行同步的操作。比如把請(qǐng)求來(lái)的表單數(shù)據(jù)存到數(shù)據(jù)模型中,用戶添加/刪除了某條數(shù)據(jù),對(duì)原有數(shù)據(jù)進(jìn)行修改。

services:對(duì)請(qǐng)求數(shù)據(jù)這一動(dòng)作的封裝,一般包含獲取數(shù)據(jù)的方法。如getList(),getUsers()。

effects:負(fù)責(zé)進(jìn)行異步操作。比如接到用戶的請(qǐng)求動(dòng)作后,調(diào)用service,向服務(wù)器請(qǐng)求數(shù)據(jù),成功了就調(diào)用reducers保存數(shù)據(jù),如果失敗了就執(zhí)行另一個(gè)動(dòng)作。

angular2+中還抽象出了一層actions,是對(duì)各種動(dòng)作的封裝。比如加載數(shù)據(jù),數(shù)據(jù)加載成功,用戶刪除數(shù)據(jù)等。包含了數(shù)據(jù)的type以及payload(修改數(shù)據(jù)用到的數(shù)據(jù))

一個(gè)用戶操作,比如搜索相應(yīng)商品,當(dāng)用戶按下確認(rèn)鍵的時(shí)候,整個(gè)流程可以概括為:

用戶發(fā)出指令 -> dispatch調(diào)用redurcers修改狀態(tài),相應(yīng)組件進(jìn)入loading狀態(tài) -> effects調(diào)用services獲取數(shù)據(jù) ->?獲取數(shù)據(jù)成功,調(diào)用redurces保存數(shù)據(jù)并結(jié)束loading ->?渲染到視圖。

當(dāng)調(diào)用reducers更新數(shù)據(jù)的時(shí)候,所有跟model綁定的視圖都會(huì)同步更新,每個(gè)處理邏輯也變得相當(dāng)清晰明了。雖然在項(xiàng)目復(fù)雜度上會(huì)有所增加,但是維護(hù)起來(lái)肯定是要方便很多的。

如果覺(jué)得難以理解,可以先從這兩個(gè)案例入手:

vuex?計(jì)數(shù)器+列表展示:http://www.cnblogs.com/axel10/p/8536688.html

dva.js 計(jì)數(shù)器+列表展示:http://www.cnblogs.com/axel10/p/8503782.html

其中最適合入門的是Vue,然后是React(使用dva.js),最難的是angular2+。angular2+涉及到Rxjs和TypeScript,知識(shí)點(diǎn)較多。無(wú)論難還是不難,永遠(yuǎn)記得由淺入深,不要幻想一步登天。如果你連angular1都用不熟,那就請(qǐng)你先用好angular1,好好理解mvc思想,再去涉足三大框架,不然很有可能事倍功半,浪費(fèi)大量時(shí)間。

作為前端工程師,如果有條件還是建議學(xué)習(xí)一門后端語(yǔ)言,比如java,c#,這對(duì)理解前端框架有很大的幫助。

相信看了本文案例你已經(jīng)掌握了方法,更多精彩請(qǐng)關(guān)注php中文網(wǎng)其它相關(guān)文章!

推薦閱讀:

React中有哪些類定義組件

Vue.js的表單輸入綁定

以上就是前端框架管理的詳細(xì)內(nèi)容,更多請(qǐng)關(guān)注php中文網(wǎng)其它相關(guān)文章!

最佳 Windows 性能的頂級(jí)免費(fèi)優(yōu)化軟件
最佳 Windows 性能的頂級(jí)免費(fèi)優(yōu)化軟件

每個(gè)人都需要一臺(tái)速度更快、更穩(wěn)定的 PC。隨著時(shí)間的推移,垃圾文件、舊注冊(cè)表數(shù)據(jù)和不必要的后臺(tái)進(jìn)程會(huì)占用資源并降低性能。幸運(yùn)的是,許多工具可以讓 Windows 保持平穩(wěn)運(yùn)行。

下載
來(lái)源:php中文網(wǎng)
本文內(nèi)容由網(wǎng)友自發(fā)貢獻(xiàn),版權(quán)歸原作者所有,本站不承擔(dān)相應(yīng)法律責(zé)任。如您發(fā)現(xiàn)有涉嫌抄襲侵權(quán)的內(nèi)容,請(qǐng)聯(lián)系admin@php.cn
最新問(wèn)題
開(kāi)源免費(fèi)商場(chǎng)系統(tǒng)廣告
最新下載
更多>
網(wǎng)站特效
網(wǎng)站源碼
網(wǎng)站素材
前端模板
關(guān)于我們 免責(zé)申明 意見(jiàn)反饋 講師合作 廣告合作 最新更新
php中文網(wǎng):公益在線php培訓(xùn),幫助PHP學(xué)習(xí)者快速成長(zhǎng)!
關(guān)注服務(wù)號(hào) 技術(shù)交流群
PHP中文網(wǎng)訂閱號(hào)
每天精選資源文章推送
PHP中文網(wǎng)APP
隨時(shí)隨地碎片化學(xué)習(xí)
PHP中文網(wǎng)抖音號(hào)
發(fā)現(xiàn)有趣的

Copyright 2014-2025 http://www.miracleart.cn/ All Rights Reserved | php.cn | 湘ICP備2023035733號(hào)