24 คะแนน โดย xguru 2025-02-03 | 15 ความคิดเห็น | แชร์ทาง WhatsApp
  • ผู้เขียน Felix Rieseberg เป็น co-maintainer ที่มีส่วนร่วมกับการพัฒนา Electron มานานกว่า 10 ปี
  • Electron ช่วยให้สร้าง UI ด้วยเทคโนโลยีเว็บ และหากจำเป็นก็สามารถผสมโค้ดเนทีฟเข้าไปใช้งานได้อย่างอิสระ
  • แอปจำนวนมาก เช่น Visual Studio Code, Slack, Discord, Figma, ChatGPT, Claude, Notion, 1Password, Docker Desktop เป็นต้น เลือกใช้ Electron
  • เอกสารนี้จะชี้ให้เห็นความเข้าใจผิดหลัก ๆ เกี่ยวกับ Electron และอธิบายว่าทำไมจึงตัดสินใจเลือกแนวทางนี้

Electron ทำให้ JavaScript กับโค้ดเนทีฟเป็นฝ่ายตรงข้ามกัน

  • มักมีคนพูดว่า "Electron ใช้แต่ JavaScript จึงด้อยกว่าเนทีฟ"
  • แต่ในความเป็นจริง Electron สามารถใช้โค้ดเนทีฟอย่าง C++, Objective-C, Rust ร่วมกับ JavaScript ได้
  • ตัวอย่างเช่น 1Password เขียนโค้ดส่วนใหญ่ด้วย Rust และใช้ Electron สำหรับ UI
  • จุดแข็งของ Electron คือความยืดหยุ่นในการผสมโค้ดเนทีฟเท่าที่จำเป็น พร้อมใช้เทคโนโลยีเว็บในส่วนของ UI
  • ยังมีตัวอย่างเดโมที่ใช้ SwiftUI, GTK, Win32 เพื่อให้ UI แบบเนทีฟบางส่วนได้ด้วย

Web app ไม่ได้แย่

  • แม้จะมีความเห็นว่า "แอปเนทีฟทุกตัวดีกว่าเสมอ" แต่สภาพตลาดจริงไม่ได้เรียบง่ายขนาดนั้น
  • ทั้ง NASA Mission Control, Bloomberg Terminal, คีออสก์ของ McDonald’s และ Dragon 2 ของ SpaceX ก็ใช้เทคโนโลยีเว็บบนพื้นฐาน Chromium เช่นกัน
  • เทคโนโลยีเว็บเป็นสิ่งที่ถูกใช้อย่างแพร่หลายที่สุดทั่วโลก และ Web app ที่ทำออกมาดีสามารถมอบประสบการณ์ผู้ใช้ที่ยอดเยี่ยมได้
  • คำกล่าวที่ว่า "Web app เป็นของคนที่ฝีมือไม่พอ" เป็นการเหมารวมที่ไม่คำนึงถึงข้อกำหนดของสภาพแวดล้อมการใช้งานและบริบทในการตัดสินใจของนักพัฒนา

WebView ของระบบปฏิบัติการมีประสิทธิภาพดีกว่า

  • มีคนจำนวนไม่น้อยที่มองว่า WebView ที่มากับ macOS, Windows หรือ Linux ดีกว่า
  • ในความเป็นจริง Slack เคยใช้ MacGap รุ่นแรกที่อิงกับ WebView แต่สุดท้ายก็หันมาใช้ Electron (Chromium) เพราะปัญหาด้านประสิทธิภาพ
  • เอนจิน Chromium รุ่นใหม่แม้จะใช้ทรัพยากรมากกว่า แต่ก็เป็นส่วนที่ได้รับการปรับแต่งอย่างต่อเนื่องมากที่สุด
  • WebView ที่ฝังมากับระบบปฏิบัติการอาจดูใช้หน่วยความจำน้อยกว่าเพราะแชร์ทรัพยากรร่วมกัน แต่ในทางปฏิบัติมักถูกแยกออกจากกันจริงด้วยเหตุผลด้านความปลอดภัยและเสถียรภาพ
  • การใช้ Electron ทำให้สามารถจัดการเวอร์ชันของเอนจินล่าสุดได้โดยตรง และคงไว้ซึ่งเสถียรภาพกับความปลอดภัยได้อย่างอิสระ

ขนาด bundle สำคัญ

  • โดยทั่วไปแอป Electron มีขนาดราว 100~300MB และจุดนี้มักถูกวิจารณ์
  • แต่ผู้ใช้มักให้ความสำคัญกับปัจจัยอื่น เช่น ฟีเจอร์ ความสะดวก และความเสถียร มากกว่าขนาดของแอป
  • ตัวอย่างเช่น การสตรีม Netflix ระดับ 4K ใช้ข้อมูลหลาย GB ต่อชั่วโมง และอัปเดตของ Call of Duty ก็อาจมีขนาดหลายร้อย GB
  • ท้ายที่สุด เมื่อเทียบกับความพึงพอใจจริงของผู้ใช้ ขนาดของแอปจึงมักเป็นปัจจัยที่สำคัญน้อยกว่าเมื่อเปรียบเทียบกัน

เอาชนะ Electron

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

15 ความคิดเห็น

 
joone 2025-05-24

การนำไปเปรียบเทียบกับ Call of Duty ดูเหมือนจะออกนอกประเด็นไปหน่อย
น่าจะต้องลองดู Teams ที่เลิกใช้ Electron แล้วเปลี่ยนไปใช้ WebView แทน,
https://techcommunity.microsoft.com/discussions/microsoftteams/…

 
pmc7777 2025-02-04

หวังว่า Tauri จะเติบโตเต็มที่เร็ว ๆ นะครับ แม้ว่าตอนนี้ผมก็ใช้งานมันได้ดีอยู่แล้วก็ตาม

 
coma333 2025-02-04

ตอนที่ยังชื่อ Atom Shell เหมือนเพิ่งเกิดขึ้นเมื่อวานเอง.. พัฒนาไปไกลมากเลยนะ

 
tsboard 2025-02-04

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

 
akintos 2025-02-03

แอป Electron ที่ติดตั้งอยู่ในพีซีมีเกือบ 10 ตัวแล้ว แบบนี้ก็น่าคิดว่าน่าจะกลายเป็นเฟรมเวิร์กที่ต้องติดตั้งแยกต่างหากได้แล้วนะ

 
freedomzero 2025-02-03

ทั้งขนาดบันเดิลด้วย แล้วพอเห็นโปรเซส ~~ Helper กำลังกินหน่วยความจำอยู่ก็ได้แต่ถอนหายใจครับ

 
nullvana 2025-02-03

ผมก็คิดว่า tauri เป็นทางเลือกหนึ่งเหมือนกัน แต่ก็กังวลว่าเวลาปล่อยใช้งานจริงอาจมีกรณีพิเศษที่ทำงานไม่ปกติหรือเปล่า (เพราะเมื่อก่อนเคยลำบากมากกับการปล่อยโปรแกรมบนสภาพแวดล้อม win32 ที่อ้างอิง DLL ซึ่งมีการลงทะเบียนไว้เป็นค่าพื้นฐานอย่าง msxml.dll สุดท้ายเลยต้องรวมไปกับตัวโปรแกรมเพื่อปล่อยด้วย... เลยกลัวว่าจะเกิดปัญหาคล้ายกันอีกไหม)

เห็นด้วยกับฝั่ง electron ว่าจริง ๆ แล้วควรลืมเรื่องขนาดไปได้เลย แต่ขนาด bundle มันใหญ่เกินไปครับ

 
aaaapple123 2025-02-05

ดูเหมือนว่า tauri จะมีปัญหาตรงนั้นครับ..

เนื่องจาก WebView และโปรแกรมที่ฝังมาในแต่ละแพลตฟอร์มแตกต่างกัน นั่นจึงเป็นปัญหาใหญ่ที่สุดครับ เพราะหลังจากปล่อยใช้งานไปแล้วก็ไม่รู้ว่าจะเกิดอะไรขึ้นบ้าง

แต่ถ้าจะให้ tauri ฝังตัว WebView มาเอง ขนาดบันเดิลก็จะใหญ่กว่า Electron อีกครับ..

ดังนั้นในการพัฒนาแอปโปรดักชันแบบข้ามแพลตฟอร์ม ผมจึงคิดว่า tauri ยังไม่สุกงอมพอครับ.

 
secret3056 2025-02-03

คีออสก์ของ McDonald’s นั้น...อืม....อาจจะเป็นตัวอย่างที่ดีก็ได้

 
tsboard 2025-02-04

ผมก็แวบคิดแบบเดียวกันขึ้นมาเหมือนกันครับ คีออสก์ของแมคโดนัลด์ในต่างประเทศก็ต่างออกไปบ้างไหมนะ? อยู่ ๆ ก็สงสัยขึ้นมาชั่วขณะเลยครับ ฮ่าๆ

 
dicebattle 2025-02-03

555555 ผมก็คิดเหมือนกันเลย

 
savvykang 2025-02-03

น่าเสียดายที่แม้การลดการใช้หน่วยความจำจะดูเหมือนเป็นความท้าทายที่ใหญ่ที่สุด แต่ก็ไม่เห็นว่าผู้มีส่วนได้ส่วนเสียฝ่ายไหนมีแรงจูงใจมากพอจะลงมือทำเรื่องนั้น

 
rtyu1120 2025-02-03

มีตัวอย่างเดโมที่ให้ UI แบบเนทีฟบางส่วนโดยใช้ SwiftUI, GTK, Win32 เป็นต้น

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

 
lamanus 2025-02-03

ดูเหมือนว่าโดยรวมแล้ว เป็นความจริงที่แอปมีขนาดใหญ่..

 
dohyun682 2025-02-03

ใช่ครับ เรื่องขนาดบันเดิลนี่ก็ยอมรับกันตรงๆ เลย