node.js - ฉันควรใช้ไฟล์จาวาสคริปต์แยกกันหรือใช้ไฟล์ใหญ่เพียงไฟล์เดียวในแอปเดสก์ท็อป Electron?
ฉันกำลังใช้ Electron กับ JavaScript ธรรมดาเพื่อสร้างแอปเดสก์ท็อปแบบหน้าเดียว มันเป็นเครื่องมือบันทึกข้อมูล ซึ่งจะรับข้อมูลตามลำดับเวลา (time series data) ผ่านซ็อกเก็ตจากโปรแกรมภายในเครื่อง (เหมือนกับ backend แต่ไม่ใช่ backend เว็บระยะไกล ดังนั้นฉันคิดว่าปริมาณแบนด์วิดท์ไม่น่าจะเป็นปัญหา) และใช้ไลบรารีกราฟของ JavaScript ในการแสดงผลข้อมูลอย่างรวดเร็ว
การไหลของข้อมูลหลักเป็นดังนี้: ซ็อกเก็ต->อาร์เรย์->วาดกราฟ ซ็อกเก็ต->คำสั่งอัปเดต UI อื่นๆ
แม้ว่านี่จะเป็นแอปหน้าเดียว แต่มีหลายส่วนประกอบ ดังนั้นการใส่โค้ดทั้งหมดลงในไฟล์เดียวทำให้โปรเจกต์ยากต่อการขยายหรือดูแล ฉันสงสัยว่าควรใช้วิธีเขียนโปรแกรมเชิงวัตถุ (OOP) เพื่แยกโค้ดออกเป็นหลายไฟล์จาวาสคริปต์ เหมือนที่เรามักทำใน C# หรือไม่ แต่ฉันไม่แน่ใจว่านี่เป็นแนวปฏิบัติที่ดีหรือไม่ และจะทำให้เกิดภาระประสิทธิภาพอย่างมากหรือเปล่า ความกังวลเดียวกันนี้เกิดขึ้นกับการใช้ TypeScript ฉันรู้สึกว่าอยากใช้มันแทนจาวาสคริปต์ปกติ แต่ไม่แน่ใจว่าจะทำให้แอปช้าลงหรือไม่
มีคำถามอีกข้อหนึ่ง ฉันใช้ jQuery เพื่อเข้าถึง DOM เช่น $chartDiv=$('#chartDiv') เมื่อเปรียบเทียบกับ document.getElementById() การใช้วิธีแรกมีค่า overhead เกิดขึ้นเพียงครั้งแรกหรือเกิดขึ้นทุกครั้งที่ฉันใช้ $chartDiv?
คำตอบ #1
เพื่อที่จะตอบคำถามส่วนใหญ่ของคุณ: ทำในสิ่งที่ทำให้โค้ดดีขึ้น ไม่ใช่ "เร็วขึ้น" ถ้าคุณกังวลเกี่ยวกับประสิทธิภาพอย่างจริงจัง คุณคงจะเขียนแอปของคุณด้วย C หรือ assembly อยู่แล้ว Electron เองก็กำลังทำให้เกิดความล่าช้าเป็นอย่างมาก - มันคือเบราว์เซอร์ที่รันภาษาที่ตีความแล้ว ประเมิน CSS และ HTML คุณคาดหวังอะไรอยู่?
เหตุผลทั้งหมดที่มีสิ่งเช่น Electron คือเพราะมันทำให้การพัฒนาง่ายขึ้น โดยเฉพาะสำหรับคนที่คุ้นเคยกับเทคโนโลยีเว็บอยู่แล้ว
ดังนั้น :
- ใช่ แบ่งแอปของคุณออกเป็นหลายไฟล์ อาจมีค่าใช้จ่ายเพิ่มเล็กน้อยหากคุณไม่ใช้ตัวแปลง/ตัวบีบอัด แต่สิ่งนี้มีขนาดเล็กมากและต้องเกิดขึ้นเพียงตอนโหลดแอปพลิเคชันเท่านั้น
- ใช่ ใช้ TypeScript มันเป็นภาษาที่ถูกแปลง (transpiled language) ซึ่งเพิ่มความปลอดภัยของประเภทข้อมูลให้กับโค้ดของคุณเฉพาะในช่วงเวลาการคอมไพล์ ข้อมูลเพิ่มเติมจะถูกลบออกหลังจากการคอมไพล์ ทำให้ได้ "JavaScript ธรรมดา"
- ถ้าคุณกำลังทำการจัดการ DOM จำนวนมากและคุณคุ้นเคยกับ jQuery ก็ไปต่อได้เลย ในเบราว์เซอร์สมัยใหม่ (รวมถึง Electron) คุณไม่จำเป็นต้องกังวลเกี่ยวกับคุณสมบัติต่าง ๆ ที่อาจไม่ทำงาน ดังนั้นการจัดการ DOM ส่วนใหญ่ที่คุณต้องการนั้นง่ายมากโดยไม่ใช้ jQuery อย่างไรก็ตาม มันก็ยังเป็นการชะลอเพียงเล็กน้อย และ
el=$ ('some selector')เป็นสาเหตุหลักของการชะลอเพียงครั้งเดียวเท่านั้น
อีกเรื่องหนึ่ง - ถ้าคุณกังวลอย่างจริงจังเกี่ยวกับประสิทธิภาพของคุณ (ส่วนตัวแล้วฉันสงสัยว่านี่จะเป็นปัญหา) ทางที่ดีที่สุดของคุณคือการวิเคราะห์ประสิทธิภาพของแอปของคุณ! รันการทดสอบด้วยการใช้งานที่ต่างกัน ดูว่าตัวไหนเร็วกว่า และวัดการเพิ่มความเร็วของประสิทธิภาพ แต่จงจำไว้ว่า:
เราควรลืมเรื่องประสิทธิภาพเล็กน้อย ประมาณ 97% ของเวลา: การปรับแต่งก่อนเวลาอันควรเป็นต้นเหตุของความชั่วร้ายทั้งหมด อย่างไรก็ตามเราก็ไม่ควรพลาดโอกาสของเราใน 3% ที่สำคัญนั้น
- โดนัลด์ คนุธ