Jadual Kandungan
Primer mengenai reka bentuk yang didorong oleh domain
Mengatur laman web DDD
Mulakan dengan mengatur domain anda
Tentukan komponen dan bekas di setiap domain
Tambahkan pembantu, jika diperlukan
Bersihkan templat dengan penyampai
Tolak logik ke dalam utiliti
Tidak ada cara yang salah untuk mengatur aplikasi anda!
Rumah hujung hadapan web tutorial css Reka bentuk yang didorong oleh domain dengan React

Reka bentuk yang didorong oleh domain dengan React

Apr 13, 2025 am 11:22 AM

Reka bentuk yang didorong oleh domain dengan React

Terdapat panduan yang sangat sedikit tentang cara mengatur aplikasi front-end di dunia React. (Hanya gerakkan fail sehingga ia "terasa betul," lol). Sebenarnya kita boleh melakukan yang lebih baik. Mari kita lihat satu corak yang mungkin anda pertimbangkan untuk menggunakan arkitek laman web anda.

Pada mulanya, anda mungkin membahagikan kod antara /komponen dan /folder kontena. Ini berfungsi untuk laman web kecil tetapi anda akan mendapati diri anda mencari sesuatu yang lebih mantap apabila berskala ke laman web yang lebih besar. Nasib baik, dekad penyelidikan ke dalam reka bentuk sistem telah memberi kita banyak corak untuk meneroka untuk mewujudkan seni bina berskala.

Salah satu daripada mereka adalah reka bentuk yang didorong oleh domain , dan ia telah mendapat populariti sejak beberapa tahun kebelakangan. Mari kita meneroka bagaimana kita boleh menggunakannya di React-Land.

Primer mengenai reka bentuk yang didorong oleh domain

Reka bentuk yang didorong oleh domain (DDD) adalah amalan menguruskan kerumitan aplikasi perisian dengan mengaitkan model data asas mereka kepada logik domain . Itulah yang menyegarkan, jadi mari kita memecahkannya lebih jauh.

Domain adalah ontologi, yang bermaksud bagaimana keadaan dikumpulkan di dunia. Sebagai contoh, perkataan joist mempunyai sambungan yang sangat spesifik ke domain pembinaan bangunan. Satu lagi perkataan, seperti Mike , boleh tergolong dalam pelbagai domain, seperti domain nama -nama alkitabiah (pendek untuk Michael), atau dalam domain politik kerana ia berkaitan dengan abjad fonetik NATO.

Apabila reka bentuk didorong domain , ini bermakna kita meletakkan model domain kita (contohnya kad bermain dalam domain poker) dalam konteks (contohnya kumpulan kontekstual, seperti permainan) untuk membantu menguruskan kerumitan.

Mengatur laman web DDD

Reka bentuk yang didorong oleh domain khusus untuk mengendalikan kerumitan tapak yang semakin meningkat kerana mereka menambah lebih banyak model. Ia tidak masuk akal untuk laman web dengan satu model. Sebaik sahaja anda mendapat kira -kira empat model, itulah masa yang baik untuk mula melihat mengikat model anda ke pelbagai konteks . Ini bukan peraturan yang sukar dan cepat, jadi jangan merasa seperti anda harus memasuki pelbagai konteks, tetapi sebaik sahaja anda mendapat di atas empat model, kumpulan kontekstual akan mula muncul.

Mulakan dengan mengatur domain anda

Mari kita gunakan Twitter sebagai tapak contoh kami untuk disusun. Salah satu cara untuk memisahkan domain di Twitter adalah untuk memisahkan model kami di antara platform blog yang menguasai tweet dan unsur-unsur interaksi yang membolehkan mikro-blog untuk menyebarkan dan berkembang.

Adakah ini satu -satunya cara untuk memisahkan kebimbangan di Twitter? Pasti tidak! Satu aspek utama DDD ialah tidak ada cara yang betul untuk membuat domain . Terdapat banyak cara untuk memisahkan konteks yang dibatasi oleh aplikasi, jadi jangan terlalu fokus pada seni bina yang telah kami pilih. Sebaliknya, gunakan ini sebagai batu loncatan untuk memahami bagaimana kita boleh memohon DDD kepada organisasi kod depan kami.

Yang mengatakan, kod kami kini akan berstruktur untuk kelihatan seperti ini (dengan mengandaikan anda bermula dengan sesuatu seperti create-react-app):

 Twitter/
├── App.css
├── App.js
├── App.test.js
├── blog/
└── interaksi/
Salin selepas log masuk

Tentukan komponen dan bekas di setiap domain

Sekarang kita mempunyai struktur folder asas kami, sudah tiba masanya untuk menambah beberapa komponen sebenar! Melihat gambarajah UML domain kami di atas, ia berguna untuk memulakan dengan bekas yang mengambil data pada halaman dan komponen tertentu yang menganjurkan templat yang mengarang halaman tersebut. Memperluas pada aplikasi kami, kami kini mempunyai struktur berikut (menghilangkan fail ujian kami yang disertakan untuk kesederhanaan):

 Twitter/
├── App.css
├── App.js
├── App.test.js
├── blog/
│ ├── homepage.js
│ ├── tweetcard.js
│ ├── tweetdialog.js
│ ├── tweetlist.js
│ ├── tweetlistitem.js
│ ├── userpage.js
│ └── usercard.js
└── interaksi/
    ├── ikutbutton.js
    ├── likeButton.js
    └── Sharebutton.js
Salin selepas log masuk

Kami masih menyimpan fail aplikasi kami untuk memulakan React kepada tag HTML peringkat akar kami. Dengan domain kami, kami mula membina bekas kami (seperti laman utama dan pengguna) dan komponen (seperti TweetCard dan TweetListItem). Sebagai alternatif, kita dapat menyusun lagi model dalam domain kita untuk kelihatan seperti itu:

 Twitter/
└── blog/
    ├── Pengguna/
    │ ├── homepage.js
    │ ├── usercard.js
    │ └── userpage.js
    └── Tweet/
        ├── TweetCard.js
        ├── tweetdialog.js
        ├── Tweetlist.js
        └── tweetlistitem.js
Salin selepas log masuk

Tetapi memandangkan saiz permohonan itu tidak perlu pada tahap ini.

Tambahkan pembantu, jika diperlukan

Ketika kami membina permohonan kami, kami akan terus meningkat dalam kerumitan. Untuk menangani ini, kami mempunyai dua kaedah untuk memisahkan kebimbangan dan menarik logik dari templat komponen kami: penyampai dan utiliti. Penyampai menolak semua logik persembahan visual dari templat untuk memastikan lapisan pandangan bersih dan mudah. Utiliti mengumpul fungsi bersama untuk semua logik lain di bahagian depan yang tidak berkaitan dengan templat. Mari kita periksa ini sedikit lebih dekat.

Bersihkan templat dengan penyampai

Fikirkan profil Twitter. Apa jenis elemen yang anda lihat di sini di akaun saya?

Terdapat maklumat yang berkaitan secara langsung dengan pengguna saya: Nama, Handle, Deskripsi, Lokasi, Laman Web, Hari Lahir, Tarikh Mula. Terdapat juga pertuduhan persatuan antara model lain - berapa banyak pengguna lain yang mengikuti saya? Berapa banyak pengguna lain yang saya ikuti? Terdapat logik tambahan yang tidak ditangkap di halaman, seperti tweet saya, balasan, muat naik media, dan kandungan yang saya suka. Untuk menangkap semua logik presentasi ini dengan sewajarnya, kami boleh menambah fail tambahan dalam pokok fail kami untuk mengasingkan corak penyampai kami dari komponen JSX:

 Twitter/
└── blog/
    ├── Pengguna/
    │ ├── usercard.js
    │ ├── usercard.presenter.js
Salin selepas log masuk

Tolak logik ke dalam utiliti

Logik penyampaian tertentu adalah sangat asas bahawa ia boleh berguna di seluruh aplikasi tanpa mengira sama ada ia digunakan dalam rendering. Pemformatan mata wang, pengesahan, dan pemformatan timestamp adalah semua kes penggunaan di mana kita boleh mendapat manfaat daripada fungsi utiliti terpencil di seluruh aplikasi kami. Di mana mereka tinggal? Oleh kerana mereka merangkumi domain, utiliti boleh berada dalam folder mereka sendiri:

 Twitter/
    ├── App.css
    ├── App.js
    ├── App.test.js
    ├── blog/
    │ ├── homepage.js
    │ ├── tweetcard.js
    │ ├── tweetdialog.js
    │ ├── tweetlist.js
    │ ├── tweetlistitem.js
    │ ├── usercard.js
    │ ├── usercard.presenterjs
    │ └── userpage.js
    ├── interaksi/
    │ ├── ikutbutton.js
    │ ├── likeButton.js
    │ └── Sharebutton.js
    └── menggunakan/
         ├── Mata wang.js
         ├── time.js
         └── Pengesahan.js
Salin selepas log masuk

Tidak ada cara yang salah untuk mengatur aplikasi anda!

Akhirnya, pilihannya adalah milik anda. Ini hanya satu contoh untuk pelbagai cara anda boleh mengatur permohonan anda. Reka bentuk yang didorong oleh domain adalah alat yang berharga kerana ia memisahkan logik perniagaan dengan cara yang bermakna, mewujudkan perbezaan yang lebih jelas untuk kepakaran domain di kalangan pemaju, dan menyediakan peraturan untuk menganjurkan dan mengukur kod anda dengan mudah.

Tetapi jika anda mencari alternatif kepada kekacauan tradisional struktur fail aplikasi React, lihatlah reka bentuk yang didorong oleh domain. Ia mungkin hanya perkara itu.

Akhir sekali, jika anda menyukai kandungan semacam ini dan ingin mengetahui lebih lanjut mengenai Front-End, Pembangunan Antara Muka Pengguna, dan Reka Bentuk dan Penyelidikan UX (dianjurkan oleh pengalaman anda dalam industri), saya menjalankan surat berita percuma yang mungkin anda ingin periksa.

Atas ialah kandungan terperinci Reka bentuk yang didorong oleh domain dengan React. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Menjadikan Peralihan Svelte Khas pertama anda Menjadikan Peralihan Svelte Khas pertama anda Mar 15, 2025 am 11:08 AM

API Peralihan Svelte menyediakan cara untuk menghidupkan komponen apabila mereka memasuki atau meninggalkan dokumen, termasuk peralihan svelte adat.

Bekerja dengan Caching Graphql Bekerja dengan Caching Graphql Mar 19, 2025 am 09:36 AM

Sekiranya anda baru -baru ini mula bekerja dengan GraphQL, atau mengkaji semula kebaikan dan keburukannya, anda tidak akan ragu -ragu mendengar perkara seperti "Graphql tidak menyokong caching" atau

Tunjukkan, jangan beritahu Tunjukkan, jangan beritahu Mar 16, 2025 am 11:49 AM

Berapa banyak masa yang anda habiskan untuk merancang persembahan kandungan untuk laman web anda? Semasa anda menulis catatan blog baru atau membuat halaman baru, adakah anda memikirkan

Membina aplikasi Ethereum menggunakan redwood.js dan fauna Membina aplikasi Ethereum menggunakan redwood.js dan fauna Mar 28, 2025 am 09:18 AM

Dengan pendakian harga bitcoin baru -baru ini lebih dari 20k $ USD, dan baru -baru ini melanggar 30k, saya fikir ia patut mengambil menyelam yang mendalam kembali ke dalam mewujudkan Ethereum

Membuat Bragdoc anda sendiri dengan sebelas Membuat Bragdoc anda sendiri dengan sebelas Mar 18, 2025 am 11:23 AM

Tidak kira tahap tahap anda sebagai pemaju, tugas yang kami selesaikan -sama ada besar atau kecil -membuat kesan besar dalam pertumbuhan peribadi dan profesional kami.

Sedikit di CI/CD Sedikit di CI/CD Apr 02, 2025 pm 06:21 PM

Saya '

Vue 3 Vue 3 Apr 02, 2025 pm 06:32 PM

Ia ' s! Tahniah kepada pasukan Vue untuk menyelesaikannya, saya tahu ia adalah usaha besar dan lama datang. Semua dokumen baru juga.

Apa yang ada perintah npm? Apa yang ada perintah npm? Mar 15, 2025 am 11:36 AM

Perintah NPM menjalankan pelbagai tugas untuk anda, sama ada sebagai satu-satunya atau proses berjalan terus untuk perkara seperti memulakan pelayan atau menyusun kod.

See all articles