亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

目錄
域驅(qū)動(dòng)設(shè)計(jì)的底漆
組織DDD網(wǎng)站
首先組織您的域
定義每個(gè)域中的組件和容器
添加助手,如果需要
與主持人清理模板
將邏輯推入公用事業(yè)
沒有錯(cuò)誤的方法來組織您的應(yīng)用程序!
首頁 web前端 css教學(xué) 域驅(qū)動(dòng)的設(shè)計(jì)與React

域驅(qū)動(dòng)的設(shè)計(jì)與React

Apr 13, 2025 am 11:22 AM

域驅(qū)動(dòng)的設(shè)計(jì)與React

關(guān)於如何在React世界中組織前端應(yīng)用的指導(dǎo)很少。 (只需移動(dòng)文件,直到“感覺正確”,大聲笑)。事實(shí)是我們可以做得更好。讓我們看一下您可能會(huì)考慮用於架構(gòu)網(wǎng)站的一種模式。

首先,您可能會(huì)在 /組件和 /容器文件夾之間將代碼拆分。這適用於小網(wǎng)站,但您會(huì)發(fā)現(xiàn)自己在擴(kuò)展到較大站點(diǎn)時(shí)會(huì)尋找更健壯的東西。幸運(yùn)的是,數(shù)十年來對(duì)系統(tǒng)設(shè)計(jì)的研究為我們提供了許多模式,可以探索以創(chuàng)建可擴(kuò)展的體系結(jié)構(gòu)。

其中之一是域驅(qū)動(dòng)的設(shè)計(jì),在過去的幾年中,它恢復(fù)了知名度。讓我們探索如何在React-Land中使用它。

域驅(qū)動(dòng)設(shè)計(jì)的底漆

域驅(qū)動(dòng)設(shè)計(jì)(DDD)是通過將其基本數(shù)據(jù)模型與域邏輯聯(lián)繫起來來管理軟件應(yīng)用程序複雜性的實(shí)踐。那是一口氣,所以讓我們進(jìn)一步將其分解。

領(lǐng)域是一個(gè)本體,這意味著世界上的事物是如何分組的。例如,托樑一詞與建築構(gòu)建領(lǐng)域具有非常特定的聯(lián)繫。另一個(gè)詞,例如邁克(Mike ),可以屬於多個(gè)領(lǐng)域,例如聖經(jīng)名稱的領(lǐng)域(邁克爾(Michael)的縮寫)或與北約語音字母有關(guān)的政治領(lǐng)域。

當(dāng)設(shè)計(jì)是域驅(qū)動(dòng)的時(shí),這意味著我們將域模型(例如撲克域中的撲克卡)放置在上下文(例如上下文分組,例如游戲)中,以幫助管理複雜性。

組織DDD網(wǎng)站

域驅(qū)動(dòng)的設(shè)計(jì)專門用於處理生長(zhǎng)站點(diǎn)的複雜性,因?yàn)樗鼈兲砑恿嗽絹碓蕉嗟哪P?。?duì)於具有一個(gè)模型的站點(diǎn)來說,這確實(shí)沒有意義。一旦獲得大約四個(gè)型號(hào),這是開始將模型綁定到多個(gè)上下文的好時(shí)機(jī)。這不是一個(gè)艱難的規(guī)則,因此不要覺得您必須闖入多種上下文,但是一旦您超過了四個(gè)模型,這些上下文分組就會(huì)開始浮出水面。

首先組織您的域

讓我們將Twitter作為我們組織的示例網(wǎng)站。在Twitter中分離域的一種方法是將我們的模型分開,以在推文和交互元素的動(dòng)力和交互元素之間進(jìn)行分配,這些元素可以使微博傳播和蓬勃發(fā)展。

這是在Twitter中分開關(guān)注點(diǎn)的唯一方法嗎?絕對(duì)不是! DDD的一個(gè)關(guān)鍵方面是沒有一種正確的方法來創(chuàng)建域。有很多方法可以將應(yīng)用程序的有限上下文分開,因此不要過多地專注於我們選擇的體系結(jié)構(gòu)。取而代之的是,將其用作跳板,以了解我們?nèi)绾螌DD應(yīng)用於前端代碼的組織。

也就是說,我們的代碼現(xiàn)在將結(jié)構(gòu)化為這樣(假設(shè)您從諸如create-react-app之類的東西開始):

嘰嘰喳喳/
├─CS.CSS
├ -  app.js
├─..p.test.js
├ - 博客/
└─..-互動(dòng)/

定義每個(gè)域中的組件和容器

現(xiàn)在我們已經(jīng)設(shè)置了基本文件夾結(jié)構(gòu),現(xiàn)在該添加一些真實(shí)的組件了!從上面的域UML圖中查看,從在給定頁面上獲取數(shù)據(jù)的容器以及組織組成這些頁面的模板的組件將很有用。在擴(kuò)展我們的應(yīng)用程序上,我們現(xiàn)在已經(jīng)有了以下結(jié)構(gòu)(為簡(jiǎn)單起見,請(qǐng)省略我們的隨附的test.js文件):

嘰嘰喳喳/
├─CS.CSS
├ -  app.js
├─..p.test.js
├ - 博客/
Homepage.js
│├├─-tweetcard.js
│││─-tweetdialog.js
││├前Tweetlist.js
││├─-tweetListItem.js
││├─-userpage.js
││└前Usercard.js
└─..-互動(dòng)/
    ├ - ─遵循Button.js
    ├ - ─button.js
    └─— sharebutton.js

我們?nèi)匀槐A魬?yīng)用程序文件以初始化對(duì)根級(jí)HTML標(biāo)籤的反應(yīng)。有了我們的域,我們開始構(gòu)建我們的容器(例如主頁和用戶頁面)和組件(例如TweetCard和TweetListItem)。另外,我們可以進(jìn)一步將域內(nèi)的模型分割成看起來這樣:

嘰嘰喳喳/
└ - 博客/
    ├ - 用戶/
    Homepage.js
    ││├前Usercard.js
    ││└─-userpage.js
    └─..pweett/
        ├├前Tweetcard.js
        ├ -  tweetdialog.js
        ├ -  tweetlist.js
        └ - ─tweetListitem.js

但是,鑑於應(yīng)用程序的大小,在此階段不需要。

添加助手,如果需要

當(dāng)我們構(gòu)建應(yīng)用程序時(shí),我們的UI將繼續(xù)增加複雜性。為了解決這個(gè)問題,我們有兩種方法可以將關(guān)注點(diǎn)並將邏輯從組件模板中撤出:主持人實(shí)用程序。主持人將所有視覺演示邏輯從模板中推出,以使視圖層盡可能清潔和簡(jiǎn)單。實(shí)用程序在前端收集了與模板無關(guān)的所有其他邏輯的共享功能。讓我們檢查一下這些。

與主持人清理模板

想想Twitter個(gè)人資料。您在我的帳戶上看到哪些元素?

有與我的用戶直接相關(guān)的信息:名稱,處理,描述,位置,網(wǎng)站,生日,開始日期。其他模型之間也有一些關(guān)聯(lián)計(jì)數(shù) - 其他有多少用戶關(guān)注我?我關(guān)注多少其他用戶?頁面上甚至沒有捕獲其他邏輯,例如我喜歡的推文,答復(fù),媒體上傳和內(nèi)容。為了適當(dāng)?shù)夭东@所有這些演示邏輯,我們可以在文件樹中添加一個(gè)附加文件,以將我們的演示者模式與JSX組件隔離:

嘰嘰喳喳/
└ - 博客/
    ├ - 用戶/
    ││├前Usercard.js
    │││前USERCARD.PRESENTER.JS

將邏輯推入公用事業(yè)

某些呈現(xiàn)邏輯是如此基本,以至於它在應(yīng)用程序中是否在渲染中使用,它都可以在應(yīng)用程序中有用。貨幣格式,驗(yàn)證和時(shí)間戳記格式都是用例,我們可以從應(yīng)用程序中的隔離公用事業(yè)功能中受益。這些住在哪裡?由於它們跨越了域,因此公用事業(yè)可以放在自己的文件夾中:

 嘰嘰喳喳/
    ├─CS.CSS
    ├ -  app.js
    ├─..p.test.js
    ├ - 博客/
    Homepage.js
    │├├─-tweetcard.js
    │││─-tweetdialog.js
    ││├前Tweetlist.js
    ││├─-tweetListItem.js
    ││├前Usercard.js
    │├├─-USERCARD.PRESENTERJS
    ││└─-userpage.js
    ├─..-互動(dòng)/
    ││├站關(guān)注Button.js
    │││├-button.js
    sharebutton.js
    └ -  UTILS/
         ├ - 貨幣
         ├ - 時(shí)間
         └ - 驗(yàn)證

沒有錯(cuò)誤的方法來組織您的應(yīng)用程序!

最終,選擇是您的。這只是您可以安排申請(qǐng)的眾多方法的一個(gè)例子。域驅(qū)動(dòng)的設(shè)計(jì)是一種有價(jià)值的工具,因?yàn)樗?strong>以有意義的方式將業(yè)務(wù)邏輯分開,為開發(fā)人員之間的域?qū)I(yè)知識(shí)提供了更清晰的區(qū)別,並為易於組織和擴(kuò)展您的代碼提供了規(guī)則。

但是,如果您正在尋找一種替代React應(yīng)用程序文件結(jié)構(gòu)的傳統(tǒng)混亂,請(qǐng)查看以域驅(qū)動(dòng)的設(shè)計(jì)。這可能只是事情。

最後,如果您喜歡這種內(nèi)容,並想了解有關(guān)前端,用戶界面開發(fā)以及UX設(shè)計(jì)和研究的更多信息(根據(jù)您在行業(yè)中的經(jīng)驗(yàn)組織),我會(huì)運(yùn)行一個(gè)免費(fèi)的新聞通訊,您可能想檢查一下。

以上是域驅(qū)動(dòng)的設(shè)計(jì)與React的詳細(xì)內(nèi)容。更多資訊請(qǐng)關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

本網(wǎng)站聲明
本文內(nèi)容由網(wǎng)友自願(yuàn)投稿,版權(quán)歸原作者所有。本站不承擔(dān)相應(yīng)的法律責(zé)任。如發(fā)現(xiàn)涉嫌抄襲或侵權(quán)的內(nèi)容,請(qǐng)聯(lián)絡(luò)admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費(fèi)脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅(qū)動(dòng)的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費(fèi)的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費(fèi)的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強(qiáng)大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級(jí)程式碼編輯軟體(SublimeText3)

熱門話題

Laravel 教程
1597
29
PHP教程
1488
72
CSS教程,用於創(chuàng)建加載旋轉(zhuǎn)器和動(dòng)畫 CSS教程,用於創(chuàng)建加載旋轉(zhuǎn)器和動(dòng)畫 Jul 07, 2025 am 12:07 AM

創(chuàng)建CSS加載旋轉(zhuǎn)器的方法有三種:1.使用邊框的基本旋轉(zhuǎn)器,通過HTML和CSS實(shí)現(xiàn)簡(jiǎn)單動(dòng)畫;2.使用多個(gè)點(diǎn)的自定義旋轉(zhuǎn)器,通過不同延遲時(shí)間實(shí)現(xiàn)跳動(dòng)效果;3.在按鈕中添加旋轉(zhuǎn)器,通過JavaScript切換類來顯示加載狀態(tài)。每種方法都強(qiáng)調(diào)了設(shè)計(jì)細(xì)節(jié)如顏色、大小、可訪問性和性能優(yōu)化的重要性,以提升用戶體驗(yàn)。

解決CSS瀏覽器兼容性問題和前綴 解決CSS瀏覽器兼容性問題和前綴 Jul 07, 2025 am 01:44 AM

處理CSS瀏覽器兼容性和前綴問題需理解瀏覽器支持差異並合理使用廠商前綴。 1.了解常見問題如Flexbox、Grid支持不一,position:sticky失效,動(dòng)畫表現(xiàn)不同;2.查閱CanIuse確認(rèn)特性支持情況;3.正確使用-webkit-、-moz-、-ms-、-o-等廠商前綴;4.推薦使用Autoprefixer自動(dòng)添加前綴;5.安裝PostCSS並配置browserslist指定目標(biāo)瀏覽器;6.構(gòu)建時(shí)自動(dòng)處理兼容性;7.老項(xiàng)目可用Modernizr檢測(cè)特性;8.不必追求所有瀏覽器一致,確

顯示:內(nèi)聯(lián),顯示:塊和顯示:內(nèi)聯(lián)塊之間有什麼區(qū)別? 顯示:內(nèi)聯(lián),顯示:塊和顯示:內(nèi)聯(lián)塊之間有什麼區(qū)別? Jul 11, 2025 am 03:25 AM

Themaindifferencesbetweendisplay:inline,block,andinline-blockinHTML/CSSarelayoutbehavior,spaceusage,andstylingcontrol.1.Inlineelementsflowwithtext,don’tstartonnewlines,ignorewidth/height,andonlyapplyhorizo????ntalpadding/margins—idealforinlinetextstyling

使用CSS剪輯路徑創(chuàng)建自定義形狀 使用CSS剪輯路徑創(chuàng)建自定義形狀 Jul 09, 2025 am 01:29 AM

使用CSS的clip-path屬性可以裁剪元素為自定義形狀,如三角形、圓形缺口、多邊形等,無需依賴圖片或SVG。其優(yōu)勢(shì)包括:1.支持circle、ellipse、polygon等多種基本形狀;2.可響應(yīng)式調(diào)整,適配移動(dòng)端;3.易於動(dòng)畫化,可結(jié)合hover或JavaScript實(shí)現(xiàn)動(dòng)態(tài)效果;4.不影響佈局流,僅裁剪顯示區(qū)域。常見用法如圓形裁剪clip-path:circle(50pxatcenter)和三角形裁剪clip-path:polygon(50%0%,1000%,00%)。注意

造型與CSS不同訪問的鏈接 造型與CSS不同訪問的鏈接 Jul 11, 2025 am 03:26 AM

設(shè)置訪問過鏈接的樣式能提升用戶體驗(yàn),尤其在內(nèi)容密集型網(wǎng)站中幫助用戶更好導(dǎo)航。 1.使用CSS的:visited偽類可定義已訪問鏈接樣式,如顏色變化;2.注意瀏覽器出於隱私限制僅允許修改部分屬性;3.顏色選擇應(yīng)與整體風(fēng)格協(xié)調(diào),避免突兀;4.移動(dòng)端可能不顯示該效果,建議結(jié)合其他視覺提示如icon輔助標(biāo)識(shí)。

如何使用CSS創(chuàng)建響應(yīng)式圖像? 如何使用CSS創(chuàng)建響應(yīng)式圖像? Jul 15, 2025 am 01:10 AM

要使用CSS創(chuàng)建響應(yīng)式圖片,主要可通過以下方法實(shí)現(xiàn):1.使用max-width:100%和height:auto讓圖片在保持比例的同時(shí)自適應(yīng)容器寬度;2.結(jié)合HTML的srcset和sizes屬性智能加載適配不同屏幕的圖片源;3.利用object-fit和object-position控製圖片裁剪與焦點(diǎn)展示。這些方法共同確保圖片在不同設(shè)備上清晰、美觀地呈現(xiàn)。

揭開CSS單元的神秘面紗:PX,EM,REM,VW,VH比較 揭開CSS單元的神秘面紗:PX,EM,REM,VW,VH比較 Jul 08, 2025 am 02:16 AM

CSS單位的選擇取決於設(shè)計(jì)需求和響應(yīng)式要求。 1.px用於固定尺寸,適合精確控制但缺乏彈性;2.em是相對(duì)單位,受父元素影響易導(dǎo)致級(jí)聯(lián)問題,rem則基於根元素更穩(wěn)定,適合全局縮放;3.vw/vh基於視口大小,適合響應(yīng)式設(shè)計(jì),但需注意極端屏幕下的表現(xiàn);4.選擇時(shí)應(yīng)根據(jù)是否需要響應(yīng)式調(diào)整、元素層級(jí)關(guān)係及視口依賴程度來決定,合理搭配使用可提升佈局靈活性與維護(hù)性。

什麼是常見的CSS瀏覽器不一致? 什麼是常見的CSS瀏覽器不一致? Jul 26, 2025 am 07:04 AM

不同瀏覽器對(duì)CSS解析存在差異,導(dǎo)致顯示效果不一致,主要包括默認(rèn)樣式差異、盒模型計(jì)算方式、Flexbox和Grid佈局支持程度及某些CSS屬性行為不一致。 1.默認(rèn)樣式處理不一致,解決方法是使用CSSReset或Normalize.css統(tǒng)一初始樣式;2.舊版IE的盒模型計(jì)算方式不同,建議統(tǒng)一使用box-sizing:border-box;3.Flexbox和Grid在邊緣情況或舊版本中表現(xiàn)有差異,應(yīng)多測(cè)試並使用Autoprefixer;4.某些CSS屬性行為不一致,需查閱CanIuse並提供降級(jí)

See all articles