0
0
Lập trình
Admin Team
Admin Teamtechmely

Thành thạo Import trong React: So sánh `../` và `@/`

Đăng vào 1 tháng trước

• 4 phút đọc

Thành thạo Import trong React: So sánh ../@/ 🚀

Nếu bạn từng tự hỏi nên sử dụng:

javascript Copy
import { HomePage } from '../features/heroes/HomePage';

hay:

javascript Copy
import { HomePage } from '@/features/heroes/HomePage';

thì bạn đã chạm vào một trong những câu hỏi cấu trúc dự án React/TypeScript tinh tế nhưng quan trọng. Hãy cùng phân tích như một lập trình viên React kỳ cựu đang hướng dẫn đội ngũ của mình.

🟢 CƠ BẢN — Import Tương đối (../)

Import tương đối thực sự đi qua hệ thống tệp.

  • .. = “đi lên một thư mục”.
  • Vậy ../features/heroes/HomePage = “đi lên một thư mục, rồi vào features/heroes”.

Ưu điểm

  • Hoạt động ngay lập tức trong Node, React, Vite, Next, v.v.
  • Không cần cấu hình bổ sung.

Nhược điểm

  • Trở nên xấu xí và dễ vỡ trong các cây thư mục sâu:
javascript Copy
import { Button } from '../../../../components/ui/Button';
  • Nếu bạn di chuyển tệp, import sẽ bị hỏng.
  • Khó khăn khi quét thị giác: “Nó đang trỏ đến đâu?”

🟡 TRUNG BÌNH — Biểu Thị Đường Dẫn (@/)

Biểu thị đường dẫn (hay còn gọi là biểu thị mô-đun) ánh xạ một ký hiệu (thường là @) tới thư mục src/ của bạn.

tsconfig.json

json Copy
{
  "compilerOptions": {
    "baseUrl": "src",
    "paths": {
      "@/*": ["*"]
    }
  }
}

vite.config.ts

javascript Copy
import { defineConfig } from 'vite';
import react from '@vitejs/plugin-react';
import path from 'path';

export default defineConfig({
  plugins: [react()],
  resolve: {
    alias: {
      '@': path.resolve(__dirname, 'src'),
    },
  },
});

Ưu điểm

  • Import phẳng bất kể độ sâu:
javascript Copy
import { Button } from '@/components/ui/Button';
  • Dễ dàng di chuyển tệp.
  • Mô hình tư duy rõ ràng: @/ = gốc của mã nguồn.
  • Tiêu chuẩn ngành trong các ứng dụng React / Next.js / Vite lớn.

Nhược điểm

  • Cần cấu hình (tsconfig.json + bundler).
  • Các lập trình viên mới cần biết @ là một phím tắt.

🔵 NÂNG CAO — Thực Hành Tốt Nhất Kết Hợp

Là một lập trình viên React chuyên nghiệp:

  • Sử dụng biểu thị đường dẫn (@/…) cho các import qua ranh giới tính năng hoặc thư viện chia sẻ.
  • Sử dụng import tương đối cho các anh chị em địa phương trong cùng một tính năng.

Điều này giữ cho các tính năng tự chứa trong khi các import toàn cầu vẫn rõ ràng.

Ví dụ

javascript Copy
// Bên trong src/features/heroes/HomePage.tsx
import { HeroGrid } from './HeroGrid';              // import tương đối (anh chị em địa phương)
import { CustomJumbotron } from '@/components/ui';  // biểu thị đường dẫn (thư viện UI chia sẻ)

Kết quả:

✔️ Sự rõ ràng (mã địa phương có thể di chuyển).

✔️ Khả năng mở rộng (mã toàn cầu vẫn dễ đọc).

🟣 CHUYÊN GIA — Phân Tích Ẩn Dụ

Hãy nghĩ về nó như một hệ thống điều hướng:

  • ../… = hướng dẫn từng bước

(“đi lên một khối, rẽ trái, vào trong”)

  • @/… = địa chỉ GPS

(“bắt đầu từ trung tâm thành phố = src/”)

Cả hai đều đưa bạn đến nơi, nhưng một cái sẽ dễ dàng mở rộng hơn trong một thành phố đang phát triển (dự án của bạn).

⚡ Lời Khuyên Từ Các Chuyên Gia

Trong các dự án React/Vite/Next chuyên nghiệp:

  • Luôn cấu hình @ (hoặc ~, hoặc src) trong tsconfig.json và bundler.
  • Duy trì import tương đối cho các anh chị em địa phương.
  • Sử dụng biểu thị đường dẫn cho các import qua tính năng hoặc chia sẻ.

👉 Điều này giữ cho mã nguồn dễ đọc, dễ bảo trì và chống lại các sửa đổi.

Thực Hành Tốt Nhất

  • Sử dụng biểu thị đường dẫn cho các tệp mà bạn biết sẽ được sử dụng nhiều lần.
  • Giữ cho cấu trúc thư mục đơn giản để tránh sự phức tạp không cần thiết.

Các Cạm Bẫy Thường Gặp

  • Chỉ sử dụng import tương đối trong các tệp trong cùng một thư mục; điều này có thể gây khó khăn trong việc bảo trì.

Mẹo Tăng Tốc Độ

  • Sử dụng các công cụ tự động hóa để kiểm tra và cập nhật các import nếu bạn di chuyển tệp.

Khắc Phục Sự Cố

  • Nếu gặp lỗi import, hãy kiểm tra lại cấu hình tsconfig.json và đảm bảo rằng đường dẫn của bạn là chính xác.

Câu Hỏi Thường Gặp (FAQ)

1. Tại sao nên sử dụng biểu thị đường dẫn thay vì import tương đối?

  • Biểu thị đường dẫn giúp mã dễ đọc hơn và dễ bảo trì hơn, đặc biệt trong các dự án lớn.

2. Tôi có thể sử dụng ký hiệu khác ngoài @ không?

  • Có, bạn có thể sử dụng bất kỳ ký hiệu nào bạn muốn, nhưng @ là tiêu chuẩn phổ biến trong cộng đồng.

3. Cấu hình có khó không?

  • Không, chỉ cần một vài dòng trong tsconfig.jsonvite.config.ts là đủ.

4. Làm thế nào để di chuyển tệp mà không bị hỏng import?

  • Sử dụng biểu thị đường dẫn cho các import toàn cầu và giữ import tương đối cho các tệp trong cùng một thư mục.

Kết luận:

Việc sử dụng đúng loại import trong React không chỉ giúp mã nguồn của bạn rõ ràng và dễ bảo trì mà còn giúp dự án của bạn phát triển bền vững. Hãy áp dụng những thực hành tốt nhất này trong các dự án của bạn ngay hôm nay!

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào