อะไรคือความแตกต่างของการทำงานระหว่าง NW.js, Brackets-Shell และ Electron?


151

ตอนนี้ TideSDK นั้นตายไปแล้วอย่างมีประสิทธิภาพฉันได้มองหา 'wrappers' ทางเลือกอื่นเพื่อเรียกใช้แอปพลิเคชัน HTML / CSS / JS เป็นแอปพลิเคชันเดสก์ทอปแบบสแตนด์อะโลน สามตัวเลือกที่ทำงานได้ที่ฉันได้ทำงานข้ามคือNW.js (เดิมคือ node-webkit), brackets-shellและElectron (เดิมคือ atom-shell)

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

  • สนับสนุนแพลตฟอร์ม ; ระบบปฏิบัติการการพึ่งพา ฯลฯ
  • รองรับคุณสมบัติภาษาเช่นเดียวกับ HTML5, CSS3 และ JavaScript คิดว่าอย่างเช่น"วิดีโอ HTML5 ทำงานได้หรือไม่ถ้าใช่มีตัวแปลงสัญญาณอะไรบ้าง"
  • คุณสมบัติพิเศษที่ไม่ได้มาตรฐานเช่นไอคอนถาดการแจ้งเตือนป๊อปอัพและแถบเมนูที่แสดงผลโดยระบบปฏิบัติการ
  • การขยาย ; เช่น. ความสามารถในการ 'เสียบ' เนทีฟโค้ดพูดคุยกับ Node.js และอื่น ๆ
  • สถาปัตยกรรม ; โดยเฉพาะความแตกต่างทางสถาปัตยกรรมที่มีผลต่อการใช้งานรายวันในฐานะนักพัฒนา
  • แก้ไขข้อบกพร่อง ; รวมถึงเครื่องมือในการพัฒนาความเข้ากันได้กับเครื่องมือที่ใช้กันทั่วไปเช่นnode-inspectorฯลฯ
  • ... และต่อไป

อะไรคือวัตถุประสงค์และความแตกต่างทางเทคนิคที่สำคัญเมื่อทำการเลือกระหว่างพวกเขาในฐานะนักพัฒนาแอปพลิเคชัน


คุณเคยโชคดีไหมที่ได้เห็นความแตกต่างในระหว่างนี้? อาจขุดบ้างในสุดสัปดาห์นี้
ฟาน

@stefan ยังไม่มี,: / ฉันเคยลองนิดหน่อยกับ node-webkit ในทางปฏิบัติ, แต่ยังไม่ได้รับมากกว่านั้น ยังไม่ได้อากาศรอบ ๆ เพื่อมองหาเอกสารอย่างเป็นทางการของความแตกต่าง ...
สเวน Slootweg

3
ดีนี่คือความแตกต่างที่สำคัญระหว่างโหนด WebKit และอะตอมเปลือกที่ระบุไว้โดยทีมอะตอมเปลือกgithub.com/atom/atom-shell/blob/master/docs/development/...
sepulchered

2
วิธีการเกี่ยวกับช้างในห้อง: แก้จุดบกพร่อง ฉันใช้ nw.js และพบว่าการดีบักค่อนข้างขาดเมื่อใช้แพลตฟอร์ม linux เพื่อพัฒนา ในการพัฒนาแอปพลิเคชันขนาดใหญ่การดีบักเป็นคุณสมบัติที่สำคัญของ IMO เราสามารถเพิ่มการดีบักในรายการคุณสมบัติที่ต้องการเพื่อพูดคุยได้หรือไม่?
ทิโมธีซีควินน์

@ JavaScriptDude ขอบคุณฉันได้เพิ่มมันเข้าไปในรายการ
Sven Slootweg

คำตอบ:


42

ฉันทำวิจัยคล้ายกันเมื่อสองเดือนที่แล้วและในที่สุดฉันก็ไปกับ node-webkit ส่วนที่ใหญ่ที่สุดของ node-webkit คือ node.js และ npm การจัดการแพ็กเกจของ npm นั้นดีมากและโหนดสามารถเข้าถึงระบบไฟล์ได้ดี

วงเล็บเหลี่ยมดูน่าสนใจ แต่นอกเหนือจาก IDE ที่ดีฉันไม่ได้สิ่งที่ทำให้มันดีหรือดีกว่าที่เหลือ พวกเขามีความชัดเจนมากว่า "วงเล็บปีกกานั้นได้รับการดูแลเพื่อใช้งานในโครงการ Brackets เท่านั้น" เสียงกรีดร้องของฉันก็หมดไป

https://github.com/adobe/brackets-shell#overview

Atom-shell ดูเหมือนว่าจะใช้งานได้เร็ว ๆ นี้ แต่ดูเหมือนว่าวงเล็บจะเหมือนกับที่พวกเขากำลังเขียนและ editor / IDE ที่เพิ่งจะแนบไปกับ webkit runtime มันถูกสร้างขึ้นบน node.js อันนี้มีข้อเสียของการเป็นเรื่องยากที่จะค้นหาสิ่งออนไลน์โดยไม่ได้รับการเตือนจากเคมีโรงเรียนมัธยมของคุณ

ฉันไม่ต้องการบรรณาธิการใหม่และโปรแกรมเมอร์ส่วนใหญ่มีความชื่นชอบอยู่แล้ว สำหรับการพัฒนาแอพพลิเคชั่นจริงพวกเขาก็ทำงานเหมือนกันและน่าจะเป็นเพราะพวกเขาใช้ webkit โดยทั่วไปคุณเขียน 90-95% เหมือนเว็บไซต์แล้วจัดการกับชิ้นส่วนเนทีฟและการตั้งค่าบางอย่าง

สิ่งเหล่านี้เป็นจริงสำหรับแพลตฟอร์มทั้งสาม - ทำงานบนการสนับสนุนภาษา Windows, Mac และ Linux - HTML5, CSS3 และ Javascript: เนื่องจากพวกเขาเรียกใช้จาวาสคริปต์คุณสามารถดาวน์โหลดและเรียกใช้เกือบทุกไลบรารี / กรอบที่คุณต้องการ

ข้อแม้ขนาดใหญ่บน webkit คือการสนับสนุนตัวแปลงสัญญาณ โดยทั่วไปแล้วคุณจะมีปัญหากับตัวแปลงสัญญาณวิดีโอที่ไม่ฟรีเว้นแต่คุณจะสร้าง dll / ดังนั้นเพื่อสนับสนุนพวกเขา ตัวอย่างเช่น node-webkit ที่ส่งแล้วจะไม่เล่นวิดีโอ mp4


คุณสามารถอธิบายได้อย่างละเอียดว่าการเล่น MP4 ในวงเล็บเหลี่ยมและอะตอม - เชลล์มีความแตกต่างกันหรือไม่? ไม่ชัดเจนจากคำตอบของคุณไม่ว่าจะเป็นเรื่องแปลกในการแจกแจง WebKit ส่วนใหญ่หรือเพียงแค่ใน node-webkit
Sven Slootweg

การเล่น MP4 เป็นปัญหาเป็นปัญหาของ webkit คุณต้องจำไว้ว่า webkit นั้นเป็นโครเมี่ยมที่เป็นหัวใจจริงๆและเว้นแต่ว่าเทคโนโลยี AV เปิดและฟรีพวกเขาไม่สนับสนุนมันนอกกรอบ คำตอบมาตรฐานคือการแทนที่ / สร้าง ffmpegsumo ใหม่ การแทนที่ด้วยการติดตั้ง Chrome ปัจจุบันของคุณดูเหมือนว่าทำงานได้ค่อนข้างดี
John W. Clark

1
มันเกิดขึ้นได้เพียงว่ามีการสร้างเครื่องหมายวงเล็บbracket-shellและ Atom สร้างขึ้นatom-shellแต่คุณสามารถใช้ตัวแก้ไขหรือ IDE ตัวเลือกใดก็ได้เพื่อสร้างรหัสกับพวกเขา ฉันคิดว่าสิ่งที่ OP ต้องการคือความแตกต่างทางเทคนิคระหว่าง 3 มันน่ายินดีที่ได้เห็นอะไรอย่าง TodoMVC ใน 3 สภาพแวดล้อมแบบ runtime
Ehtesh Choudhury

@SvenSlootweg การสนับสนุน codec นั้นเพิ่มเติมเกี่ยวกับไลบรารีที่ใช้กับ webkit ที่คุณใช้อยู่ ทั้งสามกำลังใช้ Chromium เป็นฐานของ webkit ดังนั้นพวกเขาทั้งหมดมีปัญหาตัวแปลงสัญญาณเหมือนกันและพวกเขาสามารถแก้ไขได้ด้วยวิธีเดียวกัน
John W. Clark


40

ฉันเล่นกับAtom-Shellในช่วงไม่กี่วันที่ผ่านมาและฉันก็รักมันมาก

ส่วนที่ดีที่สุดเกี่ยวกับเรื่องนี้คือมันได้รับการสนับสนุนโดย GitHub .. ซึ่งจะช่วยให้คุณสามารถปรับตัวเข้ากับแพลตฟอร์มในระยะยาว นอกจากนี้ยังเป็นไปได้ด้วยการปรับปรุง Direct Node.js โดยได้รับความอนุเคราะห์จากสัญญากับStrongLoopซึ่งเป็นผู้สนับสนุนหลักของ Node.js (พวกเขาอ้างว่าจ้างนักพัฒนาหลักของ Node.js มากกว่า บริษัท อื่น ๆ แม้แต่ Joyent)

ฉันพบว่ามันค่อนข้างสะดวกสบายในการเริ่มต้น ฉันใช้เวลาประมาณหนึ่งวันในการเรียนรู้โครงสร้างและรับข้อพิสูจน์แนวคิดแรกของฉัน เด็ดมาก


เครื่องหมายหัวข้อ:

  • รองรับแพลตฟอร์ม: Windows, Linux, Mac OSX ( ข้อมูลเพิ่มเติมที่นี่ )
  • รองรับคุณสมบัติภาษา: HTML5, CSS3, JS ผ่าน Chromium จนถึงตอนนี้ปัญหาที่เป็นศูนย์ แต่ฉันยังไม่ได้ทดสอบวิดีโอโดยเฉพาะ
  • คุณสมบัติพื้นเมือง:เมนูเนทิฟแอพสนับสนุนถาดงานฮอตคีย์ทั่วโลกการสนับสนุนตัวจัดการโปรโตคอล (ที่ฉันเคยเห็น)
  • Extensibility:การรวม Node.js ที่ยอดเยี่ยมทั้งไคลเอนต์และเซิร์ฟเวอร์สามารถ "ต้องการ" โมดูลและ Natives.js ฉันได้ทดสอบไลบรารีBowerเรียบร้อยแล้ว(รวมถึง jQuery) โดยไม่มีปัญหา
  • สถาปัตยกรรม:ครอบคลุมในจุดอื่น ๆ แต่โดยทั่วไปมันราบรื่นมาก

อัปเดต (11/25/14): ฉันยังไม่พบเคสการใช้งานสำหรับ Atom-Shell ในความจุอย่างเป็นทางการใด ๆ แต่ฉันใช้มันเพื่อสร้างแอพเล็ก ๆ สองสามตัวสำหรับการใช้งานของฉันเองที่ซับซ้อนที่สุดคือแอพที่ดึง เวลาของฉันบันทึกจากซอฟต์แวร์ PM และสร้างใบแจ้งหนี้ Paypal

ความเห็นของฉันของแพลตฟอร์มยังคงเป็นบวก มันยอดเยี่ยมมาก

ในแอพการแจ้งหนี้ตามเวลาของฉันฉันได้นำเทมเพลตตัวอย่างแผงควบคุมตัวอย่าง Bootstrap 3 และโมดูลโหนด (Bluebird, Paypal SDK, Teamwork PM Client) มาสร้างแอพที่ซับซ้อนอย่างอ่อนโยน ฉันใช้เวลาสองสามวันและทำงานได้ดี

ฉันไม่สามารถคิดถึงสิ่งที่เป็นลบที่จะพูดเกี่ยวกับ Atom-Shell ได้จริง ๆ มีความเสถียรมั่นคงรวดเร็วและง่ายต่อการเขียนโค้ด ฉันหวังว่านี่จะช่วยให้ใครบางคน


คุณสามารถอธิบายความแตกต่างของ node-webkit เป็นพิเศษได้หรือไม่? เท่าที่ฉันสามารถบอกได้ทั้งหมด (ส่วนใหญ่?) ของจุดเหล่านี้จะถูกนำเสนอโดย node-webkit เช่นกัน แต่ฉันไม่แน่ใจว่าอาจมีบางสิ่งที่ฉันขาดหายไป
Sven Slootweg

hi luke เป็นไปได้หรือไม่ที่จะอัปเดตแอปพลิเคชัน atom-shell ด้วยตนเอง ... ?
Munish Kapoor

@SvenSlootweg ขออภัยฉันพลาดความเห็นของคุณเมื่อไม่กี่เดือนที่ผ่านมา; น่าเสียดายที่ฉันไม่คุ้นเคยกับ node-webkit และไม่สามารถเปรียบเทียบทั้งสองได้อย่างมีประสิทธิภาพ แต่ฉันได้อ่านบทความ StrongLoop นี้ซึ่งอย่างน้อยก็บ่งชี้ว่า Atom-Shell ทำให้พื้นใหม่ : \
Luke Chavers

@ MunishKapoor เพื่อการพัฒนา? คุณสามารถดาวน์โหลดรุ่นล่าสุด .. ฉันมากหรือน้อยเพียงแค่เปลี่ยนชื่อไดเรกทอรี atom เก่าและแทนที่ด้วยใหม่ พวกเขาอาจมีกระบวนการโก๋เช่น "ปรับปรุง npm" - แต่ฉันไม่ได้ตรวจสอบ สำหรับการอัปเดตแอป + atom shell ของคุณบนไคลเอนต์ฉันไม่คิดว่าพวกเขาจะพูดถึงโดยตรง (เลย) และคาดว่าคุณจะใช้ตัวติดตั้งหรือแพลตฟอร์มภายนอกอื่น ๆ ฉันพบบทความนี้ในเอกสารที่น่าสนใจ
Luke Chavers

1
@Moonwalker ใช่มันใช้แอพที่ชื่อว่า " Asar " สำหรับบรรจุภัณฑ์ (ดู: "แอปพลิเคชันบรรจุภัณฑ์" ) ฉันเพิ่งค้นพบการเปรียบเทียบNode-Webkit / Atom-Shellนี้
ลุค Chavers

22

นอกจากรองรับมาตรฐานเว็บอย่างครบถ้วนแล้ว NW.js ยังสนับสนุนรายการคุณสมบัติที่ไม่ได้มาตรฐานสำหรับการพัฒนาแอพแบบดั้งเดิม ได้แก่ :

มีอะไรอีกมากมายให้ดูในวิกิรวมถึงเมนูถาด ฯลฯ


3
+1 ในโหมด Kiosk Roger ฉันเห็นว่าการเป็นคุณสมบัติที่ฉันจะใช้ในอนาคต หวังว่าการปรับปรุงความสามารถในการดีบั๊กจะทำให้ฉันสามารถอยู่ใน nw.js ได้ในขณะนี้ฉันกำลังพิจารณาอย่างจริงจังว่าจะเปลี่ยนไปใช้ Atom Electron สักครู่เพื่อทดสอบน่านน้ำ ฉันพบว่าการดีบักใน nw.js ต้องการเล็กน้อย
ทิโมธีซีควินน์

ฉันกังวลเล็กน้อยเกี่ยวกับการรวม "การปกป้องซอร์ส JS" ที่นั่น - มันอยู่ในระดับเดียวกับ DRM ในแง่ที่ว่ามันไม่ทำงาน เพียง "ป้องกัน" จากสิ่งที่คุณไม่จำเป็นต้อง "ป้องกัน" เพื่อเริ่มต้นด้วย ดูเหมือนว่าจะมีบางสิ่งที่ควรจะโฆษณาเป็นคุณลักษณะสำหรับฉัน
Sven Slootweg

1
มันไม่เหมือนกับ DRM สำหรับ Web - โปรแกรมเมอร์ JS ควรทำสิ่งใดก็ได้ตามที่โปรแกรมเมอร์ C ++ สามารถทำได้รวมถึงการคอมไพล์ซอร์สโค้ดไปยังรหัสเครื่องเมื่อพวกเขาพัฒนาแอปพลิเคชั่นดั้งเดิม
Roger Wang

@JavaScriptDude คุณหมายถึง devtools หรือไม่ ในเวอร์ชันถัดไป (0.13) ประสบการณ์เกือบจะเหมือนกับในเบราว์เซอร์ Chrome
Roger Wang

@Roger ขออภัยสำหรับการตอบกลับล่าช้า ใช่ devtools ฉันพบว่ามีข้อ จำกัด ต่อไปนี้อยู่ที่นั่นซึ่งบางตัวมีแนวโน้มอยู่ในตัว devtools: 1) ไม่มีการดีบักของ windows ใหม่ที่เปิดตัว 2) การดีบักแบบรีโมทไม่ทำงาน 3) ไม่สามารถเรียกเบรกพอยต์, ดูตัวแปรและแหล่งที่เปิด (ทุกครั้งที่รีสตาร์ทแอป, การตั้งค่าทั้งหมดจะถูกล้างออก) 4) (ตัวจริงตัวใหญ่) ไม่สามารถดีบักโค้ดที่โหลดด้วย require ()
Timothy C. Quinn

10

ฉันได้ทำงานกับ brackets-shell มาระยะหนึ่งแล้วนี่เป็นข้อค้นพบของฉัน:

  • brackets-shell ได้รับการพัฒนาเป็นเชลล์ภายใต้โครงการ IDE brackets แต่โครงการสามารถเรียกใช้เว็บแอปพลิเคชันใด ๆ คุณเพียงแค่ชี้ไปที่หน้า html ของคุณเอง Clint Berry เขียนบทช่วยสอนที่ยอดเยี่ยมเกี่ยวกับการทำสิ่งนี้: http://clintberry.com/2013/html5-desktop-apps-with-brackets-shell/
  • โครงการได้รับการสนับสนุนโดย Adobe และมีกิจกรรมมากมาย
  • เอกสารอาจจะดีกว่า

  • การสนับสนุนแพลตฟอร์มพวกเขาสนับสนุน Windows, Mac และ Linux แพคเกจติดตั้งยังสามารถสร้างได้ ฉันทดสอบบน Win and Mac เท่านั้นมันใช้งานได้ดี

  • รองรับคุณสมบัติ html5, css3, js วิดีโอ Html5 ไม่ทำงานนอกกรอบ แต่ง่ายต่อการเปิดใช้งาน (โดยค่าเริ่มต้น ffmpegsumo.dll จะไม่ถูกคัดลอกลงในตัวติดตั้งหากคุณเปลี่ยนสคริปต์เพื่อคัดลอกมันจะใช้งานได้)
  • แถบเมนูคุณสมบัติพื้นเมือง 'เปิดไฟล์ด้วย' เข้าถึงระบบไฟล์ ฉันไม่ได้ใช้สิ่งเหล่านี้เท่าที่ฉันต้องการคือการสื่อสารกับกระบวนการโหนด
  • extensibilityที่ nodejs สร้างขึ้นและคุณสามารถสื่อสารกับโหนดจากเว็บแอ็พพลิเคชันของคุณ ด้วยวิธีนี้คุณสามารถใช้โหนดเพื่อเข้าถึงระบบไฟล์ ฯลฯ
  • สถาปัตยกรรมโครงการได้รับการตั้งค่าอย่างดีทำให้มีการแยกที่ดีระหว่างโครงการเชลล์และเว็บแอปของคุณเองที่ทำงานอยู่ภายใน ในแอปพลิเคชันของคุณเองมีแอปพลิเคชันโกลบอลออบเจกต์ที่ให้คุณเข้าถึงฟังก์ชั่นวงเล็บ (การเข้าถึงระบบไฟล์การสื่อสารกับกระบวนการโหนด, ... )

6
สิ่งที่ทำให้ฉันอยู่ห่างจาก Brackes-shell คือภาพรวมของพวกเขาเอง github.com/adobe/brackets-shell "หมายเหตุ: brackets-shell นั้นได้รับการดูแลเพื่อใช้ในโครงการ Brackets เท่านั้นแม้ว่าบางคนจะประสบความสำเร็จในการใช้มันเป็น app เชลล์สำหรับโครงการอื่น ๆ เราไม่ได้ให้บริการอย่างเป็นทางการใด ๆ การสนับสนุนสำหรับสิ่งนั้นและเรายังไม่ได้ทำงานมากมายเพื่อให้แอปเชลล์สามารถนำมาใช้ซ้ำได้ง่ายหลายคนอาจพบว่าการใช้โครงการเช่น node-webkit ซึ่งง่ายกว่าการออกแบบทั่วไปมากขึ้น "
John W. Clark

5

สิ่งหนึ่งที่ควรทราบ (ถ้าคุณสนใจ) ก็คืออิเล็กตรอนอย่างเป็นทางการไม่รองรับ Windows Vista ส่วนแบ่งการตลาดของ Vista นั้นอยู่ที่ประมาณครึ่งทางระหว่าง OSX 10.9 และ 10.10 (ทั้งคู่ได้รับการสนับสนุนอย่างเต็มที่จากอิเล็กตรอน) Microsoft ยังคงรองรับ Vista จนถึงปี 2560

NW.js ทำงานได้ดีใน Vista เช่นเดียวกับ OSX 10.9+ NW.js ทำงานบน Ubuntu, Debian, Zorin, Manjaro, Arch และ Linux อื่น ๆ ที่ใช้ระบบปฏิบัติการ Debian Electron ได้ปฏิเสธการประชาสัมพันธ์ของ PR เพื่อแก้ไขข้อผิดพลาดเฉพาะ Ubuntu บนแพลตฟอร์มของพวกเขาที่เกี่ยวข้อง

NW.js ทำงานใน XP ด้วย ปัจจุบัน 18% ของตลาดยังคงอยู่ใน XP ดังนั้นหากคุณเป็นแอปพลิเคชันเดสก์ท็อปที่มีวัตถุประสงค์ทั่วไปหรือต้องการเข้าถึงผู้ใช้ที่ยังใช้งานอยู่ใน XP คุณน่าจะดีกว่าด้วย NW.js (0.14.7) เนื่องจากอิเล็กตรอนรองรับเฉพาะ Win 7 ขึ้นไป

หากคุณใช้ NW.js 0.12.3 คุณสามารถรองรับ OSX 10.6+ และเวอร์ชันเก่า ๆ ของ Debian Linux OS ที่ใช้เดเบียนเช่น Ubuntu และ Win XP + ขอแนะนำให้คุณสร้างบิลด์พิเศษสำหรับระบบดั้งเดิมเหล่านั้นและใช้เวอร์ชันใหม่กว่าของ NW.js สำหรับระบบปฏิบัติการรุ่นใหม่


1
Chrome ไม่หยุดการสนับสนุนหลังจาก MS ทำ - การสนับสนุนขยายไปถึงปลายปี 2558 - chrome.blogspot.com/2015/04/ …
Karol Klepacki

อิเล็กตรอน (อะตอมเชลล์) ไม่ทำงานบน RHEL 6.6 และด้านล่างและรหัสแหล่งที่มาไม่สามารถรวบรวมใน distros เหล่านั้น
Michael Kruglos


คุณสามารถใช้nw-builderเพื่อสร้างเวอร์ชัน MAS มีแขนสร้างสำหรับ NW.jsเช่นกัน
Jaredcheeda
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.