Ryan Dahl ผู้เริ่มโครงการ Nodejs เมื่อปี 2009 และออกจากโครงการไปเมื่อปี 2012 กลับมาพัฒนาโครงการ Deno ที่เป็นรันไทม์สำหรับรันจาวาสคริปต์นอกเบราว์เซอร์เหมือนกัน แต่พัฒนาขึ้นด้วยแนวคิดที่ต่างออกไป โดยเลือกใช้ภาษา Rust ในการพัฒนา และสร้างโครงการ rust_v8 สำหรับนำเอาเอนจิน V8 มาใช้งาน และตอนนี้ Deno ก็ออกเวอร์ชั่น 1.0 พร้อมสำหรับการใช้งานจริงแล้ว
ฟีเจอร์สำคัญของ Deno ได้แก่
- รันโค้ดด้วยความปลอดภัยสูงสุดเป็นค่าเริ่มต้น โค้ดไม่สามารถเชื่อมต่อเน็ตเวิร์ค, เขียนไฟล์, หรือเข้าถึงระบบภายนอกได้หากไม่ได้อนุญาตเป็นพิเศษ เช่นจะทำเว็บเซิร์ฟเวอร์ต้องใส่แฟลก
--allow-net - รองรับ TypeScript เป็นมาตรฐาน
- ติดตั้งด้วยไบนารีเดียว
- มีระบบตรวจสอบ dependency มาในตัว และตัวฟอร์แมตโค้ดแบบมาตรฐาน
- มีไลบรารีมาตรฐานโดยไม่ต้องพึ่งโครงการภายนอก โดยพอร์ตจากไลบรารีของ Go เป็นหลัก
Ryan Dahl, Bert Belder, และ Bartek Iwańczuk ผู้ประกาศเวอร์ชั่น 1.0 นี้เตือนว่าแม้ Deno จะคล้าย Nodejs แต่มันเป็นคนละโครงการกันเด็ดขาด บางโครงการอาจจะไม่พร้อมที่จะมาใช้ Deno ทดแทน โดยเฉพาะระบบโมดูลที่ไม่สามารถใช้ npm ได้
ที่มา - Deno
on
ฟีเจอร์สำคัญของ...
Azymik Fri, 15/05/2020 - 06:13
ฟีเจอร์สำคัญของ...
เพิ่ง install ไปเมื่อวาน
illuminator Fri, 15/05/2020 - 09:54
เพิ่ง install ไปเมื่อวาน กะจะลองเล่นดู
เห็นว่าช่วงนี้เขามาแรง
อยากใช้อยู่เหมือนกัน
risc Fri, 15/05/2020 - 10:14
อยากใช้อยู่เหมือนกัน แต่ขอรอดู ecosystem อีกนิด
และสร้างโครงการ rust_v8
mr_tawan Fri, 15/05/2020 - 11:38
โห Rust version 8 แล้ว #ผิด
ยังเป็นเบบี๋ด้าน Node.js
btoy Fri, 15/05/2020 - 12:56
ยังเป็นเบบี๋ด้าน Node.js แต่ก็แอบสนใจครับผม
ค่อนข้างโหยหาเครื่องมือ JS/TS
hisoft Fri, 15/05/2020 - 14:24
ค่อนข้างโหยหาเครื่องมือ JS/TS ที่ดีกว่า nodejs อยู่เหมือนกันครับ ผมว่ามันช้าไม่ทันใจและกินเครื่องมากไม่รู้ว่า Deno จะช่วยผมได้หรือเปล่า
แต่จากการที่ nodejs เคยมีแค่ package.json แล้วขยับมาเพิ่ม lock file อีกเนี่ยผมเลยหวังว่า Deno จะไม่เจอปัญหาแบบนั้น (ซึ่งโปรเจคที่ผมเคยทำก่อนจะมี lock file ก็พังไปหลายทีเพราะไม่มี lock file นี่แหละครับ ก็ถือว่าเป็นการแก้ปัญหาที่ตรงจุดอยู่)
ผมไม่ได้เขียน node (จริงๆ
lew Fri, 15/05/2020 - 15:39
In reply to ค่อนข้างโหยหาเครื่องมือ JS/TS by hisoft
ผมไม่ได้เขียน node (จริงๆ ก็แทบไม่เขียน js เลยยกเว้นแก้นิดๆ หน่อยๆ) แต่คิดว่าแนวทาง std lib นี่สำคัญมาก ข่าว package ประหลาดๆ ใน npm มีปัญหานี่หลายรอบแล้ว ผมเลยมองว่า node นี่พลาดร้ายแรงที่ไม่ทำ stdlib พวกโครงการที่นิ่งๆ อย่าาง python หรือ go ก็มี stdlib ให้ค่อนข้างกว้างขวางจนโครงการจำนวนมากไม่ต้องติดตั้งอะไรเพิ่มเลย
นึกว่าผมรู้สึกอยู่คนเดียวเสีย
big50000 Fri, 15/05/2020 - 18:39
In reply to ผมไม่ได้เขียน node (จริงๆ by lew
นึกว่าผมรู้สึกอยู่คนเดียวเสียอีก node มันควรมี lib ตั้งต้นให้มากกว่านี้ ตอนผมเข้ามา node แรก ๆ ผมยังงงเลยว่าจะให้ติดตั้ง express ทำไม ทั้งที่แค่จะทำเว็บเซิร์ฟเวอร์พื้น ๆ แท้ ๆ ขนาด python แค่ตัวรันไทม์ยังแถม SimpleHTTPServer มาให้ ตอนนี้เลยตั้งใจจะใช้ node เป็นหลังบ้านแล้วหาตัว web server เป็นตัวอื่น ๆ แทน
น่าจะเข้าใจผิดครับ node ให้
panotza Fri, 15/05/2020 - 19:17
In reply to นึกว่าผมรู้สึกอยู่คนเดียวเสีย by big50000
น่าจะเข้าใจผิดครับ node ให้ http.createServer มาครับอันนี้คือ basic http server แล้ว
ส่วน express = framework ครับ
ยังต้องเขียนส่วนที่เหลืออีกเพ
big50000 Fri, 15/05/2020 - 20:15
In reply to น่าจะเข้าใจผิดครับ node ให้ by panotza
ยังต้องเขียนส่วนที่เหลืออีกเพียบครับ ถ้าให้ถูกคือ ต้องติดตั้ง http-server แล้วเรียกใช้ครับ (แน่นอนว่าจะเขียนด้วย http,fs,path แบบไม่โหลดก็ได้ แต่มันมือตอนเขียนแน่นอน)
ที่ผมยก express มาเพราะคนสอนส่วนใหญ่ที่ผมไปอ่าน สอนแต่ตัวนี้กัน ทั้ง ๆ ที่ผมจะหาทาง serve static page เฉย ๆ (ตอนนั้นผมหาวิธีเปิด web server ด้วย node เฉย ๆ นะ)
เห็นด้วยสำหรับ stdlib ครับ
hisoft Fri, 15/05/2020 - 20:12
In reply to ผมไม่ได้เขียน node (จริงๆ by lew
เห็นด้วยสำหรับ stdlib ครับ แต่ผมไม่แน่ใจว่าพวกที่เป็น 3rd party lib นี่จะยังไงกันบ้าง ยังไงก็คงพ่วงกันเป็นทอดๆ อยู่ดี?
ครับ ก็ดูได้จาก Python
lew Fri, 15/05/2020 - 21:02
In reply to เห็นด้วยสำหรับ stdlib ครับ by hisoft
ครับ ก็ดูได้จาก Python ที่มีแนวทางการวม stdlib ค่อนข้างกว้าง (มี database ด้วยซ้ำ แค่ไม่ใช่ SQL) ก็มีโครงการดึงกันเป็นทอดๆ ตามปกติ แต่จะไม่ค่อยมี lib แปลกๆ ทำฟังก์ชั่นแค่ 3-5 บรรทัดแต่ทุกคนใช้กันหมด ลาก dependency จนกระทบทั้ง ecosystem
พอถัดจาก stdlib ขึ้นไป ส่วนที่ใช้งานกันก็จะค่อนข้างเฉพาะทางแต่ละงานไปแล้ว
จริงด้วยนะครับ
hisoft Sat, 16/05/2020 - 00:08
In reply to ครับ ก็ดูได้จาก Python by lew
จริงด้วยนะครับ ขอบคุณครับ