header image


Deno là gì?

Cũng như Node, Deno là một Javascript Runtime Environment chạy trên nền engine V8 và ngôn ngữ lập trình Rust.

Deno được tạo ra Vào ngày 13 tháng 5 năm 2018 bởi Ryan Dahl nhằm khắc phục các vấn đề của Node.

Hãy cùng mình “học” Deno trong bài viết này nhé.

Điểm nổi bật của Deno

TL;DR

  • Bảo mật theo mặc đinh. Các mô-đun khi chưa được enable sẽ không truy cập được.
  • Hỗ trợ TypeScript, không cần cài thêm gì cả.
  • Có một hệ thống mô-đun chuẩn hoá được đảm bảo tương thích với Deno.
  • Chỉ gửi duy nhất một tập tin.

Bảo mật

Theo tác giả, Deno được chạy trong một sandbox theo mặc định, do đó, runtime sẽ không có quyền truy cập vào các file hệ thống, hệ thống mạng, các biến môi trường.

Có thể nhận thấy điều đó trong ví dụ sau

function main() {
  const textEncoder = new TextEncoder();
  const textData = textEncoder.encode("Hello CodeChoVui!\n");

  Deno.writeFileSync("Hello.txt", textData);
}

main();

Khi thực thi file trên, Deno sẽ cần một số quyền để thực thi.

screenshot 1

Ta có thể bỏ qua thông báo này trong các lần chạy bằng cách dùng thêm options khi thực thi với Deno.

deno run --allow-write index.ts

Modules

Đối với Node, các modules sẽ được lưu tại thư mục node_modules/ trên máy tính. Tuy nhiên với Deno, các modules sẽ được tải xuống dựa vào URL, giống như một trình duyệt, ban đầu tui khá là khó chịu về cái này…

Đối với file hệ thống, việc import sẽ tương tự như Node.

// Ví dụ khi import trong Deno
import { VERSION } from "https://deno.land/std/version.ts";
console.log(VERSION);

Typescript

Khác với Node khi mà bạn sẽ cần cài thêm package TSC để có thể lập trình với Typescript, Deno đã mặc định hỗ trợ Typescript.

Bạn có thể sử dụng Typescript trong Deno mà không cần bất kỳ cài thêm bất kỳ tệp cấu hình gì.

Tuy nhiên, bạn cũng có thể lập trình bằng Javascript nếu muốn.

Tương thích với trình duyệt

Deno được tạo ra nhằm tương thích với trình duyệt. Do khi sử dụng các mô-đun ES, Deno sẽ không cần sử dụng webpack nên độ tương thích với các trình duyệt là rất tốt.

Kết

Tóm gọn, Deno là nột Javascript Runrtime trên engine V8. Với định hướng của Deno, nó sẽ không cần các trình quản lý gói như NPM do đó, giảm thiểu khối lượng cho các dự án.


Kunniii