Tài liệu này mô tả chi tiết cấu trúc dữ liệu JSON và cách dữ liệu được hiển thị trên giao diện web.
Dự án sử dụng hai loại file JSON chính:
File data/intro.json chứa thông tin giới thiệu và metadata của dự án:
{
"title": "ĐẠO CỦA CODE",
"subtitle": "Nghệ Thuật Vĩnh Cửu của Vibe Coding",
"author": {
"original": "Lão Tử",
"adaptation": "Rick Rubin"
},
"quote": {
"text": "Trích dẫn giới thiệu...",
"author": "Tác giả trích dẫn"
},
"introduction": [
{
"title": "Giới thiệu về tác phẩm",
"paragraphs": [
"Đoạn giới thiệu 1",
"Đoạn giới thiệu 2"
]
},
{
"title": "Về bản dịch và trang web",
"paragraphs": [
"Thông tin về bản dịch"
]
}
],
"totalChapters": 81
}
Mỗi file data/chapter-X.json chứa nội dung của một chương:
{
"id": 48,
"title": "Chương 48",
"content": {
"verses": [
{
"id": "verse-1",
"lines": [
"Dòng 1 đoạn thơ 1",
"Dòng 2 đoạn thơ 1",
"..."
]
},
{
"id": "verse-2",
"lines": [
"Dòng 1 đoạn thơ 2",
"Dòng 2 đoạn thơ 2",
"..."
]
}
],
"commentary": [
{
"id": "comment-1",
"content": "Nội dung chú thích 1 với định dạng **Markdown**"
},
{
"id": "comment-2",
"content": "Nội dung chú thích 2"
}
]
}
}
Trang chủ hiển thị thông tin từ file intro.json:
title) và tiêu đề phụ (subtitle)author)quote)introduction)totalChapters)Trang chi tiết chương hiển thị thông tin từ file chapter-X.json:
title)Mỗi đoạn thơ (verses) được hiển thị như sau:
<p class="verse"><br><div class="verse-container">
<p class="verse" id="verse-1">
Dòng 1 đoạn thơ 1<br>
Dòng 2 đoạn thơ 1
</p>
<p class="verse" id="verse-2">
Dòng 1 đoạn thơ 2<br>
Dòng 2 đoạn thơ 2
</p>
</div>
Phần chú thích được hiển thị như sau:
<div class="commentary-item"><p>**text** → <strong>text</strong>*text* → <em>text</em>- → Danh sách có dấu đầu dòngcode → <code>code</code>[text](url) → <a href="url">text</a><div class="comment-section">
<h3>Chú giải</h3>
<blockquote class="comment-quote fade-in">
<div id="comment-1" class="commentary-item">
<p>Nội dung chú thích 1 với định dạng <strong>Markdown</strong></p>
</div>
<div id="comment-2" class="commentary-item">
<p>Nội dung chú thích 2</p>
</div>
</blockquote>
</div>
assets/js/main.js đọc dữ liệu từ JSON thông qua API fetch()renderChapterContent() tạo HTML cho phần nội dung chươngrenderCommentaryContent() tạo HTML cho phần chú thíchparseMarkdown() chuyển đổi cú pháp Markdown thành HTMLMọi kiểu dáng đều được định nghĩa trong các file CSS trong thư mục assets/css/:
.verse: Styling cho đoạn thơ.comment-section: Styling cho phần chú thích.commentary-item: Styling cho từng đoạn chú thíchcommentary), không phải trong phần nội dung chính (verses)fade-in và các hiệu ứng khác được áp dụng qua các lớp CSS