Ứng dụng playground cho React, giúp học và thực hành React một cách trực quan.
- 🔥 Editor với syntax highlighting và autocompletion
- ⚡ Live preview cho code React
- 📚 Nhiều bài học về React để thực hành
- 🌓 Theme sáng/tối
- 📱 Responsive design cho mọi thiết bị
- Node.js 18.0.0 trở lên
- npm 8.0.0 trở lên
# Kiểm tra phiên bản Node.js
node -v # Phải là v18.0.0 trở lên
# Clone repository
git clone https://github.com/your-username/react-playground.git
# Di chuyển vào thư mục
cd react-playground
# Cài đặt dependencies
npm install
# Chạy ứng dụng ở mode development
npm run devTạo một ứng dụng học tập tương tác với React gồm 2 phần chính:
- Cửa sổ viết code React (Editor)
- Cửa sổ hiển thị kết quả (Preview)
Ngoài ra, có thêm danh sách các kiến thức React, cho phép chọn chủ đề, xem mô tả và tự động nạp code mẫu để học và thực hành.
- Cho phép người dùng viết code React (JSX + JavaScript cơ bản).
- Hỗ trợ highlight cú pháp và auto-format.
- Sử dụng thư viện
@monaco-editor/reacthoặcreact-codemirror.
- Hiển thị kết quả chạy code từ editor.
- Báo lỗi nếu code sai cú pháp hoặc runtime.
- Có thể dùng
react-liveđể render code an toàn trong sandbox.
- Hiển thị các chủ đề học tập như:
useStateuseEffectComponent & PropsEvent HandlingConditional RenderingList & KeysuseContext
- Khi chọn chủ đề:
- Hiện phần mô tả kiến thức
- Tự động điền code mẫu vào editor
- Reset: quay lại code mặc định ban đầu
- Run: chạy lại đoạn code hiện tại (nếu không tự động)
| Thành phần | Công nghệ |
|---|---|
| Frontend | React.js (CRA hoặc Vite) |
| Code Editor | @monaco-editor/react hoặc react-codemirror |
| Live Preview | react-live |
| Styling | Tailwind CSS hoặc Styled Components |
| Data lưu bài học | JSON hoặc file nội bộ |
src/
├── components/
│ ├── Editor.jsx
│ ├── Preview.jsx
│ └── LessonSelector.jsx
├── lessons/
│ └── useState.json
├── App.jsx
├── main.jsx
└── index.cssFile: src/lessons/useState.json
{
"title": "useState",
"description": "useState là hook cơ bản để tạo state trong function component.",
"code": "function App() {\n const [count, setCount] = React.useState(0);\n return (\n <div>\n <p>Bạn đã click {count} lần</p>\n <button onClick={() => setCount(count + 1)}>Click me</button>\n </div>\n );\n}"
}Dự án này sử dụng các GitHub workflows tự động để đảm bảo package-lock.json luôn đồng bộ với package.json:
- validate-lockfile: Chạy tự động khi có PR chứa thay đổi trong package.json hoặc package-lock.json
- Cách kiểm tra thủ công: Chạy
npm run check-lockđể kiểm tra tính đồng bộ - Cách cập nhật: Chạy
npm run sync-lockđể cập nhật package-lock.json
# Xóa node_modules nếu có vấn đề với dependencies
rm -rf node_modules
# Cập nhật
npm install --package-lock-only
# Thêm vào git
git add
# Commit
git commit -m "chore: Update package-lock.json"
# Push
git push- Cho phép người dùng tự tạo bài học và lưu lại.
- Lưu code vào localStorage.
- Xuất code ra file .jsx.
- Thêm chế độ tối/sáng cho UI.
- Chọn một chủ đề từ danh sách.
- Đọc mô tả lý thuyết.
- Quan sát code mẫu và kết quả.
- Thử chỉnh sửa code để hiểu sâu hơn.
- Tạo thêm các biến thể của ví dụ.
