Menu
ESC

Nhập từ khóa để tìm kiếm

↑↓ Di chuyển
Enter Mở
ESC Đóng

Đang tải...

Bài 46 — Figma to Code: Anima, Locofy, Visual Copilot

UI Design and Design Handoff Bài 46/60

Mở đầu — vì sao bài này quan trọng

Trong suốt các bài trước, chúng ta đã dày công xây dựng design system: tokens, components, variants, auto layout chuẩn chỉnh. Và rồi luôn có một câu hỏi ám ảnh mọi UI designer: "Thiết kế đẹp thế này, khi nào thì lên được sản phẩm thật?" Khoảng cách giữa file Figma và dòng code chạy trên browser luôn là nơi thời gian và cảm xúc bị đốt nhiều nhất — designer than dev làm sai spacing, dev than designer đưa file lộn xộn không export nổi.

Giai đoạn 2024–2026 chứng kiến một làn sóng công cụ mới hứa hẹn xóa bỏ khoảng cách đó: các plugin design-to-code dùng mô hình ngôn ngữ lớn (LLM) để đọc thiết kế Figma và tự sinh ra code React, Vue, HTML/CSS, thậm chí SwiftUI. Từ Anima, Locofy đến Builder.io Visual Copilot — chúng đều bán chung một giấc mơ: bấm một nút, thiết kế biến thành code chạy được.

Nhưng đây là điều tôi cần bạn ghi tâm ngay từ đầu: chất lượng của các công cụ này dao động cực kỳ lớn (varies wildly). Cùng một công cụ, với một file Figma sạch có thể cho code dùng được 80%, còn với một file bừa bộn thì cho ra một mớ div lồng nhau vô nghĩa mà không dev nào dám merge. Vai trò của bạn — người UI designer hiểu nghề — không phải là bấm nút rồi phó mặc, mà là hiểu cách các công cụ này "suy nghĩ", để chuẩn bị file đúng cách và đọc được kết quả nó sinh ra. Bài này dạy bạn chính điều đó.

Khái niệm cốt lõi

Design-to-code AI hoạt động thế nào

Về bản chất, một công cụ design-to-code hiện đại làm ba việc nối tiếp nhau. Đầu tiên nó đọc cấu trúc file Figma thông qua Figma API — lấy ra cây node (frame, group, text, rectangle), thuộc tính layout, màu, font, khoảng cách. Thứ hai, nó diễn giải ý định thiết kế: node này là một button, cụm này là một navbar, list này nên lặp bằng vòng map. Đây là bước khó nhất và là nơi LLM tham gia. Thứ ba, nó sinh code theo framework bạn chọn, cố gắng dùng flexbox/grid thay vì tọa độ tuyệt đối.

Điểm mấu chốt: công cụ chỉ thông minh bằng dữ liệu bạn đưa vào. Nếu frame của bạn dùng Auto Layout (bài 11) với tên lớp rõ ràng, nó suy ra được flexbox chuẩn. Nếu bạn đặt các phần tử "thả nổi" bằng tọa độ x/y, nó buộc phải sinh position: absolute — thứ mà không ai muốn bảo trì.

Ba nhóm công cụ chính

Anima là tay chơi lâu đời nhất, xuất thân từ thời "responsive prototype". Anima mạnh ở việc chuyển Figma sang HTML/CSS, React, Vue với khả năng giữ responsive breakpoints. Điểm yếu truyền thống là code khá "verbose" (dài dòng), nhiều class thừa. Từ 2024, Anima bổ sung lớp AI để dọn dẹp và tạo component tái sử dụng tốt hơn.

Locofy (với engine "Locofy Lightning") tập trung vào việc nhận diện component và biến chúng thành component tái sử dụng có props. Locofy có khái niệm "tagging" — bạn gắn nhãn thủ công cho một node biết nó là button, input, hay một list lặp lại. Cách tiếp cận này cho code sạch hơn vì con người bổ khuyết cho AI ở đúng chỗ AI hay đoán sai. Locofy hỗ trợ React, Next.js, Gatsby, HTML, và cả React Native.

Builder.io Visual Copilot là làn sóng mới nhất và tham vọng nhất. Nó dùng một mô hình AI được huấn luyện riêng để ánh xạ (map) node Figma sang code, và điểm ăn tiền là khả năng map vào design system code của chính bạn: bạn khai báo rằng component "Button" trong Figma tương ứng với <Button> trong thư viện React của công ty, và Visual Copilot sẽ sinh code gọi đúng component đó thay vì vẽ lại một button mới từ đầu. Nó hỗ trợ đa framework (React, Vue, Svelte, Angular, Qwik) và nhiều lựa chọn styling (Tailwind, CSS Modules, styled-components).

Vì sao chất lượng dao động dữ dội

Ba yếu tố quyết định code ra tốt hay tệ:

  • Độ sạch của file Figma: Auto Layout, đặt tên lớp, dùng component thật thay vì copy-paste.
  • Mức độ ánh xạ design system: công cụ có biết token/component code của bạn không, hay phải đoán mù.
  • Độ phức tạp của giao diện: một landing page tĩnh dễ hơn nhiều so với một dashboard có state, điều kiện hiển thị, và tương tác.
Hãy nhớ khẩu quyết: các công cụ này sinh markup và styling khá tốt, nhưng logic, state, data-binding thì vẫn cần con người. Nó cho bạn cái vỏ, không cho bạn cái ruột.

Tình huống thực tế

Ví dụ 1 — Startup fintech ở TP.HCM tăng tốc landing page

Một startup fintech giả định tên VíXanh ở Quận 1, đội ngũ 12 người, chỉ có đúng 1 frontend dev và 1 designer. Mỗi chiến dịch marketing lại cần một landing page mới, và dev luôn là nút thắt cổ chai — trung bình 3 ngày để code xong một trang từ Figma.

Designer quyết định thử Builder.io Visual Copilot. Trước khi export, cô dành nửa buổi dọn file: chuyển toàn bộ sang Auto Layout, đặt tên frame theo ngữ nghĩa (hero, feature-card, cta-section), và ánh xạ component Button/Input trong Figma sang thư viện @vixanh/ui có sẵn. Kết quả: Visual Copilot sinh ra code React + Tailwind dùng đúng <Button variant="primary"> của công ty. Dev chỉ mất khoảng nửa ngày để nối API form đăng ký và chỉnh vài chỗ responsive, thay vì 3 ngày.

Bài học rút ra: giá trị thật không nằm ở nút "generate", mà ở nửa buổi chuẩn bị file và việc ánh xạ design system. Công cụ đã tiết kiệm khoảng 60% thời gian cho loại trang tĩnh, lặp lại nhiều — đúng sở trường của nó.

Ví dụ 2 — Agency ở Hà Nội và cái bẫy "code trông chạy được"

Một agency giả định tên Studio Bốn Mùa ở Hà Nội nhận dự án làm dashboard quản lý kho cho một chuỗi bán lẻ. Junior dev, vì áp lực deadline, dùng Locofy export toàn bộ dashboard rồi commit thẳng vào repo mà gần như không chỉnh.

Ba tuần sau, khi cần thêm một cột vào bảng dữ liệu, cả đội mới phát hiện thảm họa: bảng được sinh ra là các div hardcode từng ô, không có vòng lặp, không tách component, class Tailwind trùng lặp khắp nơi. Sửa một chi tiết nhỏ phải sờ vào 40 chỗ. Cuối cùng họ phải viết lại phần bảng từ đầu — mất nhiều thời gian hơn cả nếu code tay ngay từ đầu.

Bài học rút ra: design-to-code giỏi ở layout tĩnh, nhưng những thành phần cần lặp dữ liệu và có state (table, list động, filter) thì code sinh ra thường là "trông chạy được nhưng không bảo trì được". Với những phần này, hãy dùng công cụ để lấy phần styling/khung, rồi tự tay dựng logic. Đừng bao giờ merge code AI mà không đọc.

Ví dụ 3 — Đội design system dùng Locofy tagging đúng cách

Một công ty SaaS giả định tên Cỏ May Tech ở Đà Nẵng có design system trưởng thành. Họ không kỳ vọng AI sinh ra sản phẩm cuối, mà dùng Locofy như "bàn đạp khởi tạo component". Với mỗi component mới trong Figma, designer gắn tag rõ ràng (đây là button, đây là slot con), ánh xạ vào code component có sẵn, rồi để Locofy sinh khung.

Nhờ quy trình này, thời gian dựng một component mới từ Figma giảm rõ rệt, và quan trọng là code sinh ra nhất quán với phần còn lại của design system vì đã được map. Họ coi output của AI là "bản nháp 70%", luôn qua tay dev review trước khi vào Storybook (bài 45).

Bài học rút ra: kết hợp AI với design system và sự can thiệp thủ công đúng chỗ (tagging) cho kết quả ổn định hơn nhiều so với để AI đoán toàn bộ.

Hướng dẫn từng bước

Đây là quy trình tôi khuyên bạn áp dụng khi muốn dùng bất kỳ công cụ design-to-code nào.

  • Dọn file Figma trước tiên. Đây là 80% quyết định chất lượng. Chuyển mọi thứ sang Auto Layout, xóa layer thừa, gộp nhóm hợp lý. Một file bừa bộn sẽ cho code bừa bộn — không công cụ nào cứu được.
  • Đặt tên node theo ngữ nghĩa. Đừng để Frame 427 hay Group 12. Đặt header, nav-item, product-card. Tên lớp chính là gợi ý (hint) để AI đặt tên class và component tương ứng.
  • Dùng component thật, không copy-paste. Nếu một button xuất hiện 10 lần, nó phải là 10 instance của cùng một component. Công cụ sẽ nhận ra và sinh ra một component tái sử dụng thay vì 10 khối code trùng lặp.
  • Ánh xạ design system (nếu công cụ hỗ trợ). Đây là bước tạo khác biệt lớn nhất với Visual Copilot và Locofy. Khai báo Figma component nào tương ứng code component nào. Code sinh ra sẽ gọi đúng thư viện của bạn thay vì vẽ lại.
  • Chọn framework và styling khớp với dự án thật. React + Tailwind, Vue + CSS Modules... Chọn sai stack thì output vô dụng dù đẹp đến đâu.
  • Generate một phần nhỏ trước, đọc kỹ output. Đừng export cả trang rồi mới nhìn. Chạy thử một section, mở code ra đọc: nó dùng flexbox hay absolute? Có tách component không? Class có sạch không? Đây là lúc bạn đánh giá công cụ có đáng dùng cho dự án này không.
  • Bàn giao cho dev với tâm thế "đây là bản nháp". Nói rõ với dev: phần styling/layout đã có sẵn, nhưng logic/state/API là việc của họ. Đừng bao giờ nói "AI làm xong rồi, chỉ việc merge".

Lỗi thường gặp & mẹo

Lỗi 1 — Kỳ vọng code production ngay lập tức. Đây là ngộ nhận phổ biến nhất. Output của các công cụ này là điểm khởi đầu 60–80%, không phải sản phẩm cuối. Mẹo: luôn phân bổ thời gian cho khâu review và tinh chỉnh trong kế hoạch dự án.

Lỗi 2 — Bỏ qua khâu dọn file. Nhiều người bấm generate trên một file lộn xộn rồi kết luận "công cụ dở". Vấn đề không ở công cụ mà ở đầu vào. Mẹo: dành ra một checklist dọn file (Auto Layout, đặt tên, component hóa) trước mỗi lần export.

Lỗi 3 — Merge code không đọc. Như câu chuyện Studio Bốn Mùa, code "trông chạy được" có thể là cơn ác mộng bảo trì. Mẹo: đặt quy tắc trong đội — mọi code design-to-code phải qua review như code người viết.

Lỗi 4 — Dùng cho đúng loại giao diện sai. Dùng AI cho dashboard đầy state, form phức tạp, bảng dữ liệu động thường phản tác dụng. Mẹo: áp dụng cho landing page, marketing site, component tĩnh, prototype nhanh — nơi công cụ thực sự tỏa sáng.

Lỗi 5 — Không tận dụng ánh xạ design system. Để AI vẽ lại button từ đầu là lãng phí. Mẹo: nếu công ty đã có thư viện UI, luôn cấu hình mapping — đây là đòn bẩy lớn nhất.

Mẹo bonus về chi phí và bảo mật: các công cụ này thường gửi cấu trúc file lên server của họ để xử lý. Với dự án nhạy cảm (fintech, y tế), hãy kiểm tra chính sách dữ liệu và điều khoản trước khi kết nối. Và nhớ rằng các gói trả phí có giới hạn số lần export/tháng — hãy tính vào ngân sách nếu dùng thường xuyên.

Bài tập thực hành

Bài tập 1 — Chuẩn bị file "sạch". Lấy một section bất kỳ bạn đã thiết kế (ví dụ một hero section hoặc một card sản phẩm). Dọn nó lại hoàn toàn: chuyển sang Auto Layout, đặt tên mọi node theo ngữ nghĩa, component hóa những phần lặp lại. Chụp ảnh trước và sau để tự thấy sự khác biệt.

Bài tập 2 — So sánh hai công cụ. Cài plugin Locofy và Builder.io Visual Copilot (bản miễn phí). Export cùng một section, chọn cùng framework (ví dụ React). Mở hai output cạnh nhau và trả lời: công cụ nào dùng flexbox nhiều hơn? Công cụ nào tách component tốt hơn? Class của cái nào sạch hơn? Viết một đoạn nhận xét 150 từ.

Bài tập 3 — Đọc code như một dev. Lấy output từ bài tập 2, đánh dấu mọi chỗ dùng position: absolute, mọi class trùng lặp, mọi khối lẽ ra nên là vòng lặp. Đây là cách rèn khả năng "đọc code sinh ra" — kỹ năng phân biệt designer biết dev handoff và designer chỉ biết bấm nút.

Bài tập 4 — Viết ghi chú bàn giao. Giả sử bạn đưa output cho dev. Viết một đoạn ngắn nêu rõ: phần nào AI đã làm tốt, phần nào dev cần viết lại (logic, state, API), và những chỗ bạn không chắc chắn. Đây là văn bản bàn giao thực tế bạn sẽ dùng trong công việc.

Tóm tắt

Design-to-code AI — Anima, Locofy, Builder.io Visual Copilot — là làn sóng công cụ 2024–2026 dùng LLM để biến thiết kế Figma thành code chạy được. Nhưng chất lượng dao động cực lớn, và người quyết định chất lượng đó chính là bạn.

Những điều cần khắc cốt ghi tâm: chất lượng file Figma đầu vào (Auto Layout, đặt tên, component hóa) quyết định 80% chất lượng code đầu ra. Ánh xạ design system là đòn bẩy lớn nhất để có code nhất quán và tái sử dụng được. Các công cụ giỏi ở layout tĩnh và markup, nhưng logic, state, data-binding vẫn là việc của con người. Và tuyệt đối không bao giờ merge code AI mà không đọc — "trông chạy được" khác xa "bảo trì được".

Hãy coi những công cụ này là bàn đạp tăng tốc, không phải người thay thế. Chúng cho bạn cái vỏ 60–80%, giải phóng thời gian để dev tập trung vào phần khó thật sự. Một UI designer hiểu cách chúng "suy nghĩ" — biết chuẩn bị file, biết đọc output, biết bàn giao đúng cách — sẽ là người khiến quy trình handoff của cả đội mượt hơn hẳn. Đó chính là giá trị bạn mang lại.