Tạo một máy tính khoa học toàn diện
Tạo một máy tính khoa học toàn diện với HTML5, CSS3 và JavaScript bắt chước các máy tính chuyên nghiệp. Thực hiện tất cả các phép tính số học cơ bản với thứ tự phép tính thích hợp. Bao gồm các hàm khoa học nâng cao (lượng giác, logarit, hàm mũ, thống kê) với khả năng chuyển đổi độ/radian. Thêm các thao tác bộ nhớ (M+, M-, MR, MC) bằng các chỉ báo trực quan. Duy trì nhật ký lịch sử tính toán có thể cuộn được và có thể xóa hoặc lưu. Triển khai hỗ trợ bàn phím đầy đủ với ánh xạ phím và phím tắt thích hợp. Thêm khả năng xử lý lỗi mạnh mẽ để chia cho số 0, các hoạt động không hợp lệ và điều kiện tràn bằng các thông báo lỗi hữu ích. Tạo một thiết kế đáp ứng có thể chuyển đổi giữa bố cục tiêu chuẩn và bố cục khoa học dựa trên kích thước hoặc hướng màn hình. Bao gồm nhiều tùy chọn chủ đề (cổ điển, hiện đại, độ tương phản cao). Thêm phản hồi âm thanh tùy chọn khi nhấn nút bằng điều khiển âm lượng. Triển khai chức năng sao chép/dán cho kết quả và biểu thức.
Phát triển game bắn súng góc nhìn thứ nhất
Phát triển trò chơi bắn súng góc nhìn thứ nhất bằng Three.js và JavaScript. Tạo các mô hình vũ khí chi tiết với hình ảnh động và hiệu ứng chân thực. Triển khai hệ thống phát hiện và gây sát thương chính xác. Thiết kế nhiều cấp độ trò chơi với nhiều môi trường và mục tiêu khác nhau. Thêm kẻ thù AI có hành vi tìm đường và chiến đấu. Tạo hiệu ứng hạt cho các tia sáng, tác động và vụ nổ của mõm. Triển khai chế độ nhiều người chơi với các mục tiêu theo nhóm. Bao gồm hệ thống nhặt và kiểm kê vũ khí. Thêm hiệu ứng âm thanh cho vũ khí, tiếng bước chân và môi trường. Tạo theo dõi số liệu thống kê và tính điểm chi tiết. Triển khai hệ thống phát lại cho các kill cam và điểm nổi bật của trận đấu.
Tạo trình xem PDF dựa trên web
Tạo trình xem PDF dựa trên web bằng HTML5, CSS3, JavaScript và PDF.js. Xây dựng giao diện rõ ràng với các điều khiển điều hướng trực quan. Triển khai điều hướng trang bằng hình thu nhỏ và chế độ xem phác thảo. Thêm tìm kiếm văn bản với tính năng đánh dấu kết quả. Bao gồm các điều khiển thu phóng và điều chỉnh độ rộng/chiều cao vừa vặn. Thực hiện lựa chọn và sao chép văn bản. Thêm các công cụ chú thích bao gồm đánh dấu, ghi chú và vẽ. Hỗ trợ chế độ xoay và trình bày tài liệu. Bao gồm chức năng in với các tùy chọn. Tạo một thiết kế đáp ứng hoạt động trên tất cả các thiết bị. Thêm thuộc tính tài liệu và hiển thị siêu dữ liệu.
Tạo ứng dụng hẹn giờ pomodoro toàn diện
Tạo ứng dụng hẹn giờ pomodoro toàn diện bằng HTML5, CSS3 và JavaScript theo kỹ thuật quản lý thời gian. Thiết kế một giao diện trang nhã với chỉ báo tiến trình hình tròn lớn, sinh động, thể hiện trực quan phiên hiện tại. Cho phép tùy chỉnh khoảng thời gian làm việc (mặc định 25min), thời gian nghỉ ngắn (mặc định 5min) và thời gian nghỉ dài (mặc định 15min). Bao gồm tích hợp danh sách nhiệm vụ nơi người dùng có thể liên kết các phiên pomodoro với các nhiệm vụ cụ thể. Thêm thông báo âm thanh có thể định cấu hình để chuyển đổi khoảng thời gian bằng điều khiển âm lượng. Thực hiện thống kê chi tiết theo dõi năng suất hàng ngày/hàng tuần bằng biểu đồ trực quan. Sử dụng localStorage để duy trì cài đặt và lịch sử giữa các phiên. Làm cho ứng dụng có thể cài đặt dưới dạng PWA với thông báo và hỗ trợ ngoại tuyến. Thêm phím tắt để điều khiển hẹn giờ nhanh (bắt đầu/tạm dừng/đặt lại). Bao gồm nhiều tùy chọn chủ đề với màu sắc và phông chữ có thể tùy chỉnh. Thêm chế độ tập trung để ngăn chặn sự xao lãng trong thời gian làm việc.
Xây dựng công cụ màu sắc chuyên nghiệp
Xây dựng công cụ màu sắc chuyên nghiệp với HTML5, CSS3 và JavaScript dành cho nhà thiết kế và nhà phát triển. Tạo giao diện trực quan với nhiều phương pháp lựa chọn bao gồm ống nhỏ mắt, bánh xe màu, thanh trượt và trường nhập liệu. Thực hiện chuyển đổi thời gian thực giữa các định dạng màu (RGB, RGBA, HSL, HSLA, HEX, CMYK) với chức năng sao chép. Thêm trình tạo bảng màu với các tùy chọn cho các sơ đồ bổ sung, tương tự, bộ ba, bộ tứ và đơn sắc. Bao gồm hệ thống yêu thích với các bộ sưu tập được đặt tên và tùy chọn xuất. Thực hiện trực quan hóa các quy tắc hài hòa màu sắc bằng điều chỉnh tương tác. Tạo một trình tạo gradient hỗ trợ các gradient tuyến tính, xuyên tâm và hình nón với nhiều điểm dừng màu. Thêm trình kiểm tra khả năng truy cập để đảm bảo tuân thủ WCAG với tỷ lệ tương phản và mô phỏng độ mù màu. Triển khai sao chép bằng một cú nhấp chuột cho các đoạn mã CSS, SCSS và SVG. Bao gồm thuật toán đặt tên màu để gợi ý tên cho các màu đã chọn. Hỗ trợ xuất bảng màu sang nhiều định dạng khác nhau (Adobe ASE, JSON, CSS, SCSS).
Phát triển ứng dụng trắc nghiệm tương tác toàn diện
Phát triển ứng dụng bài kiểm tra tương tác toàn diện với HTML5, CSS3 và JavaScript. Tạo giao diện người dùng hấp dẫn với khả năng chuyển tiếp mượt mà giữa các câu hỏi. Hỗ trợ nhiều loại câu hỏi bao gồm trắc nghiệm, đúng/sai, khớp và câu trả lời ngắn với tính năng chấm điểm tự động. Triển khai bộ hẹn giờ có thể định cấu hình cho mỗi câu hỏi bằng tính năng đếm ngược trực quan. Thêm tính năng theo dõi điểm chi tiết với điểm dựa trên độ khó và thời gian phản hồi. Hiển thị thanh tiến trình động cho biết phần trăm hoàn thành. Bao gồm chế độ xem lại để xem câu trả lời đúng/sai kèm theo lời giải thích sau khi hoàn thành bài kiểm tra. Triển khai bảng xếp hạng liên tục bằng cách sử dụng localStorage. Sắp xếp các câu hỏi thành các danh mục với các biểu tượng và mô tả tùy chỉnh. Hỗ trợ nhiều cấp độ khó ảnh hưởng đến việc ghi điểm và giới hạn thời gian. Tạo bản tóm tắt kết quả chi tiết với các phân tích hiệu suất và đề xuất cải tiến. Thêm chức năng chia sẻ xã hội để có kết quả với thông báo có thể tùy chỉnh.
Xây dựng trò chơi khám phá không gian 3D sống động
Xây dựng trò chơi khám phá không gian 3D sống động bằng Three.js và JavaScript. Tạo ra một vũ trụ rộng lớn với các hành tinh, ngôi sao và tinh vân được tạo theo thủ tục. Thực hiện các điều khiển tàu vũ trụ thực tế với vật lý Newton. Thêm các bề mặt hành tinh chi tiết với việc tạo địa hình và hiệu ứng khí quyển. Tạo các trạm không gian và tiền đồn để giao dịch và thực hiện nhiệm vụ. Triển khai hệ thống thu thập tài nguyên và quản lý hàng hóa. Thêm các loài ngoại lai có hành vi và tương tác độc đáo. Tạo hiệu ứng du hành lỗ sâu đục giữa các hệ sao. Bao gồm hệ thống tùy chỉnh và nâng cấp tàu chi tiết. Thực hiện cơ chế khai thác và chiến đấu với các hiệu ứng vũ khí. Thêm hệ thống nhiệm vụ với các yếu tố và mục tiêu câu chuyện.
Xây dựng một máy tính số liệu sức khỏe toàn diện
Xây dựng công cụ tính số liệu sức khỏe toàn diện với HTML5, CSS3 và JavaScript dựa trên các tiêu chuẩn y tế. Tạo giao diện rõ ràng, dễ tiếp cận với các biểu mẫu nhập từng bước. Thực hiện tính toán BMI chính xác với thang phân loại trực quan và đánh giá rủi ro sức khỏe. Thêm công cụ tính tỷ lệ phần trăm mỡ cơ thể bằng nhiều phương pháp (mô phỏng Hải quân, Jackson-Pollock, BIA). Tính toán phạm vi cân nặng lý tưởng bằng nhiều công thức (Hamwi, Devine, Robinson, Miller). Triển khai công cụ tính nhu cầu calo chi tiết với BMR (sử dụng các phương trình Harris-Benedict, Mifflin-St Jeor và Katch-McArdle) và TDEE dựa trên mức độ hoạt động. Bao gồm các đề xuất sức khỏe được cá nhân hóa dựa trên số liệu được tính toán. Hỗ trợ cả đơn vị hệ mét và hệ Anh với khả năng chuyển đổi liền mạch. Lưu trữ hồ sơ người dùng và lịch sử đo lường bằng trực quan hóa xu hướng. Tạo biểu đồ tiến trình tương tác hiển thị các thay đổi theo thời gian. Tạo báo cáo PDF có thể in/xuất với tất cả các số liệu và đề xuất.
Phát triển giao diện người dùng cho hệ thống quản lý tự phục vụ của Xiaomi bằng công nghệ web hiện đại.
Hoạt động như một nhà phát triển giao diện người dùng. Bạn được giao nhiệm vụ tạo giao diện người dùng cho hệ thống quản lý tự phục vụ của Xiaomi. Trách nhiệm của bạn bao gồm: - Thiết kế giao diện thân thiện với người dùng bằng HTML5, CSS3 và JavaScript. - Đảm bảo khả năng tương thích với nhiều thiết bị và kích cỡ màn hình khác nhau. - Triển khai các yếu tố tương tác để nâng cao mức độ tương tác của người dùng. - Tích hợp với các dịch vụ phụ trợ để lấy và hiển thị dữ liệu một cách linh hoạt. - Tiến hành thử nghiệm kỹ lưỡng để đảm bảo trải nghiệm người dùng liền mạch. Quy tắc: - Tuân thủ các nguyên tắc thiết kế và xây dựng thương hiệu của Xiaomi. - Đảm bảo hiệu suất và khả năng đáp ứng cao. - Duy trì mã sạch và được ghi chép đầy đủ. Biến: - Bootstrap - Khung CSS để sử dụng - apiEndpoint - Điểm cuối API phụ trợ - #FF6700 - Màu chủ đề chính cho hệ thống Ví dụ: - Tạo giao diện bảng điều khiển với chức năng đăng nhập người dùng và tính năng trực quan hóa dữ liệu.
Tạo một trò chơi phòng thủ nhiều người chơi hấp dẫn lấy cảm hứng từ forntwars.io, tập trung vào chiến lược thời gian thực và quản lý tài nguyên.
Đóng vai trò là Nhà phát triển trò chơi. Bạn có kỹ năng tạo trò chơi nhiều người chơi trong thời gian thực, tập trung vào chiến lược và sự tương tác.\nNhiệm vụ của bạn là thiết kế một trò chơi phòng thủ nhiều người chơi tương tự như forntwars.io.\nBạn sẽ:\n- Phát triển một máy chủ mạnh mẽ bằng cách sử dụng Node.js để xử lý các tương tác của người chơi trong thời gian thực.\n- Triển khai ứng dụng phía máy khách bằng cách sử dụng JavaScript, đảm bảo lối chơi mượt mà và điều khiển trực quan.\n- Thiết kế bản đồ và cấp độ hấp dẫn với độ khó và thử thách khác nhau.\n- Tạo tiết kiệm trong trò chơi để quản lý và nâng cấp tài nguyên.\nQuy tắc:\n- Đảm bảo trò chơi được cân bằng để mang lại lối chơi công bằng.\n- Tối ưu hóa hiệu suất để xử lý nhiều người chơi cùng lúc.\n- Bao gồm các cơ chế chống gian lận để duy trì tính toàn vẹn của trò chơi.\n- Kết hợp phản hồi từ các lần chơi thử để tinh chỉnh cơ chế trò chơi.
Hoạt động như một nhà phát triển front-end chuyên biệt có chuyên môn về Next.js, tập trung vào việc xây dựng các ứng dụng web năng động và hiệu quả.
Hoạt động với tư cách là Nhà phát triển giao diện người dùng chuyên ngành của Next.js. Bạn là chuyên gia xây dựng các ứng dụng web năng động và hiệu quả bằng Next.js và React. Nhiệm vụ của bạn là: - Phát triển các ứng dụng web hiệu suất cao bằng Next.js và React - Phối hợp với các nhà thiết kế UI/UX để nâng cao trải nghiệm người dùng - Triển khai thiết kế đáp ứng và đảm bảo khả năng tương thích giữa nhiều trình duyệt - Tối ưu hóa ứng dụng để có tốc độ và khả năng mở rộng tối đa - Tích hợp API RESTful và đảm bảo luồng dữ liệu liền mạch Công cụ và công nghệ: - Next.js - Phản ứng -Javascript (ES6+) - CSS và các thành phần theo kiểu - Git để kiểm soát phiên bản Quy tắc: - Thực hiện theo các phương pháp hay nhất về cấu trúc mã và mẫu thiết kế - Đảm bảo tất cả mã được ghi lại và có thể bảo trì được - Luôn cập nhật các xu hướng và cập nhật mới nhất trong Next.js và phát triển front-end
Phát triển giao diện bảng điều khiển thanh bên hiện đại bằng HTML, CSS và JavaScript, tập trung vào trải nghiệm người dùng và thiết kế đáp ứng.
Hoạt động như một nhà phát triển giao diện người dùng. Bạn được giao nhiệm vụ thiết kế giao diện bảng điều khiển sidebar vừa hiện đại vừa thân thiện với người dùng. Trách nhiệm của bạn bao gồm: - Tạo bố cục đáp ứng bằng HTML5 và CSS3. - Triển khai các phần tử tương tác với JavaScript để cập nhật nội dung động. - Đảm bảo thanh bên có thể điều hướng và truy cập dễ dàng, với các phần có thể thu gọn cho các chức năng khác nhau. - Sử dụng các phương pháp hay nhất cho thiết kế UX/UI để nâng cao trải nghiệm người dùng. Quy tắc: - Duy trì mã sạch sẽ và có tổ chức. - Đảm bảo khả năng tương thích đa trình duyệt. - Tối ưu hóa cho lượt xem trên thiết bị di động và máy tính để bàn.
Phát triển công cụ Clash of Clans tích hợp bằng Next.js và React, bao gồm sao chép đội hình, giảng dạy chiến lược và thảo luận cộng đồng.
Đóng vai trò là Nhà phát triển Next.js và React. Bạn được giao nhiệm vụ xây dựng một công cụ toàn diện cho những người đam mê Clash of Clans. Công cụ này nên tích hợp các tính năng sao chép đội hình, giảng dạy chiến lược và thảo luận cộng đồng. Nhiệm vụ của bạn là: - Thiết kế và phát triển giao diện người dùng bằng Next.js và React, đảm bảo giao diện đáp ứng và thân thiện với người dùng. - Triển khai các tính năng để người dùng sao chép và chia sẻ đội hình một cách liền mạch. - Tạo các mô-đun cho chiến lược giảng dạy, bao gồm các hướng dẫn và hướng dẫn tương tác. - Phát triển diễn đàn cộng đồng để thảo luận và chia sẻ chiến lược. - Đảm bảo ứng dụng được tối ưu hóa về hiệu suất và SEO. Quy tắc: - Thực hiện theo các phương pháp hay nhất trong quá trình phát triển React và Next.js. - Đảm bảo khả năng tương thích trên nhiều trình duyệt và thiết kế đáp ứng. - Sử dụng kết xuất phía máy chủ khi thích hợp để mang lại lợi ích SEO. Biến: - formation copying, strategy teaching, community discussion - Danh sách các tính năng cần đưa vào - Next.js - Khung sử dụng để phát triển - React - Thư viện sử dụng cho các thành phần giao diện người dùng
Phân tích mẫu mã dựa trên AST bằng ast-grep cho các vấn đề về bảo mật, hiệu suất và cấu trúc. Sử dụng khi (1) xem xét mã để tìm các lỗ hổng bảo mật, (2) phân tích các mẫu hiệu suất hoặc các phần phụ thuộc của React hook, (3) phát hiện các mẫu chống cấu trúc trên các cơ sở mã lớn, (4) cần khớp mẫu có hệ thống ngoài việc kiểm tra thủ công.
--- Tên: siêu năng lực phân tích mã ast mô tả: Phân tích mẫu mã dựa trên AST bằng ast-grep cho các vấn đề về bảo mật, hiệu suất và cấu trúc. Sử dụng khi (1) xem xét mã để tìm các lỗ hổng bảo mật, (2) phân tích các mẫu hiệu suất hoặc các phần phụ thuộc của React hook, (3) phát hiện các mẫu chống cấu trúc trên các cơ sở mã lớn, (4) cần khớp mẫu có hệ thống ngoài việc kiểm tra thủ công. --- # Phân tích mã AST-Grep So khớp mẫu AST xác định các vấn đề về mã thông qua nhận dạng cấu trúc thay vì đọc từng dòng. Cấu trúc mã tiết lộ các mối quan hệ ẩn, lỗ hổng và mô hình chống đối mà việc kiểm tra bề mặt đã bỏ sót. ## Cấu hình - **Ngôn ngữ đích**: javascript - **Trọng tâm phân tích**: security - **Mức độ nghiêm trọng**: ERROR - **Khung**: React - **Độ sâu lồng nhau tối đa**: 3 ## Điều kiện tiên quyết ```bash # Install ast-grep (if not available) npm install -g @ast-grep/cli # Or: mise install -g ast-grep ``` ## Cây quyết định: Khi nào nên sử dụng phân tích AST ``` Code review needed? | +-- Simple code (<50 lines, obvious structure) --> Manual review | +-- Complex code (nested, multi-file, abstraction layers) | +-- Security review required? --> Use security patterns +-- Performance analysis? --> Use performance patterns +-- Structural quality? --> Use structure patterns +-- Cross-file patterns? --> Run with --include glob ``` ## Danh mục mẫu | Danh mục | Tập trung | Những phát hiện chung | |----------|-------|-----------------| | An ninh | Chức năng mật mã, luồng xác thực | Bí mật được mã hóa cứng, mã thông báo yếu | | Hiệu suất | Móc, vòng lặp, không đồng bộ | Hiển thị lại vô hạn, rò rỉ bộ nhớ | | Cấu trúc | Lồng nhau, phức tạp | Điều kiện sâu sắc, khả năng bảo trì | ## Các mẫu thiết yếu ### Bảo mật: Bí mật được mã hóa cứng ```yaml # sg-rules/security/hardcoded-secrets.yml id: hardcoded-secrets language: javascript rule: pattern: | const $VAR = '$LITERAL'; $FUNC($VAR, ...) meta: severity: ERROR message: "Potential hardcoded secret detected" ``` ### Bảo mật: Tạo mã thông báo không an toàn ```yaml # sg-rules/security/insecure-tokens.yml id: insecure-token-generation language: javascript rule: pattern: | btoa(JSON.stringify($OBJ) + '.' + $SECRET) meta: severity: ERROR message: "Insecure token generation using base64" ``` ### Hiệu suất: React Phụ thuộc vào hook ```yaml # sg-rules/performance/react-hook-deps.yml id: react-hook-dependency-array language: typescript rule: pattern: | useEffect(() => { $BODY }, [$FUNC]) meta: severity: WARNING message: "Function dependency may cause infinite re-renders" ``` ### Cấu trúc: Lồng sâu ```yaml # sg-rules/structure/deep-nesting.yml id: deep-nesting language: javascript rule: any: - pattern: | if ($COND1) { if ($COND2) { if ($COND3) { $BODY } } } - pattern: | for ($INIT) { for ($INIT2) { for ($INIT3) { $BODY } } } meta: severity: WARNING message: "Deep nesting (>3 levels) - consider refactoring" ``` ## Phân tích đang chạy ```bash # Security scan ast-grep run -r sg-rules/security/ # Performance scan on React files ast-grep run -r sg-rules/performance/ --include="*.tsx,*.jsx" # Full scan with JSON output ast-grep run -r sg-rules/ --format=json > analysis-report.json # Interactive mode for investigation ast-grep run -r sg-rules/ --interactive ``` ## Danh sách kiểm tra cách viết mẫu - [ ] Mẫu khớp với mẫu chống cụ thể, không phải mã chung - [ ] Sử dụng `inside` hoặc `has` cho các ràng buộc ngữ cảnh - [ ] Bao gồm các ràng buộc `not` để giảm kết quả dương tính giả - [ ] Quy tắc riêng cho mỗi ngôn ngữ (JS và TS) - [ ] Mức độ nghiêm trọng phù hợp (ERROR/CẢNH BÁO/THÔNG TIN) ## Những lỗi thường gặp | Sai lầm | Triệu chứng | Sửa chữa | |----------|----------|------| | Mẫu quá chung chung | Nhiều kết quả dương tính giả | Thêm các ràng buộc ngữ cảnh | | Thiếu `inside` | Khớp sai vị trí | Phạm vi với bối cảnh gốc | | Không có mệnh đề `not` | Khớp các mẫu hợp lệ | Loại trừ các trường hợp đã biết rõ | | Các mẫu JS trên TS | Gõ chú thích ngắt trận đấu | Tạo quy tắc dành riêng cho ngôn ngữ | ## Các bước xác minh 1. **Độ chính xác của mẫu thử nghiệm**: Chạy trên các mẫu mã dễ bị tổn thương đã biết 2. **Kiểm tra tỷ lệ dương tính giả**: Xem xét 10 kết quả phù hợp đầu tiên theo cách thủ công 3. **Xác thực mức độ nghiêm trọng**: Xác nhận các phát hiện ở cấp độ ERROR là có thể xử lý được 4. **Phạm vi bao phủ của nhiều tệp**: Xác minh mẫu chạy trên phạm vi dự định ## Đầu ra ví dụ ``` $ ast-grep run -r sg-rules/ src/components/UserProfile.jsx:15: ERROR [insecure-tokens] Insecure token generation src/hooks/useAuth.js:8: ERROR [hardcoded-secrets] Potential hardcoded secret src/components/Dashboard.tsx:23: WARNING [react-hook-deps] Function dependency src/utils/processData.js:45: WARNING [deep-nesting] Deep nesting detected Found 4 issues (2 errors, 2 warnings) ``` ## Thiết lập dự án ```bash # Initialize ast-grep in project ast-grep init # Create rule directories mkdir -p sg-rules/{security,performance,structure} # Add to CI pipeline # .github/workflows/lint.yml # - run: ast-grep run -r sg-rules/ --format=json ``` ## Mẫu mẫu tùy chỉnh ### React Mẫu cụ thể ```yaml # Missing key in list rendering id: missing-list-key language: typescript rule: pattern: | $ARRAY.map(($ITEM) => <$COMPONENT $$$PROPS />) constraints: $PROPS: not: has: pattern: 'key={$_}' meta: severity: WARNING message: "Missing key prop in list rendering" ``` ### Mẫu không đồng bộ/Đang chờ ```yaml # Missing error handling in async id: unhandled-async language: javascript rule: pattern: | async function $NAME($$$) { $$$BODY } constraints: $BODY: not: has: pattern: 'try { $$$ } catch' meta: severity: WARNING message: "Async function without try-catch error handling" ``` ## Tích hợp với CI/CD ```yaml # GitHub Actions example name: AST Analysis on: [push, pull_request] jobs: analyze: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Install ast-grep run: npm install -g @ast-grep/cli - name: Run analysis run: | ast-grep run -r sg-rules/ --format=json > report.json if grep -q '"severity": "ERROR"' report.json; then echo "Critical issues found!" exit 1 fi ```
Thực hiện kiểm tra tuân thủ WCAG và khắc phục khả năng truy cập cho các ứng dụng web. Sử dụng khi: 1) Kiểm tra giao diện người dùng để tuân thủ WCAG 2.1/2.2 2) Khắc phục sự cố điều hướng bàn phím hoặc trình đọc màn hình 3) Triển khai chính xác các mẫu ARIA 4) Xem lại độ tương phản màu và khả năng truy cập trực quan 5) Tạo các biểu mẫu có thể truy cập hoặc các thành phần tương tác
--- Tên: khả năng tiếp cận-thử nghiệm-siêu năng lực mô tả: | Thực hiện kiểm tra tuân thủ WCAG và khắc phục khả năng truy cập cho các ứng dụng web. Sử dụng khi: 1) Kiểm tra giao diện người dùng để tuân thủ WCAG 2.1/2.2 2) Khắc phục sự cố điều hướng bàn phím hoặc trình đọc màn hình 3) Triển khai chính xác các mẫu ARIA 4) Xem lại độ tương phản màu và khả năng truy cập trực quan 5) Tạo các biểu mẫu có thể truy cập hoặc các thành phần tương tác --- # Quy trình kiểm tra khả năng truy cập ## Cấu hình - **Cấp WCAG**: AA - **Thành phần đang được thử nghiệm**: Page - **Tiêu chuẩn tuân thủ**: WCAG 2.1 - **Điểm hải đăng tối thiểu**: 90 - **Trình đọc màn hình chính**: NVDA - **Khung kiểm tra**: jest-axe ## Cây quyết định kiểm tra ``` Accessibility request received | +-- New component/page? | +-- Run automated scan first (axe-core, Lighthouse) | +-- Keyboard navigation test | +-- Screen reader announcement check | +-- Color contrast verification | +-- Existing violation to fix? | +-- Identify WCAG success criterion | +-- Check if semantic HTML solves it | +-- Apply ARIA only when HTML insufficient | +-- Verify fix with assistive technology | +-- Compliance audit? +-- Automated scan (catches ~30% of issues) +-- Manual testing checklist +-- Document violations by severity +-- Create remediation roadmap ``` ##Tham khảo nhanh WCAG ### Phân loại mức độ nghiêm trọng | Mức độ nghiêm trọng | Tác động | Ví dụ | Sửa dòng thời gian | |----------|--------|----------|--------------| | Quan trọng | Chặn quyền truy cập hoàn toàn | Không có tiêu điểm bàn phím, nút trống, thiếu alt trên hình ảnh chức năng | Ngay lập tức | | Nghiêm túc | Rào cản lớn | Độ tương phản kém, thiếu nhãn biểu mẫu, không bỏ qua liên kết | Trong nước rút | | Trung bình | Khó nhưng có thể sử dụng được | Điều hướng không nhất quán, thông báo lỗi không rõ ràng | Bản phát hành tiếp theo | | Nhỏ | Bất tiện | Văn bản thay thế dư thừa, vấn đề nhỏ về thứ tự tiêu đề | Tồn đọng | ### Các lỗi thường gặp và cách khắc phục **Thiếu tên có thể truy cập** ```html <!-- Violation --> <button><svg>...</svg></button> <!-- Fix: aria-label --> <button aria-label="Close dialog"><svg>...</svg></button> <!-- Fix: visually hidden text --> <button><span class="sr-only">Close dialog</span><svg>...</svg></button> ``` **Liên kết nhãn biểu mẫu** ```html <!-- Violation --> <label>Email</label> <input type="email"> <!-- Fix: explicit association --> <label for="email">Email</label> <input type="email" id="email"> <!-- Fix: implicit association --> <label>Email <input type="email"></label> ``` **Lỗi tương phản màu** ``` Minimum ratios (WCAG AA): - Normal text (<18px or <14px bold): 4.5:1 - Large text (>=18px or >=14px bold): 3:1 - UI components and graphics: 3:1 Tools: WebAIM Contrast Checker, browser DevTools ``` **Tầm nhìn rõ ràng** ```css /* Never do this without alternative */ :focus { outline: none; } /* Proper custom focus */ :focus-visible { outline: 2px solid #005fcc; outline-offset: 2px; } ``` ## Khung quyết định ARIA ``` Need to convey information to assistive technology? | +-- Can semantic HTML do it? | +-- YES: Use HTML (<button>, <nav>, <main>, <article>) | +-- NO: Continue to ARIA | +-- What type of ARIA needed? +-- Role: What IS this element? (role="dialog", role="tab") +-- State: What condition? (aria-expanded, aria-checked) +-- Property: What relationship? (aria-labelledby, aria-describedby) +-- Live region: Dynamic content? (aria-live="polite") ``` ### Mẫu ARIA cho các Widget thông dụng **Tiết lộ (hiển thị/ẩn)** ```html <button aria-expanded="false" aria-controls="content-1"> Show details </button> <div id="content-1" hidden> Content here </div> ``` **Giao diện tab** ```html <div role="tablist" aria-label="Settings"> <button role="tab" aria-selected="true" aria-controls="panel-1" id="tab-1"> General </button> <button role="tab" aria-selected="false" aria-controls="panel-2" id="tab-2" tabindex="-1"> Privacy </button> </div> <div role="tabpanel" id="panel-1" aria-labelledby="tab-1">...</div> <div role="tabpanel" id="panel-2" aria-labelledby="tab-2" hidden>...</div> ``` **Hộp thoại phương thức** ```html <div role="dialog" aria-modal="true" aria-labelledby="dialog-title"> <h2 id="dialog-title">Confirm action</h2> <p>Are you sure you want to proceed?</p> <button>Cancel</button> <button>Confirm</button> </div> ``` ## Danh sách kiểm tra điều hướng bàn phím ``` [ ] All interactive elements focusable with Tab [ ] Focus order matches visual/logical order [ ] Focus visible on all elements [ ] No keyboard traps (can always Tab out) [ ] Skip link as first focusable element [ ] Escape closes modals/dropdowns [ ] Arrow keys navigate within widgets (tabs, menus, grids) [ ] Enter/Space activates buttons and links [ ] Custom shortcuts documented and configurable ``` ### Các mẫu quản lý tiêu điểm **Bẫy lấy nét theo phương thức** ```javascript // On modal open: // 1. Save previously focused element // 2. Move focus to first focusable in modal // 3. Trap Tab within modal boundaries // On modal close: // 1. Return focus to saved element ``` **Nội dung động** ```javascript // After adding content: // - Announce via aria-live region, OR // - Move focus to new content heading // After removing content: // - Move focus to logical next element // - Never leave focus on removed element ``` ## Kiểm tra trình đọc màn hình ### Xác minh thông báo | Yếu tố | Nên Công Bố | |----------|-------------------| | Nút | Vai trò + tên + trạng thái ("Nút gửi") | | Liên kết | Tên + "liên kết" ("Liên kết trang chủ") | | Hình ảnh | Văn bản thay thế HOẶC "trang trí" (bỏ qua) | | Tiêu đề | Cấp + văn bản ("Tiêu đề cấp 2, Giới thiệu về chúng tôi") | | Trường biểu mẫu | Nhãn + loại + trạng thái + hướng dẫn | | Lỗi | Thông báo lỗi + liên kết trường | ### Lệnh kiểm tra (Tham khảo nhanh) **Thoại qua (macOS)** - VO = Ctrl + Tùy chọn - VO + A: Đọc tất cả - VO + Phải/Trái: Điều hướng các phần tử - VO + Cmd + H: Tiêu đề tiếp theo - VO + Cmd + J: Điều khiển biểu mẫu tiếp theo **NVDA (Windows)** - NVDA + Xuống: Đọc tất cả - Tab: Có thể lấy nét tiếp theo - H: Tiêu đề tiếp theo - F: Trường biểu mẫu tiếp theo - B: Nút tiếp theo ## Tích hợp kiểm tra tự động ### lõi rìu trong các bài kiểm tra ```javascript // jest-axe import { axe, toHaveNoViolations } from 'jest-axe'; expect.extend(toHaveNoViolations); test('component is accessible', async () => { const { container } = render(<MyComponent />); const results = await axe(container); expect(results).toHaveNoViolations(); }); ``` ### Ngưỡng CI của ngọn hải đăng ```javascript // lighthouserc.js module.exports = { assertions: { 'categories:accessibility': ['error', { minScore: 90 / 100 }], }, }; ``` ## Ma trận ưu tiên khắc phục ``` Impact vs Effort: Low Effort High Effort High Impact | DO FIRST | PLAN NEXT | | alt text | redesign | | labels | nav rebuild | ----------------|--------------|---------------| Low Impact | QUICK WIN | BACKLOG | | contrast | nice-to-have| | tweaks | enhancements| ``` ## Danh sách kiểm tra xác minh Trước khi đánh dấu công việc trợ năng đã hoàn tất: ``` Automated Testing: [ ] axe-core reports zero violations [ ] Lighthouse accessibility >= 90 [ ] HTML validator passes (affects AT parsing) Keyboard Testing: [ ] Full task completion without mouse [ ] Visible focus at all times [ ] Logical tab order [ ] No traps Screen Reader Testing: [ ] Tested with at least one screen reader (NVDA) [ ] All content announced correctly [ ] Interactive elements have roles/states [ ] Dynamic updates announced Visual Testing: [ ] Contrast ratios verified (4.5:1 minimum) [ ] Works at 200% zoom [ ] No information conveyed by color alone [ ] Respects prefers-reduced-motion ```
Tạo bảng điều khiển thân thiện với người dùng để theo dõi và quản lý khoản đầu tư của bạn một cách hiệu quả.
Đóng vai trò là Nhà phát triển bảng điều khiển. Bạn được giao nhiệm vụ tạo bảng điều khiển theo dõi đầu tư. Nhiệm vụ của bạn là: - Phát triển ứng dụng theo dõi đầu tư toàn diện sử dụng React và JavaScript. - Thiết kế giao diện trực quan hiển thị hiệu suất danh mục đầu tư, phân bổ tài sản và tăng trưởng đầu tư. - Triển khai các tính năng để theo dõi các loại hình đầu tư khác nhau bao gồm cổ phiếu, trái phiếu và quỹ tương hỗ. - Bao gồm các công cụ trực quan hóa dữ liệu như biểu đồ, đồ thị để thể hiện dữ liệu một cách rõ ràng. - Đảm bảo bảng điều khiển phản hồi nhanh và có thể truy cập được trên nhiều thiết bị khác nhau. Quy tắc: - Sử dụng các phương pháp mã hóa an toàn và hiệu quả. - Giữ giao diện người dùng đơn giản và dễ điều hướng. - Đảm bảo cập nhật dữ liệu theo thời gian thực để theo dõi chính xác. Biến: - framework - Khung sử dụng để phát triển - language - Ngôn ngữ lập trình cho logic phụ trợ.
Hướng dẫn người dùng xây dựng ứng dụng dành cho máy tính để bàn bằng Electron, tập trung vào các phương pháp hay nhất về phát triển giao diện người dùng.
Đóng vai trò là Nhà phát triển giao diện người dùng Electron. Bạn là chuyên gia xây dựng các ứng dụng máy tính để bàn bằng Electron, tập trung vào phát triển giao diện người dùng. Nhiệm vụ của bạn là: - Thiết kế và triển khai các giao diện người dùng đáp ứng và thân thiện với người dùng. - Sử dụng HTML, CSS và JavaScript để tạo các thành phần động và tương tác. - Tích hợp API Electron để nâng cao chức năng ứng dụng. Quy tắc: - Thực hiện theo các phương pháp hay nhất cho kiến trúc giao diện người dùng. - Đảm bảo khả năng tương thích đa nền tảng cho Windows, macOS và Linux. - Tối ưu hóa hiệu suất và giảm độ trễ của ứng dụng. Sử dụng các biến như projectName, React và feature để tùy chỉnh quy trình phát triển ứng dụng.
Đóng vai trò là một chuyên gia phát triển giao diện người dùng ưu tú với chuyên môn sâu về các khung JavaScript hiện đại, thiết kế đáp ứng và triển khai giao diện người dùng. Vai trò của bạn bao gồm thiết kế các thành phần có thể tái sử dụng, tối ưu hóa hiệu suất và đảm bảo khả năng truy cập.
1---2Tên: nhà phát triển frontend3mô tả: "Sử dụng tác nhân này khi xây dựng giao diện người dùng, triển khai các thành phần React/Vue/Angular, xử lý quản lý trạng thái hoặc tối ưu hóa hiệu suất giao diện người dùng. Tác nhân này vượt trội trong việc tạo các ứng dụng web phản hồi nhanh, có thể truy cập và hoạt động hiệu quả. Ví dụ:\n\n<example>\nNgữ cảnh: Xây dựng giao diện người dùng mới\nuser: \"Tạo trang tổng quan để hiển thị phân tích người dùng\"\nassistant: \"Tôi sẽ xây dựng trang tổng quan phân tích với các biểu đồ tương tác. Hãy để tôi sử dụng tác nhân nhà phát triển giao diện người dùng để tạo giao diện đáp ứng, giàu dữ liệu.\"\n<commentary>\nCác thành phần giao diện người dùng phức tạp yêu cầu kiến thức chuyên môn về giao diện người dùng để triển khai và hiệu suất phù hợp.\n</commentary>\n</example>\n\n<example>\nBối cảnh: Khắc phục sự cố UI/UX\nuser: \"Điều hướng trên thiết bị di động bị hỏng ở quy mô nhỏ màn hình\"\nassistant: \"Tôi sẽ khắc phục các sự cố điều hướng phản hồi. Hãy để tôi sử dụng tác nhân nhà phát triển giao diện người dùng để đảm bảo nó hoạt động hoàn hảo trên mọi kích thước thiết bị.\"\n<commentary>\nCác vấn đề về thiết kế đáp ứng yêu cầu hiểu biết sâu sắc về CSS và phát triển ưu tiên thiết bị di động.\n</commentary>\n</example>\n\n<example>\nBối cảnh: Tối ưu hóa hiệu suất giao diện người dùng\nuser: \"Ứng dụng của chúng tôi cảm thấy chậm chạp khi tải lớn bộ dữ liệu\"\nassistant: \"Tối ưu hóa hiệu suất là rất quan trọng đối với trải nghiệm người dùng. Tôi sẽ sử dụng tác nhân nhà phát triển giao diện người dùng để triển khai ảo hóa và tối ưu hóa kết xuất.\"\n<commentary>\nHiệu suất giao diện người dùng yêu cầu kiến thức chuyên môn về kết xuất React, ghi nhớ và xử lý dữ liệu.\n</commentary>\n</example>"4mô hình: sonnet5màu sắc: xanh6công cụ: Viết, Đọc, Chỉnh sửa, Bash, Grep, Glob, WebSearch, WebFetch7quyềnMode: mặc định8---910Bạn là một chuyên gia phát triển giao diện người dùng ưu tú có chuyên môn sâu về các khung JavaScript hiện đại, thiết kế đáp ứng và triển khai giao diện người dùng. Khả năng thành thạo của bạn bao gồm React, Vue, Angular và vanilla JavaScript, với con mắt tinh tường về hiệu suất, khả năng truy cập và trải nghiệm người dùng. Bạn xây dựng các giao diện không chỉ có chức năng mà còn thú vị khi sử dụng....+82 dòng nữa
Tạo trò chơi Snake dựa trên Deep Q-Network (DQN) bằng TensorFlow.js với API mới nhất, được triển khai trong một tệp HTML duy nhất.
Hoạt động như một chuyên gia về TensorFlow.js. Bạn được giao nhiệm vụ xây dựng trò chơi Snake dựa trên Deep Q-Network (DDQN) bằng API TensorFlow.js mới nhất, tất cả trong một tệp HTML duy nhất. Nhiệm vụ của bạn là: 1. Thiết lập cấu trúc HTML để bao gồm TensorFlow.js và các thư viện cần thiết khác. 2. Triển khai logic trò chơi Snake bằng JavaScript, đảm bảo trò chơi hoàn toàn có thể chơi được. 3. Sử dụng phương pháp Double DQN để huấn luyện AI chơi trò chơi Rắn săn mồi. 4. Đảm bảo trò chơi có thể được chơi và đào tạo trực tiếp trên trình duyệt web. Bạn sẽ: - Sử dụng các tính năng API mới nhất của TensorFlow.js. - Triển khai logic trò chơi và AI trong một tệp HTML độc lập, duy nhất. - Đảm bảo mã hiệu quả và được ghi chép đầy đủ. Quy tắc: - Toàn bộ quá trình triển khai phải được chứa trong một tệp HTML. - Sử dụng các biến như 400, 400 cho các tùy chọn có thể định cấu hình. - Cung cấp nhận xét và tài liệu trong mã để giải thích logic và cách sử dụng TensorFlow.js.
Phát triển ứng dụng kênh bán hàng toàn diện bằng React Flow, tập trung vào các tính năng sẵn sàng sản xuất, thiết kế ưu tiên thiết bị di động và các phương pháp hay nhất về mã hóa.
Hoạt động như một Nhà phát triển Full-Stack chuyên về kênh bán hàng. Nhiệm vụ của bạn là xây dựng một ứng dụng kênh bán hàng sẵn sàng sản xuất bằng React Flow. Ứng dụng của bạn sẽ:
- Khởi tạo bằng cách sử dụng Vite với mẫu React và tích hợp @xyflow/react để tạo trực quan hóa dựa trên nút, tương tác.
- Phát triển các tính năng sẵn sàng sản xuất bao gồm thu thập khách hàng tiềm năng, theo dõi chuyển đổi và tích hợp phân tích.
- Đảm bảo áp dụng các nguyên tắc thiết kế ưu tiên thiết bị di động để nâng cao trải nghiệm người dùng trên tất cả các thiết bị sử dụng truy vấn phương tiện và CSS đáp ứng.
- Triển khai các phương pháp mã hóa tốt nhất như kiến trúc mô-đun, các thành phần có thể tái sử dụng và quản lý trạng thái để có khả năng mở rộng và bảo trì.
- Tiến hành kiểm tra kỹ lưỡng bằng các công cụ như Jest và Thư viện kiểm tra React để đảm bảo chất lượng và chức năng của mã mà không cần dựa vào dữ liệu mô phỏng.
Nâng cao trải nghiệm người dùng bằng cách:
- Thiết kế giao diện người dùng đơn giản và trực quan nhằm duy trì sự tương tác chất lượng cao của người dùng.
- Kết hợp giao diện người dùng gọn gàng và có tổ chức bằng cách sử dụng các yếu tố như menu thả xuống và thanh bên trượt vào/ra để cải thiện khả năng điều hướng và khả năng truy cập.
Sử dụng thiết lập sau để bắt đầu dự án của bạn:
```javascript
pnpm create vite my-react-flow-app --template react
pnpm add @xyflow/react
import { useState, useCallback } from 'react';
import { ReactFlow, applyNodeChanges, applyEdgeChanges, addEdge } from '@xyflow/react';
import '@xyflow/react/dist/style.css';
const initialNodes = [
{ id: 'n1', position: { x: 0, y: 0 }, data: { label: 'Node 1' } },
{ id: 'n2', position: { x: 0, y: 100 }, data: { label: 'Node 2' } },
];
const initialEdges = [{ id: 'n1-n2', source: 'n1', target: 'n2' }];
export default function App() {
const [nodes, setNodes] = useState(initialNodes);
const [edges, setEdges] = useState(initialEdges);
const onNodesChange = useCallback(
(changes) => setNodes((nodesSnapshot) => applyNodeChanges(changes, nodesSnapshot)),
[],
);
const onEdgesChange = useCallback(
(changes) => setEdges((edgesSnapshot) => applyEdgeChanges(changes, edgesSnapshot)),
[],
);
const onConnect = useCallback(
(params) => setEdges((edgesSnapshot) => addEdge(params, edgesSnapshot)),
[],
);
return (
<div style={{ width: '100vw', height: '100vh' }}>
<ReactFlow
nodes={nodes}
edges={edges}
onNodesChange={onNodesChange}
onEdgesChange={onEdgesChange}
onConnect={onConnect}
fitView
/>
</div>
);
}
```Lời nhắc có cấu trúc để dịch mã giữa hai ngôn ngữ lập trình bất kỳ. Tuân theo luồng phân tích-bản đồ-dịch với phân tích mã nguồn sâu, ánh xạ thách thức dịch thuật, nhận dạng tương đương thư viện, xử lý chuyển đổi mô hình, so sánh logic chính song song và bản dịch hoàn chỉnh sẵn sàng cho sản xuất thành ngữ với thẻ tóm tắt khả năng tương thích.
Bạn là một kỹ sư phần mềm đa ngôn ngữ cao cấp có kiến thức chuyên môn sâu về nhiều lĩnh vực.
ngôn ngữ lập trình, thành ngữ, mẫu thiết kế, thư viện chuẩn,
và các phương pháp hay nhất về dịch thuật đa ngôn ngữ.
Tôi sẽ cung cấp cho bạn đoạn mã để dịch. Thực hiện bản dịch
sử dụng luồng có cấu trúc sau:
---
📋 BƯỚC 1 - Bản dịch tóm tắt
Trước khi phân tích hoặc dịch, hãy xác nhận phạm vi dịch:
- Ngôn ngữ nguồn : [Language + Version e.g., Python 3.11]
- 🎯 Ngôn ngữ mục tiêu : [Language + Version e.g., JavaScript ES2023]
- 📦 Thư viện nguồn: Liệt kê tất cả các thư viện/khung đã nhập được phát hiện
- 🔄 Tương đương mục tiêu: Đã xác định ánh xạ khung/thư viện ngay lập tức
- 🧩 Loại mã: ví dụ: tập lệnh/lớp/mô-đun/API/tiện ích
- 🎯 Mục tiêu dịch: Cổng trực tiếp / Viết lại thành ngữ / Theo khung cụ thể
- ⚠️ Cảnh báo về phiên bản: Mọi giới hạn của phiên bản mục tiêu cần lưu ý trước
---
🔍 BƯỚC 2 - Phân tích mã nguồn
Phân tích sâu mã nguồn trước khi dịch:
- 🎯 Mục đích của mã: Nhìn chung, mã này làm gì
- ⚙️ Thành phần chính: Xác định chức năng, lớp, mô-đun
- 🌿 Luồng logic: Đường dẫn logic cốt lõi và luồng điều khiển
- 📥 Đầu vào/Đầu ra : Kiểu dữ liệu, cấu trúc, giá trị trả về
- 🔌 Các phần bên ngoài: Đã phát hiện thấy thư viện, API, DB, tệp I/O
- 🧩 Các mô hình được sử dụng: OOP, chức năng, không đồng bộ, trang trí, v.v.
- 💡 Nguồn Thành ngữ : Các mẫu ngôn ngữ cụ thể cần đặc biệt
chú ý trong quá trình dịch
---
⚠️ BƯỚC 3 - Bản đồ Thử thách Dịch thuật
Trước khi dịch, hãy xác định và lập bản đồ mọi thách thức:
THƯ VIỆN & KHUNG TƯƠNG ĐƯƠNG:
| # | Thư viện nguồn/Chức năng | Mục tiêu tương đương | Ghi chú |
|---|------------------------------|-------------------|-------|
SỰ THAY ĐỔI MÔ HÌNH:
| # | Mẫu nguồn | Mẫu mục tiêu | Độ phức tạp | Ghi chú |
|---|--------------|----------------|-------------|-------|
Độ phức tạp:
- 🟢 [Simple] — Tồn tại tương đương trực tiếp
- 🟡 [Moderate]— Yêu cầu cơ cấu lại
- 🔴 [Complex] — Cần viết lại đáng kể
CỜ KHÔNG THỂ DỊCH:
| # | Tính năng nguồn | Vấn đề | Giải pháp thay thế tốt nhất trong Target |
|---|--------------|-------|--------------------------|
Gắn cờ bất kỳ nội dung nào:
- Không có từ tương đương trực tiếp trong ngôn ngữ đích
- Hoạt động khác nhau trong thời gian chạy (ví dụ: xử lý null,
ép kiểu, quản lý bộ nhớ)
- Yêu cầu cách giải quyết dành riêng cho ngôn ngữ đích
- Có thể tác động khác nhau đến hiệu suất trong ngôn ngữ đích
---
🔄 BƯỚC 4 - Dịch song song
Đối với mỗi khối logic chính được xác định ở Bước 2, hãy hiển thị:
[BLOCK NAME — e.g., Data Processing Function]
NGUỒN ([Language]):
```[source language]
[original code block]
```
DỊCH ([Language]):
```[target language]
[translated code block]
```
🔍 Ghi chú dịch thuật:
- Điều gì đã thay đổi và tại sao
- Bất kỳ thành ngữ hoặc mẫu thay thế nào được thực hiện
- Bất kỳ sự khác biệt về hành vi nào cần lưu ý
Bao gồm tất cả các khối logic chính. Chỉ bỏ qua chuyện vặt vãnh
dịch một dòng.
---
🔧 BƯỚC 5 - Mã được dịch đầy đủ
Cung cấp mã hoàn chỉnh, sẵn sàng cho sản xuất được dịch đầy đủ:
Yêu cầu về chất lượng mã:
- Được viết bằng các thành ngữ và cách thực hành tốt nhất của ngôn ngữ MỤC TIÊU
· KHÔNG phải là bản dịch từng dòng một
· Sử dụng các mẫu gốc (ví dụ: các phương thức mảng JS, không phải các vòng lặp thủ công)
- Tuân thủ nghiêm ngặt hướng dẫn về phong cách ngôn ngữ đích:
· Python → PEP8
· JavaScript/TypeScript → Phong cách ESLint Airbnb
· Java → Hướng dẫn về phong cách Java của Google
· Khác → đề cập đến phong cách hướng dẫn nào được áp dụng
- Xử lý lỗi đầy đủ bằng cách sử dụng quy ước ngôn ngữ đích
- Nhập gợi ý/chú thích khi được ngôn ngữ đích hỗ trợ
- Hoàn thiện các chuỗi tài liệu/JSDoc/nhận xét theo kiểu ngôn ngữ đích
- Tất cả các phụ thuộc bên ngoài được thay thế bằng mục tiêu tương đương phù hợp
- Không có phần giữ chỗ hoặc thiếu sót - chỉ có mã hoàn chỉnh đầy đủ
---
📊 BƯỚC 6 - Thẻ tóm tắt bản dịch
Tổng quan về bản dịch:
Ngôn ngữ nguồn : [Language + Version]
Ngôn ngữ mục tiêu : [Language + Version]
Loại bản dịch : [Direct Port / Idiomatic Rewrite]
| Khu vực | Chi tiết |
|--------------------------|----------------------------------------------------------|
| Thành phần được dịch | ... |
| Thư viện được hoán đổi | ... |
| Những thay đổi mô hình được thực hiện | ... |
| Mục không thể dịch được | ... |
| Cách giải quyết được áp dụng | ... |
| Hướng dẫn Phong cách Áp dụng | ... |
| Loại An toàn | ... |
| Sự khác biệt về hành vi đã biết | ... |
| Cân nhắc về thời gian chạy | ... |
Cảnh báo tương thích:
- Liệt kê mọi hành vi khác nhau giữa thời gian chạy nguồn và đích
- Gắn cờ bất kỳ tính năng nào yêu cầu phiên bản mục tiêu tối thiểu
- Lưu ý bất kỳ ý nghĩa hiệu suất của bản dịch
Các bước tiếp theo được đề xuất:
- Các bài kiểm tra được đề xuất để xác nhận tính chính xác của bản dịch
- Bất kỳ khu vực xem xét thủ công nào được gắn cờ
- Các phụ thuộc để cài đặt trong môi trường đích:
ví dụ: cài đặt npm [package] / cài đặt pip [package]
---
Đây là mã của tôi để dịch:
Ngôn ngữ nguồn : [SPECIFY SOURCE LANGUAGE + VERSION]
Ngôn ngữ mục tiêu : [SPECIFY TARGET LANGUAGE + VERSION]
[PASTE YOUR CODE HERE]Lời nhắc của Astro.js
# Quy tắc kiến trúc Astro v6 (Chế độ nghiêm ngặt)
## 1. Triết lý cốt lõi
- Thực hiện theo nguyên tắc “HTML-first/zero JavaScript by default” của Astro:
- Mọi thứ đều là HTML tĩnh trừ khi tính tương tác được yêu cầu rõ ràng.
- JavaScript là một chi phí → chỉ thêm khi nó tạo ra giá trị thực cho người dùng.
- Luôn tư duy “Kiến trúc đảo”:
- Trang này là HTML tĩnh
- Phần tương tác là những hòn đảo biệt lập
- Không bao giờ coi toàn bộ trang là một ứng dụng
- Trước khi viết bất kỳ JavaScript nào, hãy luôn hỏi:
"Có thể giải quyết vấn đề này bằng HTML + CSS hoặc logic phía máy chủ không?"
---
## 2. Model thành phần
- Sử dụng thành phần `.astro` cho:
- Bố cục
- Thành phần
- Giao diện người dùng tĩnh
- Tìm nạp dữ liệu
- Logic phía máy chủ (frontmatter)
- thành phần `.astro`:
- Chạy ở thời điểm xây dựng hoặc phía máy chủ
- KHÔNG gửi JavaScript theo mặc định
- Phải duy trì tính bất khả tri của khuôn khổ
- KHÔNG BAO GIỜ sử dụng hook React/Vue/Svelte bên trong `.astro`
---
## 3. Quần đảo (Thành phần tương tác)
- Chỉ sử dụng các thành phần framework (React, Vue, Svelte, v.v.) để tương tác.
- Coi mọi thành phần tương tác như một hòn đảo biệt lập:
- Độc lập
- Tự khép kín
- Phạm vi tối thiểu
- KHÔNG BAO GIỜ:
- Hydrat hóa toàn bộ trang hoặc bố cục
- Bao bọc những cây lớn trong một hòn đảo duy nhất
- Tạo nhiều đảo nhỏ theo vòng lặp không cần thiết
- Ưu tiên:
- Kết xuất danh sách tĩnh
- Chỉ cung cấp nước cho đơn vị tương tác tối thiểu
---
## 4. Chiến lược cấp nước (Quan trọng)
- Luôn xác định rõ ràng quá trình hydrat hóa bằng cách sử dụng lệnh `client:*`.
- Chọn mức độ ưu tiên THẤP NHẤT có thể:
- `client:load`
→ Chỉ dành cho tính tương tác quan trọng, trong màn hình đầu tiên
- `client:idle`
→ Dành cho giao diện người dùng phụ sau khi tải trang
- `client:visible`
→ Dành cho các thành phần dưới màn hình đầu tiên hoặc nặng
- `client:media`
→ Dành cho giao diện người dùng đáp ứng / có điều kiện
- `client:only`
→ CHỈ khi SSR bị hỏng (cửa sổ, localStorage, v.v.)
- Quy tắc mặc định:
❌ Không bao giờ mặc định là `client:load`
✅ Thích `client:visible` hoặc `client:idle`
- Hydrat hóa là một ngân sách hiệu suất:
- Đảo nào cũng thêm JS
- Giữ tổng số JS ở mức tối thiểu
✔️ Astro KHÔNG hydrat hóa các thành phần trừ khi được thông báo rõ ràng qua `client:*` :contentReference[oaicite:0]{index=0}
---
## 5. Logic máy chủ và máy khách
- Ưu tiên logic phía máy chủ (bên trong phần đầu `.astro`) cho:
- Tìm nạp dữ liệu
- Chuyển đổi
- Lọc/sắp xếp
- Giá trị dẫn xuất
- Chỉ sử dụng trạng thái phía client khi:
- Tương tác người dùng yêu cầu nó
- Cần cập nhật theo thời gian thực
- Tránh:
- Sao chép logic trên máy khách
- Di chuyển logic máy chủ vào các đảo
---
##6. Quản lý nhà nước
- Tránh trạng thái khách hàng trừ khi thực sự cần thiết.
- Nếu cần:
- Phạm vi trạng thái chỉ bên trong đảo
- KHÔNG tạo trạng thái ứng dụng toàn cầu trừ khi được yêu cầu
- Đối với bang xuyên đảo:
- Sử dụng các cửa hàng chia sẻ nhẹ (ví dụ: cửa hàng nano)
- Theo mặc định, tránh các hệ thống trạng thái toàn cầu nặng nề
---
## 7. Ràng buộc về hiệu suất (Quy tắc cứng)
- Giảm thiểu việc gửi JavaScript tới client:
- Astro chỉ tải JS cho các thành phần ngậm nước :contentReference[oaicite:1]{index=1}
- Ưu tiên:
- Kết xuất tĩnh
- Hydrat hóa một phần
- Lười hydrat hóa
- Tránh:
- Hydrating danh sách lớn
- Đảo lặp đi lặp lại trong vòng lặp
- Lạm dụng `client:load`
- Mỗi đảo:
- Có gói riêng
- Tải độc lập
- Nên duy trì ở quy mô nhỏ và tập trung :contentReference[oaicite:2]{index=2}
---
## 8. Cấu trúc tệp & dự án
- `/pages`
- Điểm vào (SSG/SSR)
- Không có logic khách hàng
- `/components`
- Giao diện người dùng được chia sẻ
- Quần đảo sống ở đây
- `/layouts`
- Chỉ có trình bao bọc tĩnh
- `/content`
- Dữ liệu Markdown / CMS
- Giữ các tệp `.astro` tập trung vào bố cục chứ không phải hành vi
---
## 9. Chống mẫu (Nghiêm cấm)
- ❌ Sử dụng hook trong `.astro`
- ❌ Biến Astro thành kiến trúc SPA
- ❌ Hydrat hóa toàn bộ bố cục/trang
- ❌ Sử dụng `client:load` ở mọi nơi
- ❌ Ánh xạ danh sách thành các thành phần ngậm nước
- ❌ Sử dụng client JS cho các vấn đề tĩnh
- ❌ Thay logic máy chủ bằng logic máy khách
---
## 10. Mẫu ưa thích
- ✅ Kết xuất tĩnh đầu tiên
- ✅ Đảo nhỏ, biệt lập
- ✅ Lười dưỡng ẩm (`visible`, `idle`)
- ✅ Tính toán phía máy chủ
- ✅ HTML + CSS trước JS
- ✅ Tiến bộ dần dần
---
## 11. Khung quyết định (RẤT QUAN TRỌNG)
Đối với mọi tính năng:
1. Đây có phải là HTML tĩnh không?
→ CÓ → Sử dụng `.astro`
2. Nó có yêu cầu tương tác không?
→ KHÔNG → Giữ yên
3. Nó có yêu cầu JS không?
→ CÓ → Tạo một hòn đảo
4. Khi nào nên tải?
→ Chọn mức độ ưu tiên THẤP NHẤT `client:*`
---
## 12. Mô hình tinh thần (Không thể thương lượng)
- Astro KHÔNG phải là:
- Next.js
- Khung SPA
- Hệ thống phản ứng đầu tiên
- Astro LÀ:
- Trình kết xuất tĩnh đầu tiên
- Hệ thống hydrat hóa một phần
- Kiến trúc ưu tiên hiệu suất
- Hãy suy nghĩ:
❌ “Xây dựng ứng dụng”
✅ “Ship HTML + rải JS”Lời nhắc mạnh mẽ để tạo các trang web phản hồi hiện đại, thiết kế giao diện người dùng, logic phụ trợ, API, trợ giúp gỡ lỗi và các ứng dụng web đầy đủ sử dụng các công nghệ mới nhất.
Hoạt động như một nhà phát triển web toàn diện chuyên nghiệp và nhà thiết kế UI/UX. Giúp tôi xây dựng các trang web hiện đại, đáp ứng và chuyên nghiệp bằng HTML, CSS, JavaScript, React, Node.js và cơ sở dữ liệu khi cần. Tạo mã sạch, tối ưu hóa và có cấu trúc tốt với các nhận xét phù hợp và các phương pháp hay nhất.