Cloudflare nâng cấp module registry trong Workers: Tối ưu hóa khả năng tương thích với Node.js
Cloudflare vừa giới thiệu module registry mới trong workerd, giúp tăng tốc độ xử lý, tuân thủ các tiêu chuẩn web và cải thiện đáng kể khả năng tương thích với hệ sinh thái...
- Giọng nữ Bắc
Cloudflare vừa công bố bản nâng cấp quan trọng cho workerd – thành phần mã nguồn mở cốt lõi của runtime Workers. Bản cập nhật này tập trung vào việc tái thiết kế module registry, giúp hệ thống hoạt động nhanh hơn, tuân thủ các tiêu chuẩn kỹ thuật chặt chẽ hơn và đồng bộ hóa sâu sắc hơn với cách thức vận hành của Node.js.
Table Of Content
Tại sao cần thay đổi?
Trong những năm qua, Cloudflare đã liên tục bổ sung hỗ trợ cho các runtime API của Node.js. Hiện tại, Workers đã hỗ trợ hầu hết các API ổn định, cho phép các nhà phát triển triển khai những ứng dụng Node.js phức tạp hơn mà không còn bị giới hạn về kích thước bundle nén. Tuy nhiên, sự tương thích API là chưa đủ; các ứng dụng Node.js còn phụ thuộc vào cách runtime phân giải (resolve), tải và lưu trữ (cache) các module. Đó là lý do module registry mới ra đời.
Những cải tiến chính với flag new_module_registry
Người dùng có thể trải nghiệm ngay tính năng này bằng cách kích hoạt compatibility flag new_module_registry trong Worker của mình. Các thay đổi đáng chú ý bao gồm:
- Hỗ trợ chuẩn URL: Các module specifier giờ đây được phân giải như các URL thực thụ, bao gồm cả query string và fragment.
- Cải thiện
import.meta: Hỗ trợ đầy đủimport.meta.url,import.meta.mainvàimport.meta.resolve(). - Tính nhất quán của
node:built-ins: Các module tích hợp sẵn của Node.js sẽ trả về cùng một instance bất kể cách bạn truy cập. - Xác thực Import Attributes: Hỗ trợ kiểm tra chặt chẽ các thuộc tính import (ví dụ:
with { type: 'json' }). - Cơ chế
require(esm): Tuân thủ nghiêm ngặt các quy tắc của Node.js khi thực hiệnrequire()trên một ES module. - Xử lý lỗi nhất quán: Các thông báo lỗi và class lỗi được chuẩn hóa, giúp việc debug trở nên dễ dàng hơn.
- Lazy compilation: Module chỉ được biên dịch khi thực sự cần thiết (lần đầu tiên được import).
- WebAssembly: Hỗ trợ đầy đủ cho source phase imports.
Thay đổi trong cách tải mã nguồn
Trước đây, các công cụ như wrangler thường bundle toàn bộ mã nguồn vào một file duy nhất để vượt qua các hạn chế về phân giải module. Với module registry mới, Cloudflare mở đường cho các bundler hiện đại như Rolldown (sử dụng trong Vite 8) hoạt động hiệu quả hơn. Runtime giờ đây có khả năng xử lý module graph một cách trực tiếp, giúp giảm bớt các bước chuyển đổi (transformation) không cần thiết và tận dụng tốt hơn các tài nguyên hệ thống.
Hướng tới tương lai
Cloudflare khẳng định module registry cũ vẫn sẽ được duy trì để đảm bảo tính ổn định cho các Worker hiện có. Tính năng mới này không tự động kích hoạt mà yêu cầu người dùng chủ động thêm flag new_module_registry. Đây là bước tiến quan trọng giúp các nhà phát triển xây dựng ứng dụng serverless với trải nghiệm gần gũi nhất với môi trường Node.js truyền thống.
Nếu bạn gặp bất kỳ vấn đề nào hoặc phát hiện hành vi không mong muốn, bạn có thể đóng góp phản hồi trực tiếp trên kho lưu trữ mã nguồn mở workerd của Cloudflare.
Nguồn tham khảo: Cloudflare Blog


No Comment! Be the first one.