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

資訊專欄INFORMATION COLUMN

如何降低前端開發(fā)的復(fù)雜度

xorpay / 3036人閱讀

摘要:我們作為前端開發(fā),都應(yīng)該具有這樣的能力。那么如何才能降低業(yè)務(wù)開發(fā)的復(fù)雜度呢細(xì)分組件都說模塊化開發(fā),其實在,這些思想規(guī)范之前就已經(jīng)有模塊化開發(fā)的規(guī)范了,雖然標(biāo)準(zhǔn)從然后隔了年才有了,在那年基本都是函數(shù)式開發(fā),一切皆函數(shù)。

優(yōu)秀的程序員總是能優(yōu)雅的組織自己的代碼,清晰的編寫思路,合理的組織結(jié)構(gòu)劃分,從小的功能組件,到大的模塊結(jié)構(gòu),都能通過合理的巧妙的搭配,不僅能化復(fù)雜為簡單,更能提升代碼運行效率,提高代碼的可維護(hù)性。我們作為前端開發(fā),都應(yīng)該具有這樣的能力。

那么如何才能降低業(yè)務(wù)開發(fā)的復(fù)雜度呢?

細(xì)分組件

都說模塊化開發(fā),其實在AMD,CMD這些思想規(guī)范之前就已經(jīng)有模塊化開發(fā)的規(guī)范了,雖然JavaScript標(biāo)準(zhǔn)從es1-es4 然后隔了n年才有了es5,在那N年基本都是‘函數(shù)式開發(fā)’,一切皆函數(shù)。之前還沒有模塊化加載的思想,畢竟也不需要,富客戶端還是flash的天下,基本都是簡單的網(wǎng)頁嵌套一些后端的代碼邏輯,然后通過后端渲染引擎渲染或者解釋器解釋產(chǎn)出html頁面,什么ASP,PHP,JSP等等。

然而之前的模塊化稱不上是模塊,為什么呢?因為沒有模塊加載器,主要是通過JS加載順序來控制加載的,依賴的JS文件放在前面。模塊主要是按照文件來劃分,每個文件是個獨立的功能模塊,在自定義的命名空間下掛在需要暴露出來的函數(shù),其他函數(shù)可以調(diào)用。當(dāng)然也有一些打包工具,可以根據(jù)事先定義好的文件列表,把多個文件打包成一個bundle。

而現(xiàn)在,且不說你是喜歡自己編寫或者用現(xiàn)有的模塊加載器,或者直接用像Angular,React,Vue等現(xiàn)成的腳手架做開發(fā),當(dāng)然自帶的就有了模塊加載,配合Webpack、Rollup等打包工具,可以完美構(gòu)建你想要的項目加購。

所以呢,建議還是要按照功能和業(yè)務(wù)結(jié)構(gòu)劃分你的組件,這樣呢一方面可以將功能解耦,一方面方便實現(xiàn)各自的業(yè)務(wù)邏輯,滿足keep it simple的原則,模塊自制。組件細(xì)分的得當(dāng),就不會出現(xiàn)一大堆函數(shù)代碼,來回修改各種狀態(tài),一堆變量,一個函數(shù)寫幾十行那樣。

建議:ES6 module + 函數(shù)式編程 + webpack/rollup ,絕對可以滿足你的需要,關(guān)于業(yè)務(wù)如何拆分,拆分的維度,后面介紹。

獨立狀態(tài)維護(hù)

狀態(tài)是什么?狀態(tài)是數(shù)據(jù)。

程序是什么?程序是數(shù)據(jù)+代碼。

所以可見數(shù)據(jù)的重要性,如何維護(hù)好一份數(shù)據(jù)至關(guān)重要。那么前面我們說了細(xì)分組件,數(shù)據(jù)呢? 數(shù)據(jù)是跟著組件的,那么數(shù)據(jù)自然也是需要做劃分了。這里面說的是獨立狀態(tài)維護(hù)。假設(shè)一個組件的代碼是這樣的。

/**  約定規(guī)范 **/
// 狀態(tài)
const state={
}
//行為
const actions={
    init:()=>{
    //組織聲明周期
   }
}
//視圖

const view=()=>(
    
)

這樣很清晰的將程序代碼劃分成了狀態(tài)、邏輯和視圖。邏輯操作狀態(tài),視圖更新展示狀態(tài)。

為什么說要獨立狀態(tài)維護(hù)呢?也是為了降低耦合、提升組件復(fù)用。組件的狀態(tài)應(yīng)該只是包含組件需要的數(shù)據(jù),而不應(yīng)該包含其他多余的數(shù)據(jù),按照軟件設(shè)計單一職責(zé)的原則,組件的職責(zé)應(yīng)該也是單一的,就是負(fù)責(zé)這個組件的增刪改的功能。

需要說明的是組件的開發(fā)應(yīng)該也是需要遵守數(shù)據(jù)驅(qū)動化的開發(fā)模式,避免直接操作DOM,即使是從DOM上拿數(shù)據(jù),有同學(xué)喜歡這么干哈,把數(shù)據(jù)通過data-x屬性掛在節(jié)點上,然后通過節(jié)點獲取數(shù)據(jù),這樣操作是不好的,首先這種操作有副作用,而且容易引發(fā)bug,而且也可能有安全風(fēng)險。

細(xì)心的同學(xué)可能要問,那么組件通信怎么辦呢?組件之間的交互可以通過注冊函數(shù)hook的形式進(jìn)行。當(dāng)前你也可以做一個事件注冊和分發(fā)的功能,不過一般一個SPA頁面不需要做的這么復(fù)雜,如果真的是很復(fù)雜的頁面,還是建議做成做個頁面。沒必要做成一個大大的SPA。

函數(shù)式編程

關(guān)于fp函數(shù)式編程github地址:https://github.com/chalecao/fp
這里并不是來討論函數(shù)式編程和OOP編程的好壞,你可以二者都用,也可以用其中一種,并沒有限制,看個人喜好。
我個人呢之前經(jīng)常都是class 還有extends混入高級的this。后來漸漸轉(zhuǎn)向了fp函數(shù)式編程,完完全全可以避免使用new,避免使用this,而且結(jié)合上面 獨立狀態(tài)維護(hù) 中的結(jié)構(gòu)劃分,結(jié)合ES6的模塊劃分,可以很優(yōu)雅的實現(xiàn)我所有需要實現(xiàn)的業(yè)務(wù)邏輯功能。

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

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

相關(guān)文章

  • 如何降低前端開發(fā)復(fù)雜度

    摘要:我們作為前端開發(fā),都應(yīng)該具有這樣的能力。那么如何才能降低業(yè)務(wù)開發(fā)的復(fù)雜度呢細(xì)分組件都說模塊化開發(fā),其實在,這些思想規(guī)范之前就已經(jīng)有模塊化開發(fā)的規(guī)范了,雖然標(biāo)準(zhǔn)從然后隔了年才有了,在那年基本都是函數(shù)式開發(fā),一切皆函數(shù)。 優(yōu)秀的程序員總是能優(yōu)雅的組織自己的代碼,清晰的編寫思路,合理的組織結(jié)構(gòu)劃分,從小的功能組件,到大的模塊結(jié)構(gòu),都能通過合理的巧妙的搭配,不僅能化復(fù)雜為簡單,更能提升代碼運行...

    wushuiyong 評論0 收藏0
  • 如何降低前端開發(fā)復(fù)雜度

    摘要:我們作為前端開發(fā),都應(yīng)該具有這樣的能力。那么如何才能降低業(yè)務(wù)開發(fā)的復(fù)雜度呢細(xì)分組件都說模塊化開發(fā),其實在,這些思想規(guī)范之前就已經(jīng)有模塊化開發(fā)的規(guī)范了,雖然標(biāo)準(zhǔn)從然后隔了年才有了,在那年基本都是函數(shù)式開發(fā),一切皆函數(shù)。 優(yōu)秀的程序員總是能優(yōu)雅的組織自己的代碼,清晰的編寫思路,合理的組織結(jié)構(gòu)劃分,從小的功能組件,到大的模塊結(jié)構(gòu),都能通過合理的巧妙的搭配,不僅能化復(fù)雜為簡單,更能提升代碼運行...

    LinkedME2016 評論0 收藏0
  • ELSE 技術(shù)周刊(2017.10.16期)

    摘要:前端中的計算機(jī)領(lǐng)域的通常認(rèn)為起源于。并對其主要內(nèi)容作了自己的解讀。搬到另一個地區(qū)會導(dǎo)致名氣降低。年度報告,年最受歡迎的編程語言年上最流行的種編程語言及前十最火熱的項目排行榜,分別由及登頂。技術(shù)周刊由小組出品,匯聚一周好文章,周刊原文。 showImg(https://segmentfault.com/img/bVWHC4?w=1000&h=710); 本期推薦 反擊爬蟲,前端工程師的腦...

    0xE7A38A 評論0 收藏0
  • ESLint 在中大型團(tuán)隊應(yīng)用實踐

    摘要:自動化接入和升級方案通過命令行工具提供一鍵接入升級能力,同時集成到團(tuán)隊腳手架中,大大降低了工程接入和維護(hù)的成本。原始代碼經(jīng)過解析器的解析,在管道中逐一經(jīng)過所有規(guī)則的檢查,最終檢測出所有不符合規(guī)范的代碼,并輸出為報告。 引言 代碼規(guī)范是軟件開發(fā)領(lǐng)域經(jīng)久不衰的話題,幾乎所有工程師在開發(fā)過程中都會遇到,并或多或少會思考過這一問題。隨著前端應(yīng)用的大型化和復(fù)雜化,越來越多的前端工程師和團(tuán)隊開始重...

    alogy 評論0 收藏0
  • 方案設(shè)計--如何看待前端框架選型 ?

    摘要:純前端開發(fā)主要是針對靜態(tài)頁面。自主權(quán)最大,正常是使用進(jìn)行輔助開發(fā),上線等。大致原因使用是為了和端的保持同步。四總結(jié)對于比較正式的項目,前端技術(shù)選型策略一定是產(chǎn)品收益最大化,用戶在首位。 對于前端團(tuán)隊,可以實現(xiàn)企業(yè)受益最大化要點。 一、技術(shù)選型的策略 1、保證產(chǎn)品質(zhì)量 (1)功能穩(wěn)健:網(wǎng)頁不白屏,不錯位,不卡死;操作正常;數(shù)據(jù)精準(zhǔn)。 (2)體驗優(yōu)秀:加載體驗,交互體驗,視覺體驗,無障礙訪...

    gnehc 評論0 收藏0

發(fā)表評論

0條評論

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