ReactJS: So sánh @loadable/component với React.lazy


Khóa học qua video:
Lập trình Python All Lập trình C# All SQL Server All Lập trình C All Java PHP HTML5-CSS3-JavaScript
Đăng ký Hội viên
Tất cả các video dành cho hội viên

Sự khác biệt giữa React.lazy và @loadable/component là gì?

React.lazy là giải pháp được đề xuất cho việc tách mã. Nó sử dụng Suspense và nó được duy trì bởi React.

Nếu bạn đã sử dụng React.lazy và nếu nó đang hoạt động tốt, bạn không cần @loadable/component.

Nếu bạn cảm thấy hạn chế hoặc nếu bạn cần SSR, thì @loadable/component là giải pháp.

Bảng so sánh

Thư viện Suspese SSR Tách thư viện import(`./${value}`)
React.lazy
@loadable/component

Suspense

Hồi hộp được hỗ trợ bởi React.lazy và bởi @loadable/component@loadable/component cũng có thể được sử dụng mà không cần Suspense.

Kết xuất phía máy chủ (Server Side Rendering - SSR)

Suspense không khả dụng ở phía máy chủ và React.lazy chỉ có thể hoạt động với Suspense. Đó là lý do tại sao hiện tại React.lazy không phải là một tùy chọn nếu bạn cần Kết xuất Phía Máy chủ.

@loadable/component cung cấp một giải pháp hoàn chỉnh để giúp Server Side Rendering có thể thực hiện được.

Tách thư viện

@loadable/component hỗ trợ chia nhỏ thư viện bằng cách sử dụng các prop kết xuất. Điều này là không thể với React.lazy.

import full động

Import full động hay còn gọi là tách mã linh hoạt là một tính năng được hỗ trợ bởi Webpack. Nó bao gồm việc truyền một giá trị động cho hàm động import().

// Tất cả các file tương thích với mẫu này sẽ tự động được tách mã.
const loadFile = file => import(`./${file}`)

Trong React, @loadable/component cho phép tạo các component có thể sử dụng lại:

import loadable from '@loadable/component'

const AsyncPage = loadable(props => import(`./${props.page}`))

function MyComponent() {
  return (
    <div>
      <AsyncPage page="Home" />
      <AsyncPage page="Contact" />
    </div>
  )
}

Tính năng này không được hỗ trợ bởi React.lazy.

Lưu ý về react-loadable

react-loadable là cách được khuyến nghị để tách mã React trong một thời gian dài. Tuy nhiên, ngày nay nó không được bảo trì nữa và nó không tương thích với Webpack v4 + và Babel v7 +.

Nếu bạn sử dụng nó, bạn nên chuyển sang React.lazy hoặc @loadable/component.

» Tiếp: Tách thư viện
« Trước: Tách mã?
Khóa học qua video:
Lập trình Python All Lập trình C# All SQL Server All Lập trình C All Java PHP HTML5-CSS3-JavaScript
Đăng ký Hội viên
Tất cả các video dành cho hội viên
Copied !!!