การเปลี่ยนแปลงของ Deno ในปี 2023
- ตอนนี้ Deno เข้าใจไฟล์
package.json และสามารถนำเข้า โมดูล Node ในตัว อย่าง node:fs และ node:crypto ได้โดยใช้ตัวระบุ node:
- เว็บเซิร์ฟเวอร์ API ใหม่
Deno.serve ได้เข้าสู่สถานะเสถียรแล้ว และปริมาณงาน HTTP เพิ่มขึ้นราว 73% เมื่อเทียบรายปี
deno compile รองรับ worker, dynamic import และโมดูล npm แล้ว
- Deno ใช้งาน Web Streams (
ReadableStream และ WriteableStream) และ AbortController ได้ดีขึ้นทั่วทั้ง API ช่วยลดช่องว่างระหว่างการเขียนโปรแกรมฝั่งเบราว์เซอร์กับฝั่งเซิร์ฟเวอร์
- ไฟล์ตั้งค่าของ Deno
deno.json ตอนนี้ใช้เป็น import map ได้ด้วย พร้อมทั้งทำให้สคีมาง่ายขึ้น เพิ่มการรองรับ glob และเพิ่มพร็อพเพอร์ตีระดับบนสุด "exclude" ที่มีประโยชน์
- Jupyter เครื่องมือโน้ตบุ๊กโอเพนซอร์ส รองรับ Deno ผ่าน JavaScript และ TypeScript แล้ว
- WebGPU ถูกเพิ่มเข้ามาใน Deno หลังการพัฒนาเกือบ 1 ปี
- TypeScript แบบไม่ต้องตั้งค่า ของ Deno ทำให้การผสานกับเอดิเตอร์ดีขึ้น ผ่านการปรับปรุง LSP และการทำงานร่วมกับ VS Code อย่างมาก
- Fresh เว็บเฟรมเวิร์กบน Deno ได้ขยายความสามารถด้วยการรองรับ Tailwind, Partials, ไฟล์ layout และฟีเจอร์อื่น ๆ
- Deno Deploy แข็งแกร่งขึ้นด้วยองค์ประกอบพื้นฐานที่กระจายตัวทั่วโลกอย่าง Deno KV, Queues, Cron
- เปิดตัว self-serve subhosting เพื่อให้แพลตฟอร์มสามารถดีพลอยและรัน JavaScript แบบหลายผู้เช่าที่ไม่น่าเชื่อถือได้
การปรับปรุงความเข้ากันได้กับ Node และ npm
- Deno ขยายความเข้ากันได้กับระบบนิเวศของ Node โดยรองรับโมดูล Node ในตัวอย่าง
node:fs, node:child_process ผ่านตัวระบุ node:
- มีการเพิ่มฟีเจอร์ใหม่หลายอย่างเพื่อให้ย้ายจาก Node ไป Deno ได้อย่างราบรื่น:
- แฟล็ก
--unstable-byonm ช่วยให้ใช้ตัวจัดการแพ็กเกจ npm ที่ต้องการภายใน Deno ได้
- แฟล็ก
--unstable-sloppy-imports ผ่อนคลายความเข้มงวดของการนำเข้าโมดูล เพื่อรองรับสไตล์และแนวปฏิบัติการเขียนโค้ดที่หลากหลาย
- แฟล็ก
--unstable-unsafe-proto รองรับ Object.prototype.__proto__ ซึ่งแพ็กเกจ npm จำนวนมากพึ่งพา
- การทำให้ Node-API เสถียร ทำให้สามารถใช้แพ็กเกจ npm ที่พึ่งพา Node-API ได้โดยไม่ต้องใช้แฟล็ก
--unstable ส่งผลให้ขอบเขตการรองรับกว้างขึ้น
เว็บเซิร์ฟเวอร์ที่ง่ายและเร็วขึ้นด้วย Deno.serve()
- มีการเพิ่มและทำให้ฟังก์ชัน
Deno.serve() เสถียร เพื่อให้นักพัฒนาเริ่มเซิร์ฟเวอร์ได้ด้วยโค้ดเพียงเล็กน้อย
- ประสิทธิภาพดีขึ้นอย่างมากผ่านการปรับแต่งแบบเจาะจงในไลบรารีแกนหลักและกลไก event loop
- ปริมาณงาน HTTP ของ Deno เพิ่มขึ้นอย่างเห็นได้ชัดจากการทดสอบ benchmark ด้วยการตั้งค่าเซิร์ฟเวอร์ "Hello, world" พื้นฐาน
deno.json ที่ยืดหยุ่นยิ่งขึ้น
- Deno ยึดหลักการเขียนโปรแกรมที่ใช้งานได้โดยไม่ต้องตั้งค่าซับซ้อน และยังคงปรับปรุงไฟล์ตั้งค่า
deno.json อย่างต่อเนื่องเพื่อให้ใช้งานได้ง่าย:
- ใช้
deno.json เป็น import map ได้ด้วย
deno fmt รองรับ semicolon เพื่อเพิ่มความยืดหยุ่นด้านรูปแบบโค้ด
- การทำงานร่วมกับ
package.json ช่วยให้สลับไปมาระหว่างสภาพแวดล้อม Node และ Deno ได้ง่ายขึ้น
- โครงสร้างของ
deno.json ถูกทำให้ง่ายขึ้น เพื่อให้นักพัฒนาทำความเข้าใจได้อย่างเป็นธรรมชาติมากขึ้น
- การเพิ่มรูปแบบ glob ช่วยให้ควบคุมการรวมและยกเว้นไฟล์หรือไดเรกทอรีได้ละเอียดขึ้น
ประสบการณ์พัฒนาที่ลื่นไหลขึ้นผ่าน LSP
- การผสาน Language Server Protocol (LSP) ของ Deno มอบความสามารถอย่างการไปยังคำนิยามที่แม่นยำ, IntelliSense ที่ครอบคลุม และการจัดรูปแบบโค้ดอย่างราบรื่นสำหรับโปรเจ็กต์ TypeScript
- มีการทุ่มเทอย่างมากเพื่อปรับปรุง LSP ทำให้การเขียนโค้ดบน Deno ลื่นไหลและเป็นธรรมชาติมากขึ้น
WebGPU
- WebGPU นำเทคโนโลยีล้ำสมัยมาสู่ Deno โดยเปิดให้นักพัฒนาใช้ JavaScript ดึงประสิทธิภาพจากฮาร์ดแวร์ GPU ได้โดยตรง
- WebGPU ใช้งานได้ภายใต้แฟล็ก
--unstable-webgpu และถือเป็นหมุดหมายสำคัญในการขยายขีดความสามารถของแอปพลิเคชัน Deno
Jupyter Notebook
- Jupyter เครื่องมือโน้ตบุ๊กโอเพนซอร์ส รองรับ Deno ผ่าน JavaScript และ TypeScript แล้ว
- สิ่งนี้ทำให้สามารถทำงานด้านวิทยาศาสตร์ข้อมูล การทำภาพข้อมูล และงานอื่น ๆ ได้ด้วย JavaScript, TypeScript สมัยใหม่ และ Web Standard API
Rust crate โอเพนซอร์สที่น่าสนใจ
- Deno เชื่อมโยงกับโปรเจ็กต์โอเพนซอร์สหลากหลาย และมีส่วนร่วมอย่างแข็งขันเพื่อขยายชุดความสามารถของ Deno และเพิ่มประสิทธิภาพให้เหมาะสม
- ในปีนี้ Deno ได้ปล่อย Rust crate หลายตัวที่อาจมีประโยชน์ในฐานะเครื่องมืออิสระได้เช่นกัน
Fresh
- Fresh คือเว็บเฟรมเวิร์กฟูลสแตกสมัยใหม่ของ Deno ที่โดยปกติจะไม่ส่ง JavaScript ฝั่งไคลเอนต์ และยังคงได้รับการปรับปรุงอย่างต่อเนื่องเพื่อให้ใช้งานง่ายและมีประสิทธิภาพสูงขึ้น
การขยายธุรกิจคลาวด์ของ Deno
- Deno Subhosting เปลี่ยนจากการรองรับ edge function ของ Netlify และร้านค้าอีคอมเมิร์ซของลูกค้า Deco.cx ไปเป็นบริการของตัวเองที่ทุกคนใช้งานได้ฟรี
- มีการเปิดตัวองค์ประกอบพื้นฐานบนคลาวด์อย่าง Deno KV, Queues, Cron เพื่อขับเคลื่อนวิสัยทัศน์ในการทำให้การพัฒนาเว็บง่ายขึ้นอย่างถึงราก
Deno 2
- Deno 2 เตรียมนำเสนอรันไทม์ที่ดียิ่งขึ้น รวมถึงการประกาศที่น่าสนใจเกี่ยวกับการปรับปรุงความเข้ากันได้กับ Node และ npm ตลอดจนการจัดการและเพิ่มประสิทธิภาพ dependency ของโปรเจ็กต์
ความเห็นของ GN⁺:
- สิ่งสำคัญคือ Deno กำลังยกระดับความเข้ากันได้กับ Node.js อย่างมาก และมุ่งเน้นการทำให้การพัฒนาเว็บง่ายขึ้น ซึ่งอาจช่วยให้นักพัฒนา Node.js เดิมย้ายมาใช้ Deno ได้สะดวกขึ้น และส่งเสริมการยอมรับ Deno มากขึ้น
- การผสานฟีเจอร์ล้ำสมัยอย่าง WebGPU แสดงให้เห็นว่า Deno กำลังก้าวข้ามจากการเป็นเพียงแพลตฟอร์มฝั่งเซิร์ฟเวอร์ ไปสู่ความเหมาะสมกับการพัฒนาแอปพลิเคชันที่หลากหลายยิ่งขึ้น ซึ่งอาจน่าสนใจเป็นพิเศษสำหรับนักพัฒนาที่ต้องการงานประมวลผลประสิทธิภาพสูงด้วย GPU
- ความก้าวหน้าของเฟรมเวิร์ก Fresh และ Deno Deploy บ่งชี้ว่า Deno สามารถมีบทบาทสำคัญในงานพัฒนาเว็บแบบฟูลสแตก และช่วยเสริมความแข็งแกร่งให้ตำแหน่งของ Deno ในฐานะบริการบนคลาวด์ ความก้าวหน้าเหล่านี้เพิ่มความเป็นไปได้ที่ Deno จะก้าวขึ้นเป็นผู้เล่นหลักของการพัฒนาเว็บสมัยใหม่
2 ความคิดเห็น
ความคิดเห็นจาก Hacker News
deno-coreนั้นพื้นฐานมากและฝังใช้งานได้ยาก เขาคาดหวังว่า Deno อาจกลายเป็น "plugin runtime" ในโลกของเครื่องมือ JS ได้ และอธิบายว่าตอนนี้กำลังสื่อสารกับ child process ของ Node.js ผ่าน stdio จาก Rust host process อยู่