Deno คืออะไร
Deno เป็น JavaScript / TypeScript Runtime เจ้าของเดียวกันกับ Node.Js ที่สร้างโดย Ryan Dahl ซึ่งเขากล่าวถึงสิ่งที่เขาเสียใจในการสร้าง Node.Js หลายๆอย่าง เช่น ปัญหาด้านความปลอดภัยของและปัญหาด้านการ Design แล้วในเวลาต่อมาก็ทำการเปิดตัว Deno ทันที! พร้อมกล่าวด้วยว่า Deno นั้นสร้างขึ้นมาเพื่อลบข้อเสียของ NodeJs (ฮา)
ทำไมต้องใช้ Deno
– สร้างความปลอดภัย การทำงานทุกอย่างของ Deno จะทำงานอยู่ใน Sandbox ทำให้มั่นใจได้ว่าตัว Script จะไม่สามารถเข้าถึงไฟล์ในเครื่องก่อนได้รับอนุญาตอย่างแน่นอน
– สามารถใช้กับ Typescript ได้ทันที หลายคนที่เคยใช้ TypeScript กับ Node.Js จะรู้ว่าต้องคอมไพล์ก่อน แต่สำหรับ Deno นั้นไม่จำเป็นอีกต่อไป เนื่องจากมีการสนับสนุนการใช้ TypeScript ตั้งแต่ต้น
– การเขียนง่ายมว๊ากกก
เพราะว่ามันก็คือ JavaScript หรือ TypeScript ธรรมด๊าธรรมดา แทบไม่ต้องเรียนรู้อะไรใหม่ๆเลย จะมีก็แค่ดูว่ามี library อะไรให้เราใช้งานกันบ้าง ซึ่งก็มี library หลักๆให้ใช้อยู่พอสมควรที่เว็บ https://deno.land/std และ https://deno.land/x
– และที่สำคัญที่สุด ฟรี!
ใช้งานกันเลย
ติดตั้ง
Shell (Mac, Linux):
curl -fsSL https://deno.land/x/install/install.sh | sh
PowerShell (Windows):
iwr https://deno.land/x/install/install.ps1 -useb | iex
หรือวิธีอื่นๆก็เข้าไปดูในเว็บ https://deno.land/#installation กันได้
เสร็จแล้วลองพิมพ์
deno --version
ขึ้นผลลัพธ์ประมาณนี้เป็นอันว่าใช้งานกันได้แล้ว
deno 1.0.1
v8 8.4.300
typescript 3.9.2
ลองเล่นกัน
สำหรับ Deno นั้นเกิดมาปุ๊บก็รู้จักกับ TypeScript อยู่แล้ว ดังนั้นเราจะสร้างไฟล์เป็น .js หรือ .ts ก็สามารถรันได้ทันที เราสามารถเขียนโค้ดแล้วรันได้ง่ายๆเหมือน JavaScript ทั่วไป อย่างเช่น
welcome.ts
console.log("Welcome to Deno 🦕");
สามารถรันได้ด้วยคำสั่ง
deno run welcome.ts
จะได้ว่า
Welcome to Deno 🦕
หรือลองทำเป็น server ตามโค้ดตัวอย่างในเว็บ Deno ก็ทำได้ง่ายๆ เหมือนกัน
import { serve } from "https://deno.land/std@0.50.0/http/server.ts";
const s = serve({ port: 8000 });
console.log("http://localhost:8000/");
for await (const req of s) {
req.respond({ body: "Hello World\n" });
}
ลองกดรันดู
deno run server.ts
จะเจอกับ error ว่า
error: Uncaught PermissionDenied: network access to "0.0.0.0:8000", run again with the --allow-net flag
เพราะว่า Deno เค้าพยายามขายเรื่องความปลอดภัย ถ้าจะให้โปรแกรมทำอะไรได้ก็ต้องให้สิทธิ์อนุญาตตอนที่รันโปรแกรมเสมอ อย่างในกรณีนี้ก็ต้องให้สิทธิใช้งาน network ลองรันใหม่แบบนี้
deno run --allow-net server.ts
server รันเรียบร้อยลองไปที่ http://localhost:8000/ ก็จะเห็น Hello World ขึ้นมาแล้ว
อันที่จริง Deno ก็ออกมาสักพักนึงแล้ว แต่ช่วงนี้กลับมาเป็นที่สนใจอีกรอบก็เพราะว่าเพิ่งส่งเวอร์ชัน 1.0 ออกมาสดๆร้อนๆ ถ้าใครอยากจะใช้เป็นตัวเลือกใน project ถัดไปก็ลองศึกษา library ต่างๆให้ดี เพราะว่าเพิ่งเกิดมาไม่นาน จำนวนเครื่องมือต่างๆก็ยังน้อยมากเมื่อเทียบกับ node.js ถ้าหากจะบอกว่า Deno จะมาแทนที่ node.js ในตอนนี้ก็คงจะไม่ใช่ แต่ก็คงต้องลองตามดูกันต่อไปครับ