Những thay đổi của Deno trong năm 2023
- Deno đã hiểu tệp
package.json, đồng thời có thể import các mô-đun Node tích hợp sẵn như node:fs và node:crypto bằng cách dùng định danh node:.
- API máy chủ web mới
Deno.serve đã được ổn định hóa, và thông lượng HTTP được cải thiện khoảng 73% trong năm.
deno compile nay hỗ trợ worker, import động và các mô-đun npm.
- Deno tận dụng tốt hơn Web Streams (
ReadableStream và WriteableStream) cùng AbortController trên toàn bộ API để thu hẹp khoảng cách giữa lập trình trên trình duyệt và phía máy chủ.
- Tệp cấu hình
deno.json của Deno giờ cũng có thể được dùng làm import map, đơn giản hóa schema, đồng thời bổ sung hỗ trợ glob và thuộc tính cấp cao nhất "exclude" hữu ích.
- Jupyter, công cụ notebook mã nguồn mở, nay đã hỗ trợ Deno với JavaScript và TypeScript.
- WebGPU đã được thêm vào Deno sau gần 1 năm phát triển.
- TypeScript không cần cấu hình của Deno có khả năng tích hợp với trình soạn thảo tốt hơn nhờ những cải tiến đáng kể trong LSP và tích hợp VS Code.
- Fresh, framework web dựa trên Deno, đã mở rộng tính năng với hỗ trợ Tailwind, Partials, tệp layout và nhiều thứ khác.
- Deno Deploy trở nên mạnh mẽ hơn với các khối xây dựng gốc được phân tán toàn cầu như Deno KV, Queues, Cron.
- Nền tảng đã ra mắt subhosting tự phục vụ để có thể triển khai và chạy JavaScript đa tenant không đáng tin cậy.
Cải thiện khả năng tương thích với Node và npm
- Deno mở rộng khả năng tương thích với hệ sinh thái Node, bao gồm cả các mô-đun Node tích hợp sẵn như
node:fs, node:child_process thông qua định danh node:.
- Deno đã giới thiệu nhiều tính năng mới để chuyển đổi mượt mà từ Node sang Deno:
- Cờ
--unstable-byonm cho phép dùng trình quản lý gói npm ưa thích của bạn ngay trong Deno.
- Cờ
--unstable-sloppy-imports nới lỏng tính nghiêm ngặt của việc import mô-đun để phù hợp với nhiều phong cách và thực tiễn viết mã khác nhau.
- Cờ
--unstable-unsafe-proto hỗ trợ Object.prototype.__proto__, thứ mà nhiều gói npm phụ thuộc vào.
- Việc ổn định hóa Node-API mở rộng phạm vi hỗ trợ, cho phép sử dụng các gói npm phụ thuộc vào Node-API mà không cần cờ
--unstable.
Máy chủ web đơn giản và nhanh hơn với Deno.serve()
- Hàm
Deno.serve() đã được giới thiệu và ổn định hóa, cho phép nhà phát triển khởi động máy chủ với lượng mã tối thiểu.
- Hiệu năng được cải thiện đáng kể thông qua các tối ưu hóa có mục tiêu trong thư viện lõi và cơ chế event loop.
- Thông lượng HTTP của Deno tăng rõ rệt trong các bài benchmark dùng thiết lập máy chủ mặc định "Hello, world".
deno.json linh hoạt hơn
- Deno theo đuổi nguyên tắc có thể sử dụng mà không cần cấu hình phức tạp, và tiếp tục cải thiện tệp cấu hình
deno.json để duy trì sự dễ dùng:
- Cho phép dùng
deno.json như một import map.
deno fmt hỗ trợ dấu chấm phẩy, mang lại sự linh hoạt về phong cách mã.
- Tích hợp với
package.json giúp việc chuyển đổi giữa môi trường Node và Deno trở nên dễ dàng hơn.
- Đơn giản hóa cấu trúc
deno.json để nhà phát triển có thể điều hướng trực quan hơn.
- Việc đưa vào các mẫu glob cho phép kiểm soát chính xác hơn việc bao gồm hoặc loại trừ tệp và thư mục.
Trải nghiệm phát triển mượt mà hơn với LSP
- Tích hợp Language Server Protocol (LSP) của Deno cung cấp các tính năng như điều hướng đến định nghĩa chính xác, IntelliSense toàn diện và định dạng mã mượt mà cho các dự án TypeScript.
- Rất nhiều nỗ lực đã được đầu tư để cải thiện LSP, giúp việc viết mã với Deno trở nên mượt mà và trực quan hơn.
WebGPU
- WebGPU mang công nghệ tiên tiến vào Deno, cho phép nhà phát triển trực tiếp khai thác sức mạnh của phần cứng GPU bằng JavaScript.
- WebGPU có thể được sử dụng sau cờ
--unstable-webgpu và là một cột mốc quan trọng mở rộng khả năng của các ứng dụng Deno.
Notebook Jupyter
- Jupyter, công cụ notebook mã nguồn mở, nay đã hỗ trợ Deno với JavaScript và TypeScript.
- Nhờ đó, có thể thực hiện khoa học dữ liệu, trực quan hóa và nhiều tác vụ khác bằng JavaScript, TypeScript hiện đại và các API chuẩn web.
Các crate Rust mã nguồn mở đáng chú ý
- Deno gắn kết với nhiều dự án mã nguồn mở khác nhau và tích cực đóng góp để mở rộng bộ tính năng cũng như tối ưu hiệu năng của Deno.
- Trong năm nay, Deno đã phát hành một số crate Rust có thể hữu ích khi sử dụng độc lập.
Fresh
- Fresh là framework web full-stack hiện đại của Deno, mặc định không gửi JavaScript phía client, và tiếp tục được cải thiện để dễ sử dụng hơn cũng như nâng cao hiệu năng.
Mở rộng hoạt động kinh doanh đám mây của Deno
- Deno Subhosting đã chuyển từ việc hỗ trợ edge functions của Netlify và các cửa hàng thương mại điện tử của khách hàng Deco.cx thành một dịch vụ độc lập mà bất kỳ ai cũng có thể dùng miễn phí.
- Việc ra mắt các thành phần đám mây gốc như Deno KV, Queues, Cron cho thấy tiến triển hướng tới tầm nhìn đơn giản hóa web development một cách căn bản.
Deno 2
- Deno 2 dự kiến sẽ mang đến runtime được cải thiện, bao gồm các công bố đáng chú ý về việc tăng cường khả năng tương thích với Node và npm, cũng như cách quản lý và tối ưu hóa các phụ thuộc của dự án.
Ý kiến của GN⁺:
- Điều quan trọng là Deno đang cải thiện đáng kể khả năng tương thích với Node.js và tập trung vào việc đơn giản hóa web development. Điều này có thể giúp các nhà phát triển Node.js hiện tại chuyển sang Deno dễ dàng hơn và thúc đẩy việc chấp nhận Deno.
- Việc tích hợp các tính năng tiên tiến như WebGPU cho thấy Deno đang vượt ra ngoài vai trò một nền tảng server-side đơn thuần để phù hợp với phạm vi phát triển ứng dụng rộng hơn. Điều này có thể đặc biệt hấp dẫn với các nhà phát triển cần tính toán hiệu năng cao tận dụng GPU.
- Sự phát triển của framework Fresh và Deno Deploy cho thấy Deno có thể đóng vai trò quan trọng trong phát triển web full-stack, đồng thời củng cố vị thế của Deno như một dịch vụ dựa trên đám mây. Những bước tiến này đang làm tăng khả năng Deno trở thành một tên tuổi lớn trong web development hiện đại.
2 bình luận
Ý kiến trên Hacker News
pkgcủa Node.js về mặt kích thước.deno-corerất cơ bản và khó nhúng. Họ kỳ vọng Deno có thể trở thành "plugin runtime" trong thế giới công cụ JS, và giải thích rằng hiện tại họ đang dùngstdiotrong tiến trình host Rust để giao tiếp với tiến trình con Node.js.