Bộ định dạng JavaScript

Dán một đoạn JavaScript đã rút gọn hoặc thụt lề lộn xộn, rồi nhận lại mã sạch, dễ đọc, được định dạng theo đúng các quy tắc mà trình soạn thảo dùng. Chọn tab hay khoảng trắng, dấu nháy đơn hay kép, có dấu chấm phẩy hay không, dấu phẩy cuối theo ES5 hoặc ở mọi nơi. Xử lý được cú pháp hiện đại: optional chaining, nullish coalescing, JSX, TypeScript và await ở cấp cao nhất.

Cách định dạng JavaScript

  1. 1

    Dán mã nguồn

    Bất kỳ mã JS, JSX hay TypeScript hợp lệ nào. Bộ phân tích tự nhận biết biến thể ngôn ngữ dựa trên cú pháp.

  2. 2

    Đặt tùy chọn của bạn

    Kích thước thụt lề, tab hay khoảng trắng, kiểu dấu nháy, dấu chấm phẩy, chiều rộng dòng và dấu phẩy cuối.

  3. 3

    Định dạng

    Công cụ chạy một lượt xử lý tương thích với Prettier và trả về kết quả đã định dạng.

  4. 4

    Sao chép kết quả

    Sao chép chỉ với một cú nhấp hoặc tải xuống thành tệp. Thụt lề gốc bị loại bỏ chứ không chồng lên trên.

Tùy chọn kiểu

Tùy chọn Giá trị Mặc định
Thụt lề tab, 2, 4 2 khoảng trắng
Kiểu dấu nháy single, double kép
Dấu chấm phẩy always, never luôn luôn
Chiều rộng dòng 60 - 120 80
Dấu phẩy cuối none, es5, all es5
Ngoặc của hàm mũi tên always, avoid luôn luôn
Khoảng trắng trong ngoặc true, false true
Dấu nháy đơn trong JSX true, false false

Vì sao định dạng lại quan trọng

Định dạng không chỉ để đẹp mắt, mà là để giảm tải nhận thức. Một cơ sở mã được định dạng nhất quán giúp người rà soát tập trung vào thay đổi logic, thay vì đi tìm một dấu ngoặc đặt sai chỗ.

  • Tranh cãi vặt vãnh kết thúc ngay khi một dự án áp dụng bộ định dạng. git diff cho thấy thay đổi thật sự, không phải các tranh luận về thụt lề.
  • Hook trước khi commit (với công cụ như Husky + lint-staged) tự động định dạng các tệp đã staging trước khi commit.
  • Tích hợp với trình soạn thảo (VS Code, WebStorm) áp dụng cùng quy tắc khi lưu.

Những gì định dạng không làm

  • Nó không lint. Các quy tắc về kiểu (no-unused-vars, eqeqeq) thuộc phạm vi của ESLint. Bộ định dạng chỉ sắp xếp lại khoảng trắng và dấu câu, nó không từ chối mã vì vấn đề logic.
  • Nó không sửa lỗi cú pháp. Nếu đầu vào là JS không hợp lệ, bộ định dạng sẽ báo lỗi. Hãy dùng nó như một cách kiểm tra rằng mã của bạn ít nhất phân tích được.
  • Nó không áp đặt quy ước đặt tên. camelCase so với snake_case là quy tắc của lint, không phải của bộ định dạng.

Những lỗi thường gặp

  • Cãi nhau với bộ định dạng. Nếu bạn cứ định dạng lại bằng tay sau khi nó đã chạy, cả hai đều đang lãng phí thời gian. Hãy cấu hình các tùy chọn, hoặc chấp nhận lựa chọn của dự án.
  • Chạy định dạng trên tệp được sinh ra. Đầu ra của bundler, mã đã transpile, .min.js, không cái nào được lợi. Hãy định dạng mã nguồn, đừng định dạng sản phẩm đầu ra.
  • Định dạng mà không phân tích cú pháp. Kiểu “in đẹp” dựa trên regex sẽ làm hỏng template literal, regex literal và JSX. Luôn dùng bộ định dạng dựa trên AST (như công cụ này).

Câu hỏi thường gặp

Có. Bộ phân tích nhận diện cú pháp TypeScript (kiểu, interface, generic, decorator) và định dạng tương ứng. JSX cũng được hỗ trợ trong tệp .tsx / .jsx.

Nó tuân theo cùng các quy tắc như mặc định của Prettier và có thể tùy chỉnh qua các tùy chọn quen thuộc (chiều rộng dòng, dấu nháy, dấu chấm phẩy, dấu phẩy cuối). Tệp được định dạng ở đây sẽ khớp với tệp do Prettier định dạng khi dùng cùng cấu hình.

Bộ định dạng cần JavaScript hợp lệ và phân tích được. Nếu gặp lỗi, khả năng cao mã có vấn đề về cú pháp (ngoặc chưa đóng, JSX không hợp lệ, gõ sai). Nếu thông báo không rõ ràng, hãy chạy mã qua một linter trước.

Có. Cả chú thích một dòng (//) lẫn chú thích khối (/* */) đều được giữ trong kết quả, đặt gần vị trí ban đầu của chúng trong mã nguồn.

Công cụ liên quan

Công cụ này có phiên bản bằng các ngôn ngữ khác