5 điểm bởi GN⁺ 2024-02-06 | 2 bình luận | Chia sẻ qua WhatsApp

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:fsnode: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 (ReadableStreamWriteableStream) 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

 
[Bình luận này đã bị ẩn.]
 
GN⁺ 2024-02-06
Ý kiến trên Hacker News
  • Một người dùng chỉ ra rằng họ vẫn chưa tìm ra cách tải ứng dụng Deno trong môi trường không có kết nối Internet, và hoàn toàn không có tài liệu nào về việc này. Người này cho rằng vì thế Deno khó có hy vọng trong môi trường doanh nghiệp.
  • Một người dùng khác bày tỏ sự quan tâm đến tính năng WebGPU, đồng thời giải thích rằng họ đang tạo GUI desktop bằng JavaScript/TypeScript thông qua framework Slint mà không cần trình duyệt hay webview. Họ kỳ vọng nếu Deno có thể trực tiếp mở cửa sổ, thì có thể phân phối wasm thay vì binary native cho mọi nền tảng. Tuy nhiên, họ nói thêm rằng tính năng WebGPU không bao gồm API để mở cửa sổ, nên vẫn cần thêm thư viện.
  • Một người dùng hy vọng tình hình biên dịch của Deno sẽ được cải thiện, đồng thời chỉ ra rằng file thực thi được tạo ra có dung lượng hơn 90MB và phát sinh lỗi khi nén, nên khó phân phối như ngôn ngữ Go. Họ đề cập rằng Deno hiện còn tệ hơn giải pháp pkg của Node.js về mặt kích thước.
  • Một người dùng khác muốn thấy sự hỗ trợ lớn hơn để Deno có thể được nhúng vào tiến trình host Rust. Họ đang viết một JavaScript bundler và cần runtime Node.js để chạy plugin, nhưng cho biết crate deno-core rấ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ùng stdio trong tiến trình host Rust để giao tiếp với tiến trình con Node.js.
  • Một người dùng cho biết họ không thích JavaScript, nhưng sau khi thử dùng Deno thì có trải nghiệm rất mượt và nhanh, nên đưa ra đánh giá tích cực.
  • Một người dùng khác nói rằng trong năm 2023 họ lần đầu triển khai một ứng dụng Deno không hề đơn giản lên production; dù gặp khó khăn trong quá trình học cách đồng bộ file lock trong một repository có nhiều entry point, nhưng nhìn chung đó vẫn là một trải nghiệm tốt.
  • Trước tin Jupyter đã hỗ trợ JavaScript và TypeScript bằng cách sử dụng Deno, một người dùng phản ứng tích cực nhưng cũng nhắc đến việc Python có hỗ trợ rất mạnh cho số liệu và toán học, và đặt câu hỏi liệu có ai thực sự muốn dùng thứ này hay không.
  • Một người dùng cho biết có thể đăng ký vào danh sách chờ của JSR được liên kết ở cuối bài viết, và tò mò không biết đội ngũ Deno đang xây dựng điều gì.
  • Có người đã chia sẻ một liên kết về việc Deno Deploy đã giảm số lượng khu vực GCP từ 35 xuống còn 12.
  • Có người dùng nói rằng họ muốn sử dụng framework phát triển web Fresh, nhưng việc hiện chỉ hỗ trợ Tailwind khiến nó trông còn non nớt. Họ thấy khó hiểu khi ở vòng lặp tiếp theo, nhóm lại ưu tiên view transition thay vì CSS bundling.