Người tạo ra NodeJS, Ryan Dahl,đã phát hành một thời gian chạy mới nhằm mục đích giải quyết nhiều thiếu sót của Node. Phản ứng ban đầu của bạn có thể là “Ồ tuyệt, một khuôn khổ Javascript khác? Đúng thứ tôi cần…'. Đừng lo lắng, tôi đã có phản ứng tương tự. Sau khi hiểu những ưu điểm, tôi cũng đã hiểu tại sao Deno lại chính là thứ mà một nhà phát triển Javascript back-end cần vào năm 2020. Hãy cùng xem 5 lý do hàng đầu khiến các nhà phát triển javascript có trải nghiệm mượt mà và hiện đại hơn nhiều khi sử dụng Deno vs. Node.

1: Mô-đun Javascript - ES hiện đại

Nếu bạn là một nhà phát triển React như tôi, bạn đã nhận thấy rằng cú pháp để nhập các gói là khác nhau khi làm việc với NodeJS. Điều này là do Node được tạo ra vào năm 2009, đã có rất nhiều bản cập nhật và cải tiến cho Javascript kể từ đó.

Trong React (và Deno), chúng tôi sử dụng import package from 'package'
Cú pháp trong khi chúng ta dùng Node const package = require("package")
Cú pháp

Việc nhập Mô-đun ES vượt trội hơn vì hai lý do:
1: Với import, bạn chỉ có thể tải có chọn lọc những phần bạn cần từ một gói, điều này giúp tiết kiệm bộ nhớ.
2: Đang tải đồng bộ với requirekhi importtải mô-đun không đồng bộ , điều này cải thiện hiệu suất.

Nếu bạn nhận thấy trong hình trên, chúng tôi đang nhập gói **Với Deno, bạn không còn phụ thuộc vào NPM nữa. Đúng vậy, không cần package.json. Mỗi gói được tải vào từ một URL.

Trong NodeJS, để sử dụng một gói, trước tiên bạn phải cài đặt nó từ NPM:

npm i moment

Chờ nó cài đặt, sau đó đưa nó vào ứng dụng của bạn:

const moment = require("moment")

Ngoài ra, bất cứ khi nào ai đó muốn chạy repo NodeJS của bạn cục bộ, họ sẽ phải cài đặt tất cả các phụ thuộc từ NPM.

Trong Deno, gói được nhập từ một URL, vì vậy nếu bạn muốn sử dụng thời điểm, bạn chỉ cần nhập https://deno.land/x/moment/moment.ts.
** từ một URL, điều này dẫn chúng tôi đến lợi thế tiếp theo của Deno.

2: Các gói phi tập trung

Với Deno, bạn không còn phụ thuộc vào NPM nữa. Đúng vậy, không cần package.json. Mỗi gói được tải vào từ một URL.

Trong NodeJS, để sử dụng một gói, trước tiên bạn phải cài đặt nó từ NPM:

npm i moment

Chờ nó cài đặt, sau đó đưa nó vào ứng dụng của bạn:

const moment = require("moment")

Ngoài ra, bất cứ khi nào ai đó muốn chạy repo NodeJS của bạn cục bộ, họ sẽ phải cài đặt tất cả các phụ thuộc từ NPM.

Trong Deno, gói được nhập từ một URL, vì vậy nếu bạn muốn sử dụng thời điểm, bạn chỉ cần nhập https://deno.land/x/moment/moment.ts.Một lợi thế lớn khác khi nói đến các gói trong Deno là mọi gói đều được lưu vào bộ nhớ đệm trên ổ cứng sau khi cài đặt. Điều này có nghĩa là việc cài đặt một gói chỉ diễn ra một lần. Nếu bạn muốn nhập lại phần phụ thuộc, ở bất kỳ đâu, nó sẽ không phải tải xuống.

Một lợi thế lớn khác khi nói đến các gói trong Deno là mọi gói đều được lưu vào bộ nhớ đệm trên ổ cứng sau khi cài đặt. Điều này có nghĩa là việc cài đặt một gói chỉ diễn ra một lần. Nếu bạn muốn nhập lại phần phụ thuộc, ở bất kỳ đâu, nó sẽ không phải tải xuống.

3: TypeScript hoạt động tự nhiên, không cần cấu hình

Để TypeScript hoạt động với NodeJS là một quá trình gồm nhiều bước. Bạn phải cài đặt typecript, cập nhật package.json, tsconfig.json và đảm bảo rằng các mô-đun của bạn có @types được hỗ trợ.

Trong Deno, tất cả những gì bạn phải làm là lưu tệp của mình dưới dạng .ts thay vì .js, trình biên dịch TypeScript đã được cài sẵn ngay trong đó.

4: Top level await —Sử dụng await bên ngoài hàm không đồng bộ

Trong Node, từ khóa await chỉ có thể truy cập được trong một hàm không đồng bộ.

Với Deno, bạn có thể await bất cứ thứ gì ở bất cứ đâu mà không cần gói nó trong một hàm không đồng bộ.

Hầu hết tất cả các ứng dụng Javascript đều bao gồm nhiều chức năng không đồng bộ. Nâng cấp này làm cho code sạch và đơn giản hơn nhiều.

5: Truy cập vào Browser API (window, Fetch)

Để thực hiện các yêu cầu HTTP trong javascript, chúng ta có thể sử dụng Fetch API. Trong NodeJS, chúng tôi không có quyền truy cập vào Browser API vì vậy chúng tôi không thể gọi hàm tìm nạp một cách tự nhiên. Đầu tiên chúng ta phải cài đặt gói:

npm i node-fetch

Sau đó nhập gói:

const fetch = require("node-fetch")

Và chỉ khi đó chúng tôi mới có thể thực hiện gọi tìm nạp.

Deno nguyên bản có quyền truy cập vào đối tượng window, có nghĩa là bạn có thể tiếp tục và gọi fetch ('https://something.com') cũng như bất kỳ đối tượng nào khác trong Browser API mà không cần cài đặt bất kỳ thư viện nào.

Khi kết hợp với lợi thế của top level await, bây giờ bạn có thể thấy code Deno đơn giản hơn code Node nhiều như thế nào:

chek lại ko gắn link

Khi kết hợp với lợi thế cấp cao nhất đang chờ đợi, bây giờ bạn có thể thấy mã Deno đơn giản hơn mã Node nhiều như thế nào:

Nó không kết thúc ở đó

Deno có nhiều ưu điểm khác, chẳng hạn như an toàn hơn theo mặc định, bạn có thể thực thi các tệp nhị phân Wasm, nó có nhiều thư viện được tích hợp sẵn và danh sách vẫn tiếp tục.

Tất cả các điểm được đề cập trong bài viết này được kết nối với nhau, kết hợp với nhau để tạo thành một thời gian chạy javascript back end 2020 hiện đại hơn. Là một nhà phát triển React, tôi rất thích Deno. Bây giờ tôi có thể sử dụng import cú pháp, viết await bất cứ nơi nào tôi muốn, sử dụng TypeScript mà không cần cấu hình bất cứ thứ gì, và thậm chí gọi điện fetch mà không cần phải cài đặt một gói. Nó thật là dễ dàng.

Deno cuối cùng sẽ thay thế Node? Có lẽ. Nó có thể sẽ mất vài năm. Hệ sinh thái NodeJS rất lớn, sẽ mất nhiều thời gian để Deno bắt kịp. Nhưng các nhà phát triển Javascript gần đây đã ưu ái Deno cho các dự án mới của họ, vì vậy nếu bạn đang muốn bắt đầu một dự án mới sớm thì điều đó chắc chắn đáng để xem xét. Để biết thêm thông tin về cách bắt đầu, hãy truy cập de.land

Cảm ơn bạn đã đọc bài viết này, tôi hy vọng bạn thấy nó hữu ích.

Tìm hiểu thêm về khóa học JavaScript tại Techmaste.

Bài viết gốc tại đây.