DENO.JS LÀ Gì? TÌM HIỂU VỀ DENO.JS

Vào ngày 13 tháng 5 năm 2018, Ryan Dahl – cha đẻ của Node.js đã cho ra mắt một Runtime Enviroment(*) cho Javascript có tên là Deno.js, được cho là để khắc phục tất cả các vấn đề của Node.js.

Node.js hiện tại vẫn là Runtime Enviroment tuyệt vời theo cách riêng của nó. Tuy nhiên, Ryan đã thừa nhận một vài điều cần phải cải thiện đối với Node.js như là bảo mật, module, và các gói cài đặt phụ thuộc.

(*) Runtime Enviroment : là môi trường cung cấp các đối tượng, môi trường để JavaScript giao tiếp với máy tính.

Deno.js là gì ? Các tính năng chính của Deno.js ?

Deno hay Deno.js là Runtime Enviroment cho Javascript và TypeScript, sử dụng V8 Engine và ngôn ngữ lập trình Rust. Deno có một số điểm nổi bật như:

  • Bảo mật theo mặc đinh. Không thể truy cập các mô-đun khi chưa được enabled.
  • Hỗ trợ TypeScript.
  • Hệ thống mô-đun chuẩn hoá được đảm bảo hoạt động với Deno.
  • Chỉ gửi duy nhất một tập tin.

Bảo mật

Theo tác giả, bảo mật là một trong những tính năng quan trọng nhất của Deno. Trái ngược với Node, Deno mặc định thực thi trong môi trường ảo hoá (sandbox), điều đó có nghĩa là Runtime không có quyền truy cập vào:

  • Các file hệ thống
  • Hệ thống mạng
  • Các kịch bản khác nhau.
  • Các biến môi trường

Hãy cùng xem hệ thống bảo mật Deno hoạt động:

(async () => {
 const textEncode = new TextEncoder();
 const data = encoder.encode('Hello world\n');

 await Deno.writeFile('helloWorld.txt', data);
 await Deno.writeFile('helloWorld2.txt', data);
})();


Function trên tạo hai tệp txt có tên helloWorld.txt và helloWorld2.txt để in ra dòng chữ Hello world. Function này được thực hiện trong SandBox nên nó không có quyền truy cập vào hệ thống tệp.

Để chạy lệnh trên, hãy gõ:

deno run write-helloWorld.ts
Sẽ có một thông báo hiện ra:
⚠️Deno requests write access to "/Users/user/folder/helloWorld.txt". 
Grant? [a/y/n/d (a = allow always, y = allow once, n = deny once, d = deny always)]
Thông báo này cho thấy, việc tạo một file text phải có sự đồng ý. Vì vậy để khắc phục hãy thêm option :
allow alway :
deno run --allow-write write-helloWorld.ts


Sẽ không có lỗi nào xảy ra, và 2 file text đã được tạo thành công.

Bên cạnh option –allow-write, còn nhiều option khác như –allow-net, cho phép sử dụng network request, allow-env, cho phép truy cập vào môi trường, –allow-run, cho phép thực thi các chương trình con.

Modules

Deno.js giống như các trình duyệt, tải các module bằng URL. Nhiều người ban đầu đã bối rồi khi thấy các import module bằng Url

import { assertEquals } from “https://deno.land/std/testing/asserts.ts”;

Bằng việc Import module bằng URL, Deno.sjs không phụ thuộc vào Npm. Điều đó cho thấy sẽ không cần file package.json và thư mục node_modules cồng kềnh.

Khi ứng dụng bắt đầu, Deno.js sẽ tải, tự động Import các module và lưu vào caches. Bạn có thể làm mới các module bằng lệnh –reload.

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

Deno.js được tạo ra nhằm tương thích với trình duyệt. Về mặt kĩ thuật, khi sử dụng các mô-đun ES, Deno sẽ không cần phải sử dụng webpack nên sẽ luôn luôn tương thích với các trình duyệt, kể cả với các trình duyệt lâu đời như Explorer Internet.

Hỗ trợ TypeScript

Sử dụng TypeScript rất dễ dàng trong Deno.js mà không cần bất kì tệp cấu hình nào. Tuy nhiên, bạn cũng có thể viết bằng Javascript mà không vấp phải rắc rồi nào.

Tóm lại

Deno.js, là một Runtime Enviroment mới cho TypeScript và Javascript, được ấp ủ phát triển được một thời gian khá dài. Tuy nhiên Deno vẫn còn một chặng đường phía trước để sánh ngang với NodeJs. Với cách tiếp cận phi tập trung, Deno sẽ không phụ thuộc vào trình quản lý gói như Npm.

Nguồn: Viblo.

Facebook Comments
Đánh giá bài viết

Bạn thích bài viết này chứ?
Đăng ký để nhận những bài viết thú vị như thế hàng tuần.

Đừng sợ thất bại, chỉ sợ việc dậm chân tại chỗ

TÌM VIỆC
Bình luận