7 điểm bởi xguru 2024-04-26 | 3 bình luận | Chia sẻ qua WhatsApp

JSR - registry mới để chia sẻ package JavaScript

  • Trong vài năm qua, các trình quản lý gói mới như yarn hay pnpm đã xuất hiện và cải thiện cách tải package
  • Tuy nhiên, npm package registry, hạt nhân của hệ sinh thái JavaScript, gần như không hề tiến hóa
    • Bản cập nhật đáng chú ý cuối cùng là tab "files" được thêm vào từ nhiều năm trước
  • Thật nghịch lý, ngôn ngữ JavaScript vốn nổi tiếng là phát triển rất năng động lại dường như đang bị níu chân bởi một mô hình phân phối đã lỗi thời

Những vấn đề của hệ thống module JavaScript

  • Khi Node được tạo ra, chưa có hệ thống module tiêu chuẩn nào cho JavaScript, nên npm registry và Node đã mặc định chấp nhận hệ thống CommonJS(require) vốn có khiếm khuyết căn bản
    • Đây là hệ thống không hoạt động trong trình duyệt
  • Gần 10 năm trước, vào năm 2015, bản thân ngôn ngữ đã chấp nhận cú pháp ES module(import)
  • Ngày nay, phần lớn JavaScript được viết bằng ES module, nhưng con đường để phân phối các module này vẫn còn phức tạp
    • Đặc biệt càng rắc rối hơn khi có liên quan đến TypeScript
  • Chính khoảng trống rõ ràng trong hệ sinh thái này đã dẫn tới sự ra đời của JSR
    • JSR không phải là một trình quản lý gói khác mà là một registry mang tính chuyển đổi, được thiết kế để đổi mới cách chia sẻ JavaScript và TypeScript giữa runtime phía máy chủ, trình duyệt và nhiều công cụ khác nhau

Tính năng và lợi ích của JSR

  • JSR cải thiện căn bản quy trình phân phối mã bằng cách đơn giản hóa những sự phức tạp đã làm phiền các nhà phát triển trong thời gian dài
  • Là một registry chỉ dành cho ESM và ưu tiên TypeScript, JSR loại bỏ việc phải tinh chỉnh khó chịu với cấu hình package.json và mê cung các tùy chọn compiler của tsconfig
  • Thông qua hệ thống chấm điểm package, JSR khuyến khích các thực tiễn tốt nhất trong phân phối mã
    • Tương tự pub.dev của cộng đồng Dart, nó trao điểm cao hơn cho các package có tài liệu JSDoc đầy đủ cho từng symbol được export
  • Giống như trong các hệ sinh thái lập trình hiện đại khác như Go hay Rust, JSR cung cấp khả năng tự động tạo tài liệu theo mặc định

Mối quan hệ với npm

  • JSR là một registry, không phải một client khác cho npm registry
    • Tuy nhiên, điều đó không có nghĩa là phải từ bỏ mọi thứ của npm hoặc chuyển sang một hệ sinh thái module JavaScript tách biệt
  • JSR được thiết kế để bổ sung cho npm registry chứ không nhằm thay thế npm
    • Các package JSR có thể phụ thuộc vào package npm (ví dụ: tham chiếu package này)
  • Ngoài ra, các package JSR cũng có thể được sử dụng trong phần mềm hiện có lấy npm làm trung tâm
    • Bởi vì bản thân JSR hoạt động như một npm registry phân phối tarball tương thích npm (có thể truy cập tại npm.jsr.io)
    • Nhờ vậy, có thể đưa package JSR vào bất kỳ phần mềm nào dùng npm, yarn hoặc pnpm và tích hợp với private registry
  • Các npm tarball do JSR phân phối đã được tối ưu hóa

Đặt bảo mật lên hàng đầu

  • Tại Deno, bảo mật được xem là ưu tiên hàng đầu trong phát triển JavaScript
  • Không registry nào có thể giám sát toàn diện mọi đoạn mã được phát hành, nhưng JSR mang lại sự minh bạch về phía publisher và bảo vệ quy trình phát hành
  • Bằng cách tích hợp GitHub Actions và token OIDC, JSR tạo ra bằng chứng xuất xứ nâng cao có thể xác minh cho các software artifact bằng cách sử dụng cấp độ chuỗi cung ứng và lưu trữ chúng trong Sigstore
    • Điều này không chỉ đảm bảo tính xác thực của mã mà còn thiết lập niềm tin và trách nhiệm đối với những gì nhà phát triển triển khai

Trung tâm của phát triển JavaScript

  • JavaScript là ngôn ngữ chung của nhiều lập trình viên, phổ quát và dễ tiếp cận
  • Ngôn ngữ này cần một trung tâm tập trung, một quảng trường chung để các nhà phát triển có thể chia sẻ thành quả mà không có sự phức tạp không cần thiết
  • Chúng tôi tin rằng JavaScript sẽ còn là trung tâm của phát triển phần mềm trong nhiều năm tới, và JSR nhằm hỗ trợ cho tính liên quan bền vững đó
  • JSR không chỉ đơn thuần là một công cụ khác trong hệ sinh thái, mà còn đại diện cho một sự thay đổi căn bản trong cách chúng ta nghĩ về việc phân phối JavaScript và TypeScript

3 bình luận

 
yangeok 2024-04-30

Hình như có thể tải jsr từ npm mà nhỉ,, haha

 
zzzz2222 2024-04-26

PHP chết tiệt đi

 
semjei 2024-04-29

Sao trong bài về JS lại nhắc đến PHP??
Đang làm dự án PHP nên thấy chạnh lòng.