Dalam artikel ini, saya akan membimbing anda langkah demi langkah untuk mencipta tapak dokumentasi dinamik, boleh disesuaikan dengan mana-mana projek, di mana anda boleh menyambungkan dokumentasi anda ke pangkalan data untuk mengekstrak dan memaparkan data, memastikan maklumat sentiasa terkini. Kami juga akan meneroka cara untuk mengautomasikan keseluruhan proses, daripada penjanaan kandungan hingga penggunaan dalam awan dengan AWS.
Penyelesaian termasuk sokongan untuk carta dan gambar rajah, penyepaduan berterusan (CI/CD) menggunakan aliran kerja mudah dalam Tindakan GitHub dan penggunaan automatik menggunakan Terraform. Mari mulakan!
Dokumentasi dan kemas kininya merupakan proses penting dalam banyak syarikat yang membangunkan perisian, selalunya dijalankan menggunakan alat yang berbeza, kebanyakannya adalah penyelesaian berbayar.
Oleh itu, sejak kebelakangan ini, konsep "doc as code" telah muncul. Ini bermakna menggunakan alatan dan aliran kerja yang sama yang digunakan dalam pembangunan perisian untuk mengurus, versi dan menggunakan dokumentasi.
Pendekatan ini bukan sahaja membolehkan penjejakan dokumentasi yang lebih baik tetapi juga memudahkan penyelenggaraannya dan memastikan penjajaran dengan amalan terbaik yang sama yang digunakan dalam pembangunan perisian, bukan sahaja dalam kod tetapi juga dalam dokumentasi.
Untuk pembangunan tapak ini, adalah penting untuk memahami beberapa amalan dan alatan yang membolehkan kami melaksanakan pendekatan ini. Di bawah ialah senarai terperinci aspek yang paling penting untuk diliputi dalam tutorial ini.
MkDocs ialah penjana tapak statik yang ditulis dalam ?Python, direka khusus untuk mendokumentasikan projek. Matlamatnya adalah untuk memudahkan membuat dokumentasi menggunakan fail Markdown, yang mudah ditulis dan dibaca.
Dengan konfigurasi minimum, MkDocs menukarkan fail Markdown menjadi tapak web dokumentasi yang boleh dilayari dan tersusun dengan baik, menjadikannya sesuai untuk pembangun dan pasukan yang ingin memastikan dokumentasi mereka dikemas kini.
Bahan MkDocs ialah tema lanjutan untuk MkDocs yang mengikut garis panduan Reka Bentuk Bahan Google.
Mermaid ialah pustaka JavaScript untuk mencipta rajah dan carta daripada teks. Dengan menyepadukan dengan Bahan MkDocs, Mermaid membolehkan anda menjana visualisasi seperti carta alir, rajah perhubungan entiti dan carta lain dalam dokumentasi tanpa alat luaran.
Jinja ialah perpustakaan yang membenarkan membenamkan pembolehubah dan data daripada kamus Python ke dalam HTML, menjadikan halaman web dinamik. Pustaka ini biasanya digunakan untuk menjana HTML dinamik dan menghantar e-mel yang diperibadikan.
Docusaurus ialah projek sumber terbuka yang dibangunkan oleh Meta pada tahun 2007 yang memudahkan penciptaan, penggunaan dan penyelenggaraan tapak web dokumentasi dengan cara yang pantas dan cekap. Ia membenarkan penggunaan Markdown dan MDX untuk menulis kandungan, manakala terasnya yang dibina pada React membolehkan penyesuaian penuh gaya untuk memenuhi keperluan khusus projek.
Selain itu, Docusaurus menyokong Mermaid melalui pemalam @docusaurus/theme-mermaid, membolehkan kemasukan carta dan rajah terus dalam dokumentasi.
Rajah sebagai Kod ialah pendekatan yang membolehkan anda membuat gambar rajah melalui kod, dan bukannya menggunakan alat grafik tradisional. Daripada membina gambar rajah secara manual, anda menulis kod dalam fail teks untuk menentukan struktur, komponen dan sambungan gambar rajah anda.
Kod ini kemudiannya diterjemahkan ke dalam imej grafik, menjadikannya lebih mudah untuk disepadukan dan didokumenkan dalam projek perisian. Ia amat berguna untuk mencipta dan mengemas kini gambar rajah seni bina dan aliran secara pengaturcaraan.
Seperti yang dinyatakan sebelum ini, Rajah membolehkan anda menjana pelan tindakan menggunakan ikon teknologi awan utama. Perwakilan gambar rajah ini dilakukan melalui nod dan dalam contoh kami, kami akan menggunakan semua nod dan perkhidmatan AWS yang berkaitan dengan awan.
Untuk butiran lanjut tentang cara saya mencipta ini, anda boleh membaca artikel saya tentang Diagram as Code, dan pelaksanaan penuh boleh didapati dalam repositori ini:
Rajah sebagai Kod ialah pendekatan yang membolehkan anda membuat gambar rajah melalui kod dan bukannya alat grafik tradisional. Daripada membina gambar rajah secara manual, anda boleh menulis kod dalam fail teks untuk menentukan struktur, komponen dan sambungan gambar rajah anda.
Kod ini kemudiannya diterjemahkan ke dalam imej grafik, menjadikannya lebih mudah untuk disepadukan dan didokumenkan dalam projek perisian, di mana ia amat berguna untuk mencipta dan mengemas kini gambar rajah seni bina dan aliran secara atur cara.
Diagrams ialah ?Python library yang melaksanakan pendekatan Diagram as Code, membolehkan anda mencipta rajah infrastruktur seni bina dan jenis rajah lain melalui kod. Dengan Diagrams, anda boleh dengan mudah mentakrifkan komponen infrastruktur awan (seperti AWS, Azure dan GCP), elemen rangkaian, perkhidmatan perisian dan banyak lagi, semuanya dengan hanya beberapa baris kod.
Dalam kes penggunaan ini, saya akan membuat tapak dokumentasi untuk projek pembelajaran mesin yang melibatkan ? data hospital. Matlamatnya adalah untuk membina tapak dokumentasi interaktif menggunakan MkDocs pada mulanya dan kemudian memindahkannya ke Docusaurus. Tapak ini akan merangkumi komponen statik dan dinamik untuk memenuhi keperluan khusus, seperti membenamkan gambar rajah visual dan mengemas kini data secara dinamik daripada pangkalan data SQLite.
Atas sebab ini tapak dokumentasi kami akan mempunyai halaman berikut:
Dalam bahagian ini, kami akan melalui langkah-langkah untuk menyediakan projek dokumentasi menggunakan MkDocs dari awal dan menerangkan struktur direktori tersusunnya.
Untuk bermula, anda perlu memasang pustaka ?Python berikut:
Pasang MkDocs dan Bahannya
pip install mkdocs mkdocs-material
Pasang perpustakaan tambahan untuk membolehkan pengemaskinian kandungan dinamik
pip install aiosql pandas sqlite3 jinja2 shutil
Mulakan Projek
Mulakan dengan mencipta projek MkDocs baharu. Jalankan arahan berikut dalam terminal anda:
mkdocs new mkdocs cd mkdocs
Arahan ini mencipta projek MkDocs asas dengan struktur lalai.
Terokai Struktur Direktori
Setelah tapak MkDocs dibuat, anda perlu menambah fail dan folder berikut, kerana ia tidak disertakan secara lalai.
Ingat, pautan ke repositori disediakan pada penghujung siaran ini untuk rujukan anda, dan setiap komponen akan diterangkan secara terperinci di bawah.
pip install mkdocs mkdocs-material
Component | Directory | Description |
---|---|---|
Database (db) | db | Contains the SQLite database (hospital.db) and queries (metadata.sql, person.sql) to manage dynamic data. Learn more about managing SQL queries in Python in my previous article: Python Projects with SQL. |
?️ Templates & Pages | template | Markdown templates: index.md, tables.md, architecture.md, glossary.md. Supports Mermaid diagrams, embedded images, and database-driven content. |
?️ Static Content (docs) | docs | Final site generated by update.py, including images (img/) and dynamic content populated from template. |
? Infrastructure (infraestructure) | infraestructure | Terraform scripts (main.tf, variables.tf) to deploy an S3 bucket for documentation hosting. |
Setelah kami menyediakan struktur projek kami, kami akan mengkonfigurasinya langkah demi langkah, bermula dengan fail mkdocs.yml. Fail ini mentakrifkan struktur dan tetapan untuk tapak dokumentasi anda. Begini cara ia harus distrukturkan:
mkdocs.yml
pip install mkdocs mkdocs-material
Dalam fail konfigurasi ini, anda boleh melihat terutamanya dalam bahagian nav halaman yang boleh diakses daripada menu. Kemudian, kami menentukan sambungan Mermaid, yang akan diterangkan dalam bahagian seterusnya. Akhir sekali, bahagian tema menggunakan tema Bahan, membolehkan penggayaan dan komponen tersedia dalam pustaka ini.
Seperti yang dinyatakan sebelum ini, Mermaid ialah pustaka JavaScript untuk mencipta rajah dan carta daripada teks. Di bawah, kita akan melihat beberapa contoh. Dalam kes kami, kami akan menggunakannya untuk menjana Rajah Perhubungan Entiti (ERD) pada halaman jadual dokumentasi.
Dalam repositori, anda akan dapat melihat cara membina kod ini berdasarkan Rajah Perhubungan Entiti (ERD) yang terdapat dalam dokumentasi rasmi Synthea. Anda juga boleh menyemak contoh halaman jadual dalam pautan berikut: tables.md.
Untuk mendayakan penjanaan kandungan dinamik untuk tapak dokumentasi kami, kami akan menggunakan Jinja untuk memproses templat dan menggantikan ruang letak dengan data sebenar. Di bawah ialah pecahan langkah demi langkah:
Sediakan Folder templat
Buat folder bernama templat untuk menyimpan semua fail Markdown untuk tapak. Fail ini harus mengandungi ruang letak. Sebagai contoh, dalam index.md, anda mungkin mempunyai ruang letak seperti {{database.version_date}} dan {{database.version}}.
Gunakan Pemegang Tempat
Pemegang tempat ialah pembolehubah dinamik dalam fail Markdown. Pembolehubah ini akan dikemas kini secara automatik menggunakan kamus Python untuk menyuntik data yang berkaitan.
Jana Kandungan Dinamik dengan update.py
pip install mkdocs mkdocs-material
pip install aiosql pandas sqlite3 jinja2 shutil
Dengan mengikut langkah ini, anda boleh mengautomasikan proses pengemaskinian untuk tapak dokumentasi anda, memastikan kandungan kekal dinamik dan relevan tanpa suntingan manual.
Dalam contoh seterusnya, kami akan mengemas kini kandungan dalam fail tables.md untuk menunjukkan contoh jadual orang daripada pangkalan data. Untuk melakukan ini, kami akan mencipta pemegang tempat {{table.person}} dalam fail Markdown. Ideanya ialah untuk mengambil data secara dinamik daripada jadual orang, kemudian gunakan pustaka Jinja bersama-sama dengan panda untuk menukar hasil pertanyaan kepada format jadual Markdown.
Berikut ialah contoh bagaimana fail tables.md kelihatan dengan pemegang tempat:
mkdocs new mkdocs cd mkdocs
Prosesnya adalah seperti berikut:
? docs/ ├── ? img/ ├── `architecture.md` ├── `glossary.md` ├── `index.md` ├── `tables.md` ├── ? template/ │ ├── ? db/ │ │ ├── ? data/ │ │ │ ├── hospital.db │ │ ├── ? queries/ │ ├── `architecture.md` │ ├── `glossary.md` │ ├── `index.md` │ ├── `tables.md` │ └── `update.py` ? infraestructure/ ? github/ ├── ? workflows/ │ ├── main.yml ? mkdocs.yml
Dengan cara ini, dokumentasi sentiasa mencerminkan data terkini, memaparkan contoh dinamik berdasarkan kandungan sebenar daripada pangkalan data.
Dalam bahagian berikut, saya akan memberikan langkah dan pandangan terperinci tentang cara melaksanakan tapak dokumentasi menggunakan Docusaurus. Ini termasuk pilihan persediaan, penyesuaian dan penggunaan.
Untuk bermula dengan Docusaurus, kami mengikuti proses persediaan pantas, yang hampir sama dengan langkah yang kami gunakan untuk MkDocs tetapi dengan alatan yang berbeza.
pip install mkdocs mkdocs-material
pip install aiosql pandas sqlite3 jinja2 shutil
mkdocs new mkdocs cd mkdocs
Fail konfigurasi docusaurus.config.js ialah tempat kami menyesuaikan tajuk, tema, navigasi dan mendayakan ciri seperti Mermaid untuk pemaparan rajah.
Contoh coretan untuk mendayakan Mermaid:
pip install mkdocs mkdocs-material
Untuk menyesuaikan halaman utama, kami mengubah suai fail src/components/HomepageFeatures/index.js. Di sini, anda boleh melaraskan objek FeatureList untuk mengemas kini ciri yang dipaparkan pada halaman utama.
Sama seperti dalam MkDocs, Docusaurus menyokong Fail Markdown untuk kandungan, dan kami menyusun struktur seperti berikut:
pip install aiosql pandas sqlite3 jinja2 shutil
__category__.json Contoh:
mkdocs new mkdocs cd mkdocs
Untuk memasukkan kandungan dinamik, seperti jadual pangkalan data, kami menggunakan skrip ?Python bernama update.py, yang boleh anda temui dalam repositori.
Skrip ini mengambil data daripada pangkalan data SQLite dan memproses fail Markdown yang disimpan dalam folder templat. Ia kemudian mengemas kini fail ini dengan data yang diambil dan menyalinnya ke dalam folder dokumen, menyediakannya untuk pemaparan tapak.
Aliran kerja ini memastikan kandungan kekal terkini dan sedia untuk digunakan, mengikut pendekatan yang serupa dengan apa yang kami laksanakan dengan MkDocs.
Dalam bahagian ini, kami akan merangkumi proses penggunaan untuk kedua-dua MkDocs dan Docusaurus menggunakan AWS S3 untuk pengehosan. Walaupun langkah penggunaan adalah sama untuk kedua-dua alatan, proses pemasangan berbeza, dengan MkDocs berasaskan Python dan Docusaurus berasaskan JavaScript.
Untuk menggunakan tapak dokumentasi statik ke AWS S3, kami menggunakan Terraform untuk menyediakan dan mengkonfigurasi sumber yang diperlukan. Persediaan mentakrifkan baldi S3, mendayakan pengehosan tapak web statik dan mengkonfigurasi akses awam dengan dasar baldi untuk membenarkan akses baca sahaja. Anda boleh mencari fail main.tf dalam repositori.
Anda boleh mengakses fail Terraform yang lengkap dan konfigurasi yang sepadan untuk mengatur letak tapak dalam repositori:
Fail Konfigurasi Terraform:
Aliran Kerja Tindakan GitHub untuk Penerapan Automatik: Saluran paip CI/CD untuk mengautomasikan proses penempatan turut disertakan dalam repositori.
Konfigurasi Tindakan GitHub
Pastikan untuk mengkonfigurasi bukti kelayakan AWS anda dalam Rahsia repositori GitHub di bawah Tetapan > Rahsia > Tindakan. Ini akan membolehkan GitHub Actions mengakses akaun AWS anda dengan selamat dan melakukan tindakan seperti memuat naik fail ke S3 apabila anda menolak perubahan pada cawangan utama.
Di bawah ialah pautan kepada semua kod untuk menggunakan tapak dokumentasi anda. Jika anda rasa ia berguna, anda boleh tinggalkan bintang ⭐️ dan ikuti saya untuk menerima pemberitahuan artikel baharu. Ini akan membantu saya berkembang dalam komuniti teknologi dan mencipta lebih banyak kandungan.
MkDocs ialah penyelesaian terbaik untuk melaksanakan portal dokumentasi yang boleh dikemas kini dengan mudah dengan kod, membantu memastikan dokumentasi projek pembangunan perisian anda dikemas kini dan berversi.
Dalam repositori ini, saya telah mencipta tapak ringkas untuk mendokumentasikan model data dan projek pembelajaran mesin.
Dokumentasi akan termasuk carta, jadual dan contoh seni bina, menyediakan panduan yang komprehensif dan mudah difahami tentang cara melaksanakan rangka kerja ini dalam kombinasi dengan dua pustaka ?Python yang lain.
Dokumentasi dan kemas kininya merupakan proses penting dalam banyak syarikat yang membangunkan perisian, di mana proses ini dijalankan menggunakan alatan yang berbeza, kebanyakannya adalah penyelesaian berbayar.
Oleh itu, sejak kebelakangan ini, konsep "doc as code" telah muncul. Ini bermakna menggunakan alatan dan aliran kerja yang sama yang digunakan dalam pembangunan perisian untuk mengurus, versi dan…
Docusaurus ialah penyelesaian terbaik untuk melaksanakan portal dokumentasi yang boleh dikemas kini dengan mudah dengan kod, membantu memastikan dokumentasi projek pembangunan perisian anda dikemas kini dan berversi.
Dalam repositori ini, saya telah mencipta tapak ringkas untuk mendokumentasikan model data dan projek pembelajaran mesin.
Dokumentasi akan termasuk carta, jadual dan contoh seni bina, menyediakan panduan yang komprehensif dan mudah difahami tentang cara melaksanakan rangka kerja ini dalam kombinasi dengan dua pustaka ?Python yang lain.
Dokumentasi dan kemas kininya merupakan proses penting dalam banyak syarikat yang membangunkan perisian, di mana proses ini dijalankan menggunakan alatan yang berbeza, kebanyakannya adalah penyelesaian berbayar.
Oleh itu, sejak kebelakangan ini, konsep "doc as code" telah muncul. Ini bermakna menggunakan alatan dan aliran kerja yang sama yang digunakan dalam pembangunan perisian untuk mengurus, versi dan menggunakan dokumentasi…
Kedua-dua penyelesaian adalah mudah untuk dilaksanakan, tetapi dalam item berikut, kita boleh meneroka beberapa perbezaan dan apakah penyelesaian terbaik bergantung pada konteks, pengetahuan dan kerumitan yang mungkin anda perlu laksanakan.
Atas ialah kandungan terperinci Meletakkan Docs-as-Code pada AWS: Membina Tapak Dokumentasi Dinamik dalam MkDocs dan Docusaurus. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!