成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

四個(gè)優(yōu)秀實(shí)踐,引導(dǎo)你寫出高質(zhì)量JavaScript模塊

新聞 前端
這篇文章介紹了有關(guān)如何更好地組織 JavaScript 模塊的4種最佳實(shí)踐。

使用 ES2015 模塊,您可以將應(yīng)用程序代碼分成可重用的、封裝的、專注于單一任務(wù)的模塊。

這很好,但是如何構(gòu)造模塊呢?一個(gè)模塊應(yīng)該有多少個(gè)函數(shù)和類?

這篇文章介紹了有關(guān)如何更好地組織 JavaScript 模塊的4種最佳實(shí)踐。

[[320853]]

1.優(yōu)先使用命名導(dǎo)出

當(dāng)我開始使用 JavaScript 模塊時(shí),我使用默認(rèn)的語(yǔ)法來(lái)導(dǎo)出模塊定義的單個(gè)塊,不管是類還是函數(shù)。

例如,這是一個(gè)將模塊 Greeter 導(dǎo)出為默認(rèn)值的模塊程序:

四個(gè)最佳實(shí)踐,引導(dǎo)你寫出高質(zhì)量JavaScript模塊

隨著時(shí)間的推移,我注意到了重構(gòu)默認(rèn)導(dǎo)出的類(或函數(shù))的困難。在重命名原始類時(shí),使用者模塊中的類名沒(méi)有改變。

更糟糕的是,編輯器沒(méi)有提供有關(guān)要導(dǎo)入的類名的自動(dòng)完成建議。

我的結(jié)論是,默認(rèn)的導(dǎo)出并沒(méi)有帶來(lái)明顯的好處。然后我轉(zhuǎn)向了命名導(dǎo)出

讓我們將 Greeter 命名為出口,然后看看好處:

四個(gè)最佳實(shí)踐,引導(dǎo)你寫出高質(zhì)量JavaScript模塊

使用命名導(dǎo)出,編輯器可以更好地進(jìn)行重命名:每次更改原始類名時(shí),所有使用者模塊也會(huì)更改類名。

自動(dòng)完成功能還會(huì)建議導(dǎo)入的類:

四個(gè)最佳實(shí)踐,引導(dǎo)你寫出高質(zhì)量JavaScript模塊

所以,這是我的建議:

"支持命名模塊導(dǎo)出,以受益于重命名重構(gòu)和代碼自動(dòng)完成功能。"

2.導(dǎo)入期間不進(jìn)行繁重的計(jì)算工作

模塊級(jí)別范圍定義了函數(shù)、類、對(duì)象和變量。該模塊可以導(dǎo)出其中一些組件,就像這樣。

四個(gè)最佳實(shí)踐,引導(dǎo)你寫出高質(zhì)量JavaScript模塊

模塊級(jí)范圍不應(yīng)該進(jìn)行繁重的計(jì)算,比如解析 JSON、發(fā)出 HTTP 請(qǐng)求、讀取本地存儲(chǔ)等等。

例如,下面的模塊配置解析來(lái)自全局變量 bigJsonString 的配置:

四個(gè)最佳實(shí)踐,引導(dǎo)你寫出高質(zhì)量JavaScript模塊

這是一個(gè)問(wèn)題,因?yàn)閎igJsonString的解析是在模塊級(jí)范圍內(nèi)完成的。bigJsonString的解析實(shí)際上是在導(dǎo)入配置模塊時(shí)發(fā)生的:

四個(gè)最佳實(shí)踐,引導(dǎo)你寫出高質(zhì)量JavaScript模塊

在更高的級(jí)別上,模塊級(jí)范圍的作用是定義模塊組件、導(dǎo)入依賴項(xiàng)和導(dǎo)出公共組件:這是依賴項(xiàng)解析過(guò)程。它應(yīng)該與運(yùn)行時(shí)分離:解析JSON、發(fā)出請(qǐng)求、處理事件。

讓我們重構(gòu)配置模塊來(lái)執(zhí)行延遲解析:

四個(gè)最佳實(shí)踐,引導(dǎo)你寫出高質(zhì)量JavaScript模塊

因?yàn)?data 屬性被定義為一個(gè) getter,所以只有在使用者訪問(wèn) configuration.data 時(shí)才解析bigJsonString。

四個(gè)最佳實(shí)踐,引導(dǎo)你寫出高質(zhì)量JavaScript模塊

消費(fèi)者更清楚什么時(shí)候進(jìn)行大的操作,使用者可能決定在瀏覽器空閑時(shí)執(zhí)行該操作。或者,使用者可能會(huì)導(dǎo)入模塊,但是出于某種原因不使用它。

這為更深層的性能優(yōu)化提供了機(jī)會(huì):減少交互時(shí)間,最大程度地減少主線程工作。

導(dǎo)入時(shí),模塊不應(yīng)該執(zhí)行任何繁重的工作。相反,使用者應(yīng)該決定何時(shí)執(zhí)行運(yùn)行時(shí)操作。

3.盡可能的使用高內(nèi)聚模塊

內(nèi)聚性描述了模塊內(nèi)部各個(gè)組件在一起的程度。

高內(nèi)聚模塊的函數(shù)、類或變量是密切相關(guān)的,他們專注于單個(gè)任務(wù)。

formatDate 模塊具有很高的內(nèi)聚性,因?yàn)樗墓δ苊芮邢嚓P(guān),并且側(cè)重于日期格式化:

四個(gè)最佳實(shí)踐,引導(dǎo)你寫出高質(zhì)量JavaScript模塊

formatDate()、ensureDateInstance() 和 MONTHS 彼此密切相關(guān)。刪除 MONTHS 或ensureDateInstance() 會(huì)破壞 formatDate():這是高內(nèi)聚的標(biāo)志。

4.避免較長(zhǎng)的相對(duì)路徑

我發(fā)現(xiàn)很難理解一個(gè)模塊的路徑包含一個(gè),甚至更多的父文件夾:

四個(gè)最佳實(shí)踐,引導(dǎo)你寫出高質(zhì)量JavaScript模塊

而有一個(gè)父選擇器 ../ 通常不是問(wèn)題,擁有 2 個(gè)或更多通常很難掌握。

這就是為什么我建議避免使用父文件夾,而使用絕對(duì)路徑:

四個(gè)最佳實(shí)踐,引導(dǎo)你寫出高質(zhì)量JavaScript模塊

盡管有時(shí)寫入絕對(duì)路徑的時(shí)間更長(zhǎng),但是使用絕對(duì)路徑可以使導(dǎo)入的模塊的位置清晰明了。

為了減少冗長(zhǎng)的絕對(duì)路徑,可以引入新的根目錄。例如,這可以使用 babel-plugin-module-resolver實(shí)現(xiàn)。

使用絕對(duì)路徑而不是較長(zhǎng)的相對(duì)路徑。

5.結(jié)論

JavaScript 模塊非常適合將您的應(yīng)用程序邏輯拆分為多個(gè)獨(dú)立的小塊。

通過(guò)使用命名的導(dǎo)出而不是默認(rèn)的導(dǎo)出,可以在導(dǎo)入命名組件時(shí)更輕松地重命名重構(gòu)和編輯器自動(dòng)完成幫助。

使用 import {myFunc} from 'myModule' 的唯一目的就是導(dǎo)入 myFunc 組件,僅此而已。myModule的模塊級(jí)范圍應(yīng)該只定義包含少量?jī)?nèi)容的類、函數(shù)或變量。

一個(gè)組件應(yīng)該有多少個(gè)函數(shù)或類,這些組件應(yīng)該如何與每個(gè)組件相關(guān)聯(lián)?支持高內(nèi)聚的模塊:它的組件應(yīng)該緊密相關(guān)并執(zhí)行一個(gè)共同的任務(wù)。

包含許多父文件夾 ../ 的長(zhǎng)相對(duì)路徑很難理解,將它們重構(gòu)為絕對(duì)路徑。

 

責(zé)任編輯:張燕妮 來(lái)源: 今日頭條
相關(guān)推薦

2020-03-02 09:26:16

JavaScript程序員JSON

2023-07-06 14:51:30

開發(fā)高質(zhì)量軟件

2011-06-14 18:46:47

外鏈

2022-10-24 08:10:21

SQL代碼業(yè)務(wù)

2023-03-09 15:05:46

HTMLWeb 開發(fā)SEO

2023-07-28 22:27:41

PromptGPT

2020-02-14 09:39:40

箭頭函數(shù)語(yǔ)法運(yùn)算符

2020-02-14 14:35:01

編程語(yǔ)言PythonJava

2021-03-17 09:48:48

高質(zhì)量技術(shù)文章

2011-03-04 10:11:09

JavascriptAPI

2022-09-13 15:22:04

邊緣計(jì)算云計(jì)算

2011-12-29 15:02:27

JavaScript

2021-01-09 22:35:51

程序員編碼代碼

2021-01-04 08:04:51

JS 變量JavaScript

2022-07-06 08:34:17

前端單測(cè)項(xiàng)目

2022-09-02 12:09:06

高質(zhì)量用戶畫像

2011-05-31 13:43:46

外鏈

2017-07-14 09:54:47

代碼函數(shù)程序

2022-08-09 13:22:26

Hooksreactvue

2020-03-12 14:03:59

工具代碼開發(fā)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 中文字幕视频在线观看 | 亚洲成人福利在线观看 | 国产视频第一页 | 久色视频在线 | 国产成人精品av | 日本一二区视频 | 91福利在线观看视频 | 国产天堂 | 日韩高清黄色 | 久久国产精品免费一区二区三区 | 欧美视频一区二区三区 | 可以免费观看的av | 99久久精品一区二区毛片吞精 | 久久国产精品久久国产精品 | 天天天天操| 国内精品免费久久久久软件老师 | 国产一区二区三区免费视频 | 日韩亚洲一区二区 | 一级在线毛片 | 久久久精品一区二区三区 | 羞羞网站免费观看 | 日韩一及片 | 精品欧美一区二区久久久伦 | 亚洲综合视频 | 中文字幕一区二区三区四区五区 | 日韩一区二区不卡 | 国产视频在线一区二区 | 天堂久久网| 青青伊人久久 | 电影91久久久 | 99热这里只有精品8 激情毛片 | 黄网站色大毛片 | av网站免费 | 久久久久久国产 | 精品国产一级 | 国产精品极品美女在线观看免费 | 久久一区 | 中文字幕亚洲专区 | 美女天堂av| 99reav| 日韩欧美视频网站 |