Skip to main content
0
JavaScriptProgramming LanguageTypescript

ทำความรู้จักกับ Deno น้องใหม่มาแรงในตอนนี้กัน

Deno คืออะไร

Deno เป็น JavaScript / TypeScript Runtime เจ้าของเดียวกันกับ Node.Js ที่สร้างโดย Ryan Dahl ซึ่งเขากล่าวถึงสิ่งที่เขาเสียใจในการสร้าง Node.Js หลายๆอย่าง เช่น ปัญหาด้านความปลอดภัยของและปัญหาด้านการ Design แล้วในเวลาต่อมาก็ทำการเปิดตัว Deno ทันที! พร้อมกล่าวด้วยว่า Deno นั้นสร้างขึ้นมาเพื่อลบข้อเสียของ NodeJs (ฮา)

https://media.giphy.com/media/LbwJp26pqGf0k/giphy.gif
//นั่นมันไดโนเสาร์ !!
https://commons.wikimedia.org/wiki/File:Deno.svg
//นี่มัน Deno ! เอ้ย ถูกแล้ว

ทำไมต้องใช้ Deno

– สร้างความปลอดภัย การทำงานทุกอย่างของ Deno จะทำงานอยู่ใน Sandbox ทำให้มั่นใจได้ว่าตัว Script จะไม่สามารถเข้าถึงไฟล์ในเครื่องก่อนได้รับอนุญาตอย่างแน่นอน

– สามารถใช้กับ Typescript ได้ทันที หลายคนที่เคยใช้ TypeScript กับ Node.Js จะรู้ว่าต้องคอมไพล์ก่อน แต่สำหรับ Deno นั้นไม่จำเป็นอีกต่อไป เนื่องจากมีการสนับสนุนการใช้ TypeScript ตั้งแต่ต้น

– การเขียนง่ายมว๊ากกก 

เพราะว่ามันก็คือ JavaScript หรือ TypeScript ธรรมด๊าธรรมดา แทบไม่ต้องเรียนรู้อะไรใหม่ๆเลย จะมีก็แค่ดูว่ามี library อะไรให้เราใช้งานกันบ้าง ซึ่งก็มี library หลักๆให้ใช้อยู่พอสมควรที่เว็บ https://deno.land/std และ https://deno.land/x

– และที่สำคัญที่สุด ฟรี!

https://media.giphy.com/media/TUMBjT9u5LmV2/giphy.gif

ใช้งานกันเลย

ติดตั้ง

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 ในตอนนี้ก็คงจะไม่ใช่ แต่ก็คงต้องลองตามดูกันต่อไปครับ

https://deno.land/v1/hoodie
รูปไดโนเสาร์น่ารักดี ในเว็บ Deno เค้าเปิดพรีออเดอร์เสื้อลายนี้ด้วยนะ https://deno.land/v1/hoodie

Develeper

Author Develeper

More posts by Develeper

เราใช้คุกกี้เพื่อพัฒนาประสิทธิภาพ และประสบการณ์ที่ดีในการใช้เว็บไซต์ของคุณ คุณสามารถศึกษารายละเอียดได้ที่ นโยบายความเป็นส่วนตัว และสามารถจัดการความเป็นส่วนตัวเองได้ของคุณได้เองโดยคลิกที่ ตั้งค่า

ตั้งค่าความเป็นส่วนตัว

คุณสามารถเลือกการตั้งค่าคุกกี้โดยเปิด/ปิด คุกกี้ในแต่ละประเภทได้ตามความต้องการ ยกเว้น คุกกี้ที่จำเป็น

ยอมรับทั้งหมด
จัดการความเป็นส่วนตัว
  • คุกกี้ที่จำเป็น
    เปิดใช้งานตลอด

    ประเภทของคุกกี้มีความจำเป็นสำหรับการทำงานของเว็บไซต์ เพื่อให้คุณสามารถใช้ได้อย่างเป็นปกติ และเข้าชมเว็บไซต์ คุณไม่สามารถปิดการทำงานของคุกกี้นี้ในระบบเว็บไซต์ของเราได้
    รายละเอียดคุกกี้

  • คุกกี้สำหรับการติดตามทางการตลาด

    ประเภทของคุกกี้ที่มีความจำเป็นในการใช้งานเพื่อการวิเคราะห์ และ นำเสนอโปรโมชัน สินค้า รวมถึงหลักสูตรฟรี และ สิทธิพิเศษต่าง ๆ คุณสามารถเลือกปิดคุกกี้ประเภทนี้ได้โดยไม่ส่งผลต่อการทำงานหลัก เว้นแต่การนำเสนอโปรโมชันที่อาจไม่ตรงกับความต้องการ
    รายละเอียดคุกกี้

บันทึกการตั้งค่า