React基礎(chǔ):聲明式編程

主要的編程范式有:

  • 命令式編程(Imperative Programming)

  • 聲明式編程(Declarative Programming)

  • 函數(shù)式編程(Funational Programming)

  • 面向?qū)ο缶幊蹋∣bject-oriented Programming)

  • ...

React推行的是聲明式編程的思想,下面來對比學(xué)習(xí)下命令式編程聲明式編程,理解其中區(qū)別,以便于掌握React。

命令式編程

命令式編程描述代碼如何工作,告訴計算機一步步地執(zhí)行、先做什么后做什么。

比如,去酒吧點一杯酒,指揮服務(wù)員:

  • 從架子上取下一個玻璃杯;

  • 把杯子放在酒桶前;

  • 打開酒桶開關(guān),直到酒杯滿;

  • 把杯子遞給顧客;

這就是按照聲明式方式點一杯酒的,需要告知服務(wù)員如何給顧客提供一杯酒。

這里有一個代碼示例,編寫一個函數(shù),處理傳入包含大寫字符串的數(shù)組,返回包含相同小寫字符串的數(shù)組。


toLowerCase(['FOO', 'BAR']);  // ['foo', 'bar']

命令式函數(shù)實現(xiàn):


const toLowerCase = arr => {

    const res = [];

    for (let i = 0, len = arr.length; i < len; i++) {

        res.push(arr[i].toLowerCase());

    }

    return res;

}

首先,創(chuàng)建一個空數(shù)組用于保存結(jié)果,然后遍歷輸入數(shù)組的所有元素,將每項元素的小寫值存入空數(shù)組中,然后返回結(jié)果數(shù)組;

聲明式編程

聲明式編程表明想要實現(xiàn)什么目的,應(yīng)該做什么,但是不指定具體怎么做。

聲明式點一杯酒,只要告訴服務(wù)員:我要一杯酒即可;

聲明式編程實現(xiàn)toLowerCase:


const toLowerCase = arr => arr.map(

    value => value.toLowerCase();

)

輸入數(shù)組的元素傳遞給map函數(shù),然后返回包含小寫值的新數(shù)組

對比

相對比而言,聲明式編程

  • 更加簡潔、易懂,利于大型項目代碼的維護;

  • 無須使用變量,避免了創(chuàng)建和修改狀態(tài);

React中的聲明式

示例:帶有標(biāo)記的地圖

JavaScript 實現(xiàn)


const map = new Map.map(document.getElementById('map'), {

    zoom: 4,

    center: {lat,lng}

});

const marker = new Map.marker({

    position: {lat, lng},

    title: 'Hello Marker'

});

marker.setMap(map);

這是在JavaScript中命令式創(chuàng)建地圖、創(chuàng)建標(biāo)記以及在地圖上添加標(biāo)記的步驟;

React組件中顯示地圖的方式:


<Map zoom={4} center={lat, lng}>

    <Marker position={lat, lng} title={'Hello Marker'}/>

</Map>

聲明式編程方式使得React組件很容易使用,最終的代碼簡單易于維護。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
禁止轉(zhuǎn)載,如需轉(zhuǎn)載請通過簡信或評論聯(lián)系作者。

相關(guān)閱讀更多精彩內(nèi)容

  • 函數(shù)式編程無疑是目前的熱門技術(shù)話題之一,值得每個開發(fā)者認(rèn)真研究。iOS、Android這幾年不約而同的都更換了編程...
    光明自在閱讀 201評論 0 0
  • 前言 本文翻譯自Swift Functional Programming Tutorial 翻譯的不對的地方還請...
    桃紅宿雨閱讀 2,827評論 0 10
  • 官網(wǎng) 中文版本 好的網(wǎng)站 Content-type: text/htmlBASH Section: User ...
    不排版閱讀 4,695評論 0 5
  • 過完元宵節(jié),重新踏上歸途,來往車輛又再次回歸到那個打拼的城市,為了生計不得不背井離鄉(xiāng)。 清晨,看著行李箱放在邊上,...
    甜暖我歆閱讀 514評論 0 1

友情鏈接更多精彩內(nèi)容