Deno: Từ quá trình tò mò tìm hiểu đến áp dụng vào các dự án thực tế

Tram Ho

Dạo gần đây trong cộng đồng Dev JS rộ lên tin về một tân binh mới với cái tên Deno, đúng lẽ ra đây chỉ là chuyện thường ngày của JS vì ngày nào chả có cái gì đấy liên quan đến JS được ra đời. Vậy tại sao Deno lại hót hòn họt đến thế. Chúng ta hãy cùng thử xem như nào

Tiểu sử

Deno là người em cùng cha không mẹ của NodeJS, được viết bởi chính cha đẻ của Nodejs là Ryan Dahl. Mặc dù đã không còn làm việc với Nodejs nữa nhưng Ryan đã nhận ra trong thiết kế của Node còn tồn đọng nhiều vấn đề không thể sửa chữa, vì thế anh đã quyết định tạo ra Deno – một Javascript runtime tương tự như Nodejs chạy trên nền V8 Engine, điểm khác biệt là Nodejs được built bằng C++ trong khi Deno được built bằng Rust.

Theo một số chuyên gia về JS mà mình đã bịa ra cho rằng: Deno đã phá vỡ thế độc quyền của Nodejs suốt nhiều năm nay và rất có thể các Framework chạy trên nền tảng là Nodejs cũng sẽ sớm bị thay thế bằng Deno ví dụ như: Vue, React là 2 cái tên nổi bật.

Hãy cùng đi tìm hiểu xem Deno có gì mà thần thánh đến vậy

Cài đặt Deno

Trước đây hẳn các Dev JS đều đã quen với việc cài Node bằng npm và các package thứ 3 cũng bằng npm hoặc yarn luôn. Tuy Deno nó được tạo ra dựa trên Node nhưng nó lại khác Node ngay từ cách cài đặt, bạn có thể cài đặt Deno bằng nhiều cách khác nhau như là dùng curl, iwr hoặc Cargo, nếu bạn đang sử dụng máy macOS thì có thể dùng Homebrew,…

Ở đây mình sẽ sử dụng curl, sau khi cài xong thì sẽ có một số thứ đặc biệt mà đảm bảo là các bạn có nằm mơ cũng không vẽ được giấc mơ vô lý vậy, và đây có lẽ cũng chính là những điểm ăn tiền của Deno so với Node

Để cài đặt các bạn gõ command sau:


Deno đã cài thành công nhưng đường dẫn mặc định của nó đang nằm trong thư mục User, nên mình sẽ chạy thêm một command nữa để gọi deno dễ dàng hơn.

Nếu có thông tin phiên bản hiện lên là thành công.

Để tiếp tục test Deno, mình tạo một thư mục có tên Deno và trong đó mình tạo file example.ts. Tại sao lại là .ts mà không phải .js? Thật ra là Deno đều có thể đọc được cả 2 file này, điểm khác biệt là với các file .ts thì Deno sẽ chạy thêm một bước compile code nữa, còn với .js thì Deno sẽ chạy trực tiếp luôn

Và để chạy một file chúng ta sẽ sử dụng cú pháp: deno run [file]

Như bạn có thể thấy, npm đã không còn xuất hiện ở đây nữa, chúng ta đều biết rằng để có thể sử dụng các thư viện trong hệ sinh thái Node thì cần đến npm cài đặt và package.json để quản lý chúng nhưng Deno đã thay đổi điều này. Đó cũng là điểm cộng đầu tiên, không còn package.json cũng đồng nghĩa với không còn phải cài đặt hàng đống thư viện mặc định và cái node_modules nặng như hố đen vũ trụ nữa.

Tuy nhiên không phải vì vậy mà chúng ta không thể sử dụng các package đã có sẵn, việc cài đặt các package này sẽ được giải thích ở phần sau

Khởi tạo Server

Để khởi tạo một Server sử dụng Deno chạy một ứng dụng web cơ bản, đầu tiên các bạn tạo 2 file: server.tsindex.html

index.html

server.ts

Nhìn vào đoạn code trên, điều đầu tiên các bạn có thể thấy đó là Deno cũng sử dụng các thư viện như Node nhưng các thư viện này không cần tải xuống trước mà sẽ được import thông qua HTTP URL, đó là lý do chúng ta không cần package.jsonnpm nữa. Tập hợp một số các thư viện mẫu đã được xây dựng, các bạn có thể xem ở đây: https://deno.land/std/

Với việc tạo một server HTTP thì chúng ta sẽ sử dụng thư viện https://deno.land/std/http/

Các bạn khởi động Server bằng cú pháp: deno run server.ts

Lúc này trên cửa sổ terminal Deno sẽ tải về các package được import, các package này sẽ được tải về một lần duy nhất khi server được chạy lần đầu, sau đó nó sẽ được cache lại cho các lần chạy tiếp theo, tiết kiệm được khá nhiều tài nguyên máy và cả thời gian so với npm

Lưu ý: Khi chạy với cú pháp deno run server.ts các bạn sẽ gặp lỗi như sau:

Lỗi này xảy ra là do Deno không cho phép chương trình đọc file index.html khi chưa được cấp quyền tương ứng, đây cũng là điểm ăn tiền hơn so với Node, có lẽ các bạn không để ý chứ các thư viện khi được import vào Node đều có thể thực hiện bất cứ hành động gì tùy thích mà không cần hỏi cấp quyền, điều này khiến máy của bạn có nguy cơ bị tấn công cài mã độc nếu cài nhầm một thư viện độc hại.

Để cung cấp quyền cho Deno, bạn chạy lại command sau: deno run --allow-net --allow-read server.ts

Kiểm tra xem web đã hoạt động chưa nào: http://localhost:8080/

Tạm kết

Như vậy là chúng ta đã tìm hiểu sơ cua về Deno và cách setup một server bằng Deno, mình sẽ tạm kết thúc phần vọc vạch ở đây, còn phần thực tế thì sẽ để trong bài viết sau vậy :3

Cám ơn các bạn đã theo dõi bài viết!
Chia sẻ bài viết ngay

Nguồn bài viết : Viblo