5 คะแนน โดย GN⁺ 2024-02-06 | 2 ความคิดเห็น | แชร์ทาง WhatsApp

การเปลี่ยนแปลงของ 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 ความคิดเห็น

 
[ความคิดเห็นนี้ถูกซ่อน]
 
GN⁺ 2024-02-06
ความคิดเห็นจาก Hacker News
  • ผู้ใช้รายหนึ่งชี้ว่ายังหาวิธีนำเข้าแอปพลิเคชัน Deno ในสภาพแวดล้อมที่ไม่ได้เชื่อมต่ออินเทอร์เน็ตไม่ได้ และไม่มีเอกสารเกี่ยวกับเรื่องนี้เลย ผู้ใช้นี้มองว่า Deno ไม่น่าจะมีอนาคตในสภาพแวดล้อมองค์กรได้
  • ผู้ใช้อีกรายแสดงความสนใจต่อความสามารถ WebGPU และอธิบายว่ากำลังสร้างเดสก์ท็อป GUI ด้วย JavaScript/TypeScript ผ่านเฟรมเวิร์ก Slint โดยไม่ใช้เบราว์เซอร์หรือ webview และคาดหวังว่าหาก Deno สามารถเปิดหน้าต่างได้โดยตรง ก็อาจแจกจ่าย wasm แทน native binary สำหรับทุกแพลตฟอร์มได้ อย่างไรก็ตามก็เสริมว่าความสามารถ WebGPU ไม่ได้รวม API สำหรับเปิดหน้าต่าง จึงยังต้องมีไลบรารีเพิ่มเติมอยู่ดี
  • ผู้ใช้คนหนึ่งหวังว่าสถานะการคอมไพล์ของ Deno จะดีขึ้น โดยชี้ว่าไฟล์ปฏิบัติการที่สร้างออกมามีขนาดเกิน 90MB และเกิดข้อผิดพลาดเมื่อบีบอัด ทำให้แจกจ่ายได้ยากเหมือนภาษา Go และกล่าวว่า Deno แย่กว่าโซลูชัน pkg ของ Node.js ในแง่ขนาดเสียอีก
  • ผู้ใช้อีกรายอยากเห็นการรองรับที่มากขึ้นสำหรับการฝัง Deno ลงใน Rust host process ขนาดใหญ่ขึ้น โดยระบุว่ากำลังเขียน JavaScript bundler และต้องใช้ Node.js runtime เพื่อรันปลั๊กอิน แต่ crate deno-core นั้นพื้นฐานมากและฝังใช้งานได้ยาก เขาคาดหวังว่า Deno อาจกลายเป็น "plugin runtime" ในโลกของเครื่องมือ JS ได้ และอธิบายว่าตอนนี้กำลังสื่อสารกับ child process ของ Node.js ผ่าน stdio จาก Rust host process อยู่
  • ผู้ใช้คนหนึ่งบอกว่าตนไม่ชอบ JavaScript แต่เมื่อได้ลองใช้ Deno แล้วพบว่าเป็นประสบการณ์ที่ลื่นไหลและรวดเร็วมาก จึงให้ความเห็นเชิงบวก
  • ผู้ใช้อีกรายกล่าวว่าในปี 2023 ตนได้นำแอป Deno ที่ไม่ใช่แบบง่าย ๆ ขึ้นโปรดักชันเป็นครั้งแรก และแม้จะลำบากกับช่วงเรียนรู้ในการซิงก์ lock file ในรีโพซิทอรีที่มีหลาย entry point แต่โดยรวมก็เป็นประสบการณ์ที่ดี
  • ต่อข่าวที่ Jupyter รองรับ JavaScript และ TypeScript โดยใช้ Deno ผู้ใช้คนหนึ่งตอบรับในเชิงบวก แต่ก็กล่าวถึงการที่ Python มีการรองรับด้านตัวเลขและคณิตศาสตร์ที่ยอดเยี่ยม พร้อมตั้งคำถามว่าจะมีคนอยากใช้สิ่งนี้หรือไม่
  • ผู้ใช้คนหนึ่งกล่าวว่าสามารถสมัคร waitlist ของ JSR ที่ลิงก์ไว้ท้ายบทความได้ และสงสัยว่าทีม Deno กำลังสร้างอะไรอยู่
  • มีผู้ใช้แชร์ลิงก์เกี่ยวกับข่าวที่ Deno Deploy ลดจำนวนภูมิภาค GCP จาก 35 เหลือ 12 แห่ง
  • มีผู้ใช้คนหนึ่งบอกว่าอยากใช้เฟรมเวิร์กพัฒนาเว็บชื่อ Fresh แต่การที่ตอนนี้รองรับเพียง Tailwind เท่านั้นดูยังไม่สุกงอม และรู้สึกแปลกใจที่ในการพัฒนารอบถัดไปให้ความสำคัญกับ view transitions มากกว่า CSS bundling