
Deno là gì? Runtime JavaScript/TypeScript an toàn, hiện đại thay thế Node.js
Deno (đọc /ˈdiːnoʊ/) là runtime mã nguồn mở cho JavaScript, TypeScript, và WebAssembly do Ryan Dahl (tác giả Node.js) phát triển từ 2018. Mục tiêu: sửa những “lỗi thiết kế” của Node.js — bảo mật mặc định, module ES chuẩn, toolchain tích hợp, không phụ thuộc package.json/node_modules.
Phiên bản 1.0 ra mắt 5/2020, v2.0 (LTS) 9/2024. Deno 2 tương thích ngược Node: chạy npm:pkg trực tiếp, node_modules vẫn hoạt động, migration dần dần.
5 khác biệt cốt lõi so với Node.js
| Đặc điểm | Node.js | Deno |
|---|---|---|
| Bảo mật | Full access mặc định | Sandbox: --allow-net, --allow-read, --allow-env… |
| Module system | CommonJS + ESM, node_modules |
ES modules chuẩn web: import từ URL, JSR registry |
| TypeScript | Cần tsc, build step |
Chạy .ts trực tiếp, type-check built-in |
| Toolchain | npm/yarn/pnpm + eslint/prettier/jest… | Built-in: deno fmt, deno lint, deno test, deno bench |
| Config | package.json + nhiều file config |
deno.json duy nhất (tasks, imports, lint/fmt settings) |
Bảo mật “secure by default” hoạt động như thế nào?
Code Deno chạy trong sandbox không có quyền đọc file, mạng, env, subprocess trừ khi cấp explicit flag:
# Chỉ cho phép mạng, đọc file ./data
deno run --allow-net --allow-read=./data server.ts
# Chạy test với quyền ghi file temp
deno test --allow-write=/tmp
# Liệt kê tất cả permissions
deno run --help | grep allow
Model này phù hợp serverless, edge computing, supply-chain security — giảm thiểu tác động khi dependency bị compromise (sự kiện event-stream, ua-parser-js năm trước). Permission system granular: cấp từng file, từng domain, từng env var.
Hệ sinh thái package: JSR thay vì npm
Deno dùng JSR (JavaScript Registry) — registry chỉ ESM, type-safe, không cần package.json. Import kiểu web:
import { serve } from "jsr:@std/http@1";
import { assertEquals } from "jsr:@std/assert@1";
Tương thích npm: npm:@pkg/name trong import, Deno tự resolve qua CDN. Migration từ Node: deno add npm:express rồi sửa import. JSR publish tự động từ GitHub, version theo semver, docs auto-generate. Hiện JSR đã có 10k+ packages, bao gồm std library chính thức.
Deno Deploy và Edge Computing
Deno Deploy là platform serverless toàn cầu chạy Deno tại 35+ edge locations. Deploy từ GitHub push, cold start dưới 10ms, miễn phí 100k requests/tháng. Phù hợp API gateway, middleware, webhook handler, A/B testing edge.
Khác với Cloudflare Workers (V8 isolates), Deno Deploy chạy full Deno runtime — có filesystem API, WebGPU, FFI. Hỗ trợ Deno.serve web standard, chạy Next.js, Fresh, Hono framework.
Deno cũng hỗ trợ chạy containerized với Dockerfile chính thức. Image nhỏ hơn Node, cold start nhanh hơn nhờ V8 snapshot. CI/CD: GitHub Actions chạy deno test trực tiếp, không cần setup Node cache.
Deno Fresh và các framework phổ biến
Fresh là framework web mặc định của Deno, SSR, không build step, tận tốc edge. Hỗ trợ Tailwind CSS, Preact/React island, file-based routing. Hono (viết bằng TypeScript) chạy trên Deno, Cloudflare, Bun, Node — kiểu Express API nhỏ gọn. Oak middleware framework tương thích Express.
Deno 2 thêm: deno serve để production deploy local, deno coverage built-in, deno upgrade quản lý phiên bản. Task runner tích hợp: deno task dev, deno task build trong deno.json thay npm run.
Ryan Dahl nói Deno là “Node.js done right” — không hoàn toàn, vì Node vẫn là chuẩn sản xuất. Nhưng Deno 2 là sự cân bằng giữa innovation và pragmatism: giữ được phong cách web-standard, nhưng không bắt buộc user học kiến trúc mới.
Khi nào nên chọn Deno?
- Project mới: muốn TypeScript first-class, toolchain zero-config, bảo mật mặc định.
- Edge/Serverless: Deno Deploy, Cloudflare Workers (Deno-compatible), AWS Lambda custom runtime.
- Security-sensitive: supply-chain audit, least-privilege execution.
- Team nhỏ: giảm cognitive load — một tool thay vì 5-10 config file.
- Migration dần: Deno 2 chạy npm packages,
deno add npm:lodashthay vì npm install.
Lưu ý: Node.js vẫn dẫn môi trường enterprise, ecosystem lớn, hiring pool rộng. Deno 2 đã giảm barrier migration — song song chạy cả hai trong transition period. Hiring Deno dev chưa phổ biến như Node tại Việt Nam.
Tóm lại
Deno không phải “Node.js killer” — nó là runtime thế hệ sau học từ sai lầm của tiền nhiệm. Secure-by-default, ESM native, toolchain all-in-one, TypeScript zero-config. Nếu bắt đầu project mới 2024-2025, Deno 2 đáng để đánh giá thay vì tự động chọn Node.js. Ecosystem đang trưởng thành: Fresh framework, Hono, Oak, JSR packages vượt 10k.



