มีเหตุผลที่ดีที่จะหลีกเลี่ยง node.js สำหรับเว็บแอปที่ไม่ใช่เรียลไทม์หรือไม่?


29

ฉันได้เห็นการพูดคุยมากมายเกี่ยวกับ Node.js ที่ยอดเยี่ยมสำหรับเว็บแอปแบบเรียลไทม์ - สิ่งที่ต้องการซ็อกเก็ต, Comet, การสื่อสาร AJAX ที่หนักหน่วงและอื่น ๆ ฉันรู้ว่าโมเดลที่ทำงานโดยอิงเหตุการณ์แบบอะซิงโครนัสและเป็นเธรดนั้นดีสำหรับการทำงานพร้อมกันที่มีค่าใช้จ่ายต่ำ

ฉันยังได้เห็นแบบฝึกหัด Node.js สำหรับแอปที่ 'ดั้งเดิม' ที่ไม่ใช่เรียลไทม์ (เช่นตัวอย่างบล็อกมาตรฐานซึ่งดูเหมือนจะเป็นมาตรฐาน 'Hello World' สำหรับผู้ที่เรียนรู้การพัฒนาแอป) และฉันก็รู้ว่าโหนดคงที่ช่วยให้คุณให้บริการสินทรัพย์คงที่

คำถามของฉันคือมีเหตุผลที่ดีที่จะหลีกเลี่ยง Node.js สำหรับเว็บแอปแบบดั้งเดิมเช่นคลาสสิฟายด์ฟอรัมตัวอย่างบล็อกดังกล่าวหรือแอพ CRUD ที่คุณสร้างขึ้นสำหรับแอปพลิเคชันธุรกิจภายในหรือไม่ เพียงเพราะมันเก่งในทุกเวลาที่เป็นเรื่องขี้ขลาดมันห้ามใช้มันเพื่อการใช้ที่มีพลังมากกว่าหรือไม่?

สิ่งเดียวที่ฉันนึกได้ก็คือการขาดห้องสมุดผู้ใหญ่ (แม้ว่ามันจะเปลี่ยนไป)

(เหตุผลที่ฉันถามคือฉันกำลังพิจารณาการทิ้ง PHP สำหรับ Node.js ส่วนใหญ่เพื่อให้เกินความต้านทานไม่ตรงกันของการสลับระหว่างภาษา แต่ยังเพื่อให้ฉันสามารถนำมาใช้รหัสตรวจสอบและ whatnot superego ของฉัน admonishes ให้ฉันเลือก เครื่องมือที่ดีที่สุดสำหรับงานนี้ แต่ฉันไม่มีเวลามากพอที่จะเรียนรู้ภาษาต่าง ๆ สิบห้าภาษาและห้องสมุด userland ทั้งหมดของพวกเขาเพื่อให้มีคลังแสงที่ครอบคลุมนอกจากนี้ยังให้ความมั่นใจว่า Node.js อาจมอบเส้นทางการเพิ่มประสิทธิภาพที่ง่ายกว่า PHP / Apache ในอนาคตเมื่อฉันต้องเริ่มคิดถึงการจราจรหนาแน่น)

[แก้ไข]ขอบคุณสำหรับคำตอบจนถึงขณะนี้คน; ฉันแค่ต้องการดูว่าใครจะมีน้ำหนักก่อนที่ฉันจะเลือกคำตอบ คำตอบจาก @Raynos kinda ยืนยันสิ่งที่ฉันคิดและลิงก์จากผู้แสดงความเห็นก็ให้อาหารที่ดีสำหรับความคิด แต่ฉันต้องการดูว่าใครมีคำตอบเฉพาะโหนดใด ๆ เช่น 'ไม่ได้ใช้ NODE สำหรับปัญหา X ' (นอกเหนือจากงานที่มี CPU สูงฉันรู้แล้ว :-)


1
@ default.kramer: ขอบคุณสำหรับลิงค์ฉันสนุกกับมันจริงๆ!
Zach

1
ว้าว! ค่อนข้างยึดถือความเห็นใช่มั้ย? ในบทความติดตามดูเหมือนว่าเขาจะบอกว่าสำหรับแอพพลิเคชั่นที่มี I / O สูงและซีพียูต่ำเหตุการณ์ที่เกิดขึ้นและระบบเธรดนั้นมีความเท่าเทียมกันและปัญหาอยู่กับโปรแกรมเมอร์มือใหม่ที่ไม่รู้ว่าจะต้องทำเมื่อไหร่ ยอมแพ้กับเหตุการณ์และวางไข่เธรดใหม่ แต่ความไม่รู้ของโปรแกรมเมอร์ไม่ได้หมายความว่าเครื่องมือไม่ดีใช่ไหม? ฉันยอมรับว่าการใช้สภาพแวดล้อมที่มีฟอร์เต้เป็นเหตุการณ์ลูปสำหรับงานที่ใช้งาน CPU ค่อนข้างแปลก แต่มันชั่วร้ายหรือไม่?
Paul d'Aoust

1
ความเกลียดชัง JavaScript ของเขาดูเหมือนจะเป็นประเด็นสำคัญเช่นกันซึ่งฉันกลัวว่าอาจมีส่วนรับผิดชอบต่อพลังงานที่อยู่เบื้องหลังการโต้แย้งของเขา
Paul d'Aoust

@ พอล - คุณน่าจะเอามันไปด้วยเม็ดเกลือ ฉันไม่ค่อยรู้จัก Node.js มากนัก ฉันแค่คิดว่ามันเป็นเรื่องตลก (ชอบงานเขียนส่วนใหญ่ของเขา)
default.kramer

@ default.kramer ขอบคุณสำหรับการเตือน ฉันมักจะรับฟังความคิดเห็นของผู้คนเป็นข่าวประเสริฐ คำวิจารณ์ที่ถูกต้องที่สำคัญของเขาดูเหมือนว่าคุณไม่ควรใช้ Node.js สำหรับงานที่ต้องใช้ CPU มาก ฉันสับสนเกี่ยวกับการวิจารณ์กระบวนการทำงานของเขา มีปัญหาใหญ่ในการสร้างคนงานแยกต่างหากสำหรับงานเฉพาะหรือไม่
Paul d'Aoust

คำตอบ:


13

มีเหตุผลที่ดีที่จะหลีกเลี่ยง Node.js สำหรับเว็บแอปทั่วไปหรือไม่

ใช่ถ้าคุณมี N ปีในเว็บแพลตฟอร์ม X ดังนั้นคุณสามารถพัฒนาแอปพลิเคชั่นในแพลตฟอร์ม X ได้เร็วขึ้น

ถ้าคุณต้องการที่จะทำ Y และแพลตฟอร์ม X มีวิธีแก้ปัญหาก่อนทำ Y ที่ทำ X แล้วทำเช่นนั้น

เหตุผลทั่วไปทั้งหมดว่าทำไมคุณควรใช้แพลตฟอร์มหนึ่งเหนืออีกแพลตฟอร์ม

ประเภทของแอพ CRUD ที่คุณสร้างขึ้นสำหรับแอพพลิเคชั่นธุรกิจภายใน

ใช่มีแพลตฟอร์มอื่นที่ให้คุณเขียนแอพพลิเคชั่นทั่วไปได้เร็วขึ้น

อย่างไรก็ตามที่กล่าวมา ฉันมีประสบการณ์เกี่ยวกับโหนดและไม่สามารถอ้างสิทธิ์ได้ว่าฉันจะเลือกแพลตฟอร์มอื่นบนโหนดยกเว้นว่าจะมีคุณสมบัติจำนวนมากนอกกรอบสำหรับฉัน

โดยทั่วไปมันเป็นคำถามง่าย ๆ

มีเครื่องมือที่ใช้สำหรับสิ่งนี้ทั้งหมดหรือไม่? ไม่จากนั้นเลือกแพลตฟอร์มที่สะดวกที่สุดในการเขียนเครื่องมือ

ไม่มีเหตุผลที่ชัดเจนว่าทำไม node.js เป็นแพลตฟอร์มที่ไม่สะดวก (นอกเหนือจากนั้น "ฉันเกลียดจาวาสคริปต์")


ดังนั้นคุณคิดว่าหลักการในทางปฏิบัติเช่นความคุ้นเคยความพร้อมของห้องสมุด ฯลฯ เป็นข้อโต้แย้งที่แข็งแกร่งสำหรับแพลตฟอร์มบางอย่างใช่มั้ย นั่นเป็นความคิดที่ดีและเป็นสิ่งที่ฉันกำลังพิจารณาอย่างแน่นอน (ฉันประหลาดใจที่คุณสนับสนุนวิธีแก้ไขปัญหานอกสถานที่ฉันคิดว่าคุณเป็นคนที่แต่งตัวประหลาดของคุณเอง!)
Paul d'Aoust

@ Pauld'Aoust ฉันเป็นคนที่แต่งตัวประหลาดของคุณเอง อย่างไรก็ตามฉันไม่ได้ทำอะไรเลยและไม่มีกำหนด
Raynos

เฮ้ขอบคุณสำหรับข้อแม้ ฉันจำความคิดเห็นของคุณเกี่ยวกับการสนทนา node.js เกี่ยวกับการใช้ไลบรารี่โมเดลของผู้อื่น (Backbone.js และอื่น ๆ ) และตระหนักว่าฉันใช้เวลามากเกินไปในการเรียนรู้ Backbone.js และใช้เวลาไม่มากพอที่จะใช้ประโยชน์จาก JavaScript กลไกการถ่ายทอดทางพันธุกรรมต้นแบบ คำปรึกษาที่ดี; ตอนนี้ฉันรู้สึกผ่อนคลายมากขึ้น
Paul d'Aoust

4
-1 คลุมเครือ 1) เพียงเพราะคุณมีประสบการณ์ N ปีใน X - ไม่ได้หมายความว่าคุณควรหลีกเลี่ยง NodeJS คุณกำลังเสนอความไม่รู้โดยเจตนาจากประสบการณ์หรือไม่? และ "เหตุผลทั่วไป" คืออะไร 2) 'แอปพลิเคชันอื่นที่ช่วยให้คุณเขียนแอปพลิเคชันทั่วไปได้เร็วขึ้น' - เป็นอัตนัยอย่างแท้จริง 3) 'other * than "* ฉันเกลียด * JavaScript' - เป็นอัตนัยและไม่ใช่เหตุผลที่ถูกต้องเพื่อหลีกเลี่ยงเทคโนโลยีที่เฟื่องฟู * การสะกดคำ
Jack Stone

@ClintNash เหตุผลบางอย่างของคุณไม่แตกต่างจากเขา "ทรัพยากรมนุษย์" กับ "ประสบการณ์ N ปี" เหมือนกันทุกประการ "NodeJS ยังไม่โตเท่ากรอบดั้งเดิม" vs "ใช่มีแพลตฟอร์มอื่นที่ให้คุณเขียนแอพพลิเคชั่นทั่วไปได้เร็วขึ้น ก็เหมือนกัน ไม่เพียง แต่พวกเขาจะเหมือนกัน แต่คุณไม่สามารถวัดได้ (วัตถุประสงค์) มากกว่าของเขา
aaaaaa

6

หลังจากทำงานกับโหนดเป็นเวลาสองสามสัปดาห์ฉันก็บอกว่าใช่มันเจ๋งมาก แต่ไม่จำเป็นต้องมีสิ่งที่คุณต้องการใช้เพื่อแทนที่แอปพลิเคชันเว็บที่หมดเวลาของคุณด้วย ... หรือ, imo ที่ตั้งใจจะเป็น

จำไว้ว่า node เป็นเซิร์ฟเวอร์ของตัวเอง สิ่งนี้จะแนะนำความซับซ้อนหากคุณต้องการเรียกใช้มากกว่าหนึ่งแอปพลิเคชัน node.js ของคุณ เช่นถ้าคุณมีเว็บไซต์ / โดเมนมากกว่าหนึ่งโฮสต์บนเครื่อง มันไม่เหมือนกับ LAMP stack ซึ่งคุณสามารถมีแอพพลิเคชั่น PHP โหลสำหรับโดเมนที่ต่างกันครึ่งโหลที่ทำงานนอกเซิร์ฟเวอร์เดียวกัน (บนพอร์ต 80 อย่างน้อย) มีเฟรมเวิร์กสำหรับโหนดที่อาจทำให้เป็นไปได้ แต่นั่นเป็นการเพิ่มความซับซ้อนที่คุณไม่ต้องการหากคุณติดอยู่กับแพลตฟอร์มเว็บแบบดั้งเดิม (แน่นอนคุณสามารถตั้งค่าพร็อกซีด้วยการวางเว็บเซิร์ฟเวอร์ไว้หน้าโหนด แต่การเรียงลำดับนั้นจะเอาชนะข้อดีของการใช้โหนด)

imo โหนดเหมาะอย่างยิ่งสำหรับการทำงานร่วมกับเว็บเซิร์ฟเวอร์แบบดั้งเดิม วิธีที่ฉันมีการจัดการสิ่งต่าง ๆ ในขณะนี้คือการให้บริการ html / js / images แบบคงที่ผ่านทาง apache และจัดการกับความต้องการข้อมูล 'เรียลไทม์' โดยการโพลแบบยาวไปยังแอปพลิเคชันโหนด


+1 ใช้งานง่ายในการตั้งค่าโฮสต์หลาย ๆ เครื่องถือว่าคุ้มค่าอย่างแน่นอน
Paul d'Aoust

มันค่อนข้างง่ายที่จะวางแอพโหนดไว้ด้านหลัง Apache httpd หรือเซิร์ฟเวอร์ nginx และคำขอการกำหนดเส้นทางด้วยลายเซ็น URI ของแอปนั้นไปยังพอร์ตโหนด (หรือพอร์ต)
TomG

+1 - แนวคิดของ node.js ในฐานะที่เป็นพร็อกซีฝั่งเซิร์ฟเวอร์ ('ร่วมกับเว็บเซิร์ฟเวอร์แบบดั้งเดิม') ได้รับแรงฉุดเมื่อต้นปีที่ผ่านมาและคุ้มค่าที่จะพิจารณาโดยเฉพาะอย่างยิ่งถ้าคุณมีสถาปัตยกรรมแบบดั้งเดิมขนาดใหญ่ในการจัดการ มันเป็นรูปแบบการออกแบบที่ดูเหมือนสมเหตุสมผลสำหรับองค์กร แต่มันก็น่าสังเกต - นี่ไม่ใช่เหตุผล AVOID Node.js แต่เหตุผลที่จะใช้มันเพื่อวัตถุประสงค์เฉพาะ
แจ็คสโตน

4
-1 - การใส่พร็อกซี (เช่น nginx) ที่หน้าโหนดเป็นกรณีการใช้งานที่สมบูรณ์แบบและในความเป็นจริงแล้วมีความปลอดภัยและประสิทธิภาพสูงกว่าในบางกรณี มันไม่ได้ทำลายผลประโยชน์ใด ๆ ของโหนด ฉันมักจะเรียกใช้แอพโหนดของฉันในซ็อกเก็ตโดเมน unix แล้วมี nginx ทำหน้าที่เป็นผู้รักษาประตู
Scott Anderson

3

เหตุผลที่ดีที่จะนึกถึงวินาทีเกี่ยวกับโหนดนั้นไม่ได้เป็นเรื่องทางเทคนิค - มันยอดเยี่ยมและน่าทึ่งในสิ่งที่มันทำ

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


ดังนั้นคุณคิดว่าการใช้ Node ไม่ได้มีอะไรมากไปกว่าการใช้งานแอพแบบเดิม ๆ ปัญหาเกี่ยวกับโลกแห่งความเป็นจริงเป็นอย่างไร?
Paul d'Aoust

+1 ทรัพยากรมนุษย์ - และความไม่เต็มใจของบางคนในการเรียนรู้ JavaScript - เป็นความจริงที่ไม่สะดวก คำตอบนี้ระบุไว้อย่างดี แต่การหลีกเลี่ยงโหนด "เพราะ people Hate JavaScript" ไม่ใช่ความก้าวหน้าเชิงตรรกะเช่นกัน เราจะอยู่ที่ไหนทางเทคนิคถ้าเราหลีกเลี่ยงทุกนวัตกรรม - ที่คนอื่นเกลียด? ไม่มีที่ไหนเลย ความท้าทายของโหนดคือ A) การได้รับพรสวรรค์ใหม่หรือ B) การให้ความรู้แก่คนที่มีความสามารถพิเศษเป็นความสามารถใหม่ จนถึงจุดนั้น - เราเห็นโรงเรียนโค้ด JavaScript ปรากฏขึ้นทุกหนทุกแห่งตั้งแต่การมองการณ์ไกลของจอห์นรีซิกในการก่อตั้ง Khan Academy กล่าวโดยย่อนี่คือแนวทางของสิ่งต่าง ๆ +1 ระบุไว้อย่างดี
แจ็คสโตน

3

นี่เป็นคำถามที่ดีมากที่เราต้องถามเพื่อที่จะยกระดับสถานะของศิลปะ

ฉันอยากรู้มาก (เช่น Paul d'Aoust) ซึ่งมีข้อ จำกัด ของ Node.JS อยู่ น่าเศร้าที่คำตอบจำนวนมากเต็มไปด้วยอคติส่วนตัวและเหตุผลที่เกี่ยวข้องชั่วคราว

ฉันถามตัวเองว่า: เราสามารถกรอง BIAS ที่เป็นประโยชน์ออกไปแล้วตอบคำถามที่เกี่ยวข้องกับคำถามนี้ได้ไหม?

คะแนนที่เหลืออยู่ดูเหมือนจะเป็น:

1. NodeJS ไม่ได้พัฒนาเต็มที่เท่ากับกรอบงานดั้งเดิม ดังที่ Paul d'Aoust แนะนำว่านี่เป็นเพียงเหตุผลชั่วคราวที่เกี่ยวข้องไม่ใช่เพื่อการหลีกเลี่ยงอย่างเต็มรูปแบบ - แต่ควรทบทวนและตรวจสอบอย่างรอบคอบ เราคาดว่าจะทำการบ้านในฐานะผู้เชี่ยวชาญทางเว็บและเป็นหน้าที่ของเราในการกำหนดเทคโนโลยีที่เหมาะสมที่สุดสำหรับองค์กรความต้องการของพวกเขาอนาคตของพวกเขาทีมงาน (ไม่ใช่เรา) การครบกำหนดเป็นสิ่งจำเป็นสำหรับการชี้แจงและการตัดสินความอยากอาหารเพื่อความเสี่ยง แต่ไม่ควรหลีกเลี่ยง

2. NodeJS เป็น Proxy Server ข้อเสนอแนะที่ชาญฉลาดของการสนทนาก่อนหน้านี้คือการพิจารณาและการพิจารณาที่คุ้มค่า มันเป็นความคิดของการใช้โหนดในความสัมพันธ์กับเทคโนโลยีที่มีอยู่เป็นรูปแบบการออกแบบส่วนต่อประสานพร็อกซีส่วนหน้า แต่ก็ไม่ใช่เหตุผลที่ AVOID จะใช้โหนด แต่เป็นเหตุผลที่จะหลีกเลี่ยงการใช้แทนทั้งหมด แทนที่จะเลือกวิธีการที่เป็นข้อพิสูจน์

3. การดีบักโหนด ในการสนทนากับผู้พัฒนาหลักของโหนดที่ Joyent มีความยุ่งยากมากมายรอบการ debuggability และติดตามสาเหตุของปัญหาที่เกิดจากแกนกลาง (ขึ้นอยู่กับการดำเนินการเธรดเดียวและไม่สามารถดูเธรดที่ผ่านมา) นี่คือการพิจารณาและการประเมินผลที่คุ้มค่า - แต่ (อีกครั้ง) มีแนวโน้มที่จะไม่รังเกียจการใช้งานทั่วไปเท่านั้นกรณีขอบที่อาจผลักซองจดหมาย บางทีความต้องการเฉพาะของคุณอาจอยู่ในหมวดหมู่นี้และพวกเขาอาจจะไม่

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

การร้องเรียน: การสังเกตข้อร้องเรียนของฉันเกี่ยวกับ JavaScript ก็คือผลลัพธ์จำนวนมากมาจากข้อผิดพลาดของผู้ใช้มากกว่าที่เกิดจากความล้มเหลวของภาษาที่สอดคล้องกัน เราได้ debunked การเรียกร้องจำนวนมากจาก "The Hate JavaScript Diatribe" และเราจะทำการ debunk อีกมากมาย ปัญหาเช่น - เอกสารไม่ดีพอมันไม่เซ็กซี่ แต่คนไม่ชอบมันเป็นมะเร็งมันเป็นมารหรือมันเกินไป "พิมพ์ง่าย" (-CRichardson) เป็นอัตวิสัยและ ข้อร้องเรียนแบบเอนเอียงที่จำเป็นต้องถูกกำจัดออกเพื่อการตัดสินใจที่ถูกต้องขององค์กร

ในท้ายที่สุดคำตอบที่ถูกต้องอาจจะเป็น - ไม่มีเหตุผลที่ดีที่จะหลีกเลี่ยง NodeJS บางทีนี่อาจเป็นเหตุผลว่าทำไมมันถึงมีการเติบโตอย่างรวดเร็วการยอมรับและการสนับสนุน แต่สำหรับพวกเราทุกคนบางทีคำตอบที่นี่คือการประเมินวิจัยและทำความเข้าใจกับ NodeJS ให้ดีขึ้น - และมองหา aversions ที่เป็นรูปธรรม ในการแสวงหาการเปิดรับความเข้าใจอย่างถ่องแท้ที่โหนด JS นั้นยังไม่บรรลุนิติภาวะ - เราพบสิ่งที่เราต้องการเพื่อให้ดีขึ้น และนั่นคือพร

คำถามที่ดี. ฉันยังคงอยากรู้อยากเห็นสำหรับใครบางคนที่จะหาเหตุผลที่ดีกว่าที่จะหลีกเลี่ยง NodeJS - มากกว่าสิ่งเหล่านี้


-1

มีประโยชน์ใด ๆ ของการใช้โหนดเหนือ X สำหรับแอปพลิเคชันที่ไม่ใช่เรียลไทม์:

  • มาตราส่วน : โหนดมีประสิทธิภาพที่ดี แต่แพลตฟอร์มอื่นก็มีเช่นกัน PHP, Ruby, Python และ Java ทุกระดับ คุณสามารถค้นหาชื่อบิ๊กที่มีผู้ใช้หลายล้านคนกำลังใช้พวกเขา
  • หนึ่งภาษาสำหรับส่วนหน้าและส่วนหลัง : มันเป็นเรื่องตลกเหมือนจาวา "เขียนเมื่อใดก็ได้"
  • ร้อนแรงและเซ็กซี่ : จุดที่ถูกต้องเท่านั้น แต่ไม่มีใครสนใจว่าเว็บไซต์ของคุณกำลังใช้เทคโนโลยีหงุดหงิด!

ประโยชน์ของการใช้ X over Node สำหรับแอปพลิเคชันที่ไม่ใช่เรียลไทม์:

  • วิธีปฏิบัติที่ดีที่สุด : เนื่องจากโหนดเป็นโหนดใหม่จึงมีแนวปฏิบัติที่ดีที่สุดน้อยกว่าแพลตฟอร์มอื่น ๆ โดยเฉพาะสำหรับเว็บแอปพลิเคชัน CRUD
  • ภาษา Javascript : คนไม่ชอบ Javascript แม้ว่า Node.js จะร้อน แต่จาวาสคริปต์ก็ไม่ได้เป็นเช่นนั้น นี่คือสาเหตุที่ผู้คนสร้าง Coffeescript เพื่อหลีกเลี่ยงการเขียนจาวาสคริปต์แม้สำหรับฝั่งไคลเอ็นต์
  • ความเร็วในการพัฒนา : เฟรมเวิร์คที่เก่าและน่าเบื่อรวมถึงและไม่ จำกัด เฉพาะ Rails และ Django นั้นได้รับการทดสอบและพัฒนามาอย่างดีในหลาย ๆ ปีสำหรับเว็บไซต์ CRUD ในขณะที่คุณสามารถใช้แอพพลิเคชั่นที่คล้ายกันในโหนดมันง่ายกว่าที่จะทำในกรอบของคุณปู่
  • เสถียรภาพ : กรอบงานเว็บของโหนดดีขึ้นเรื่อย ๆ หมายความว่าพวกเขากำลังเปลี่ยนแปลงและจะมีความเข้ากันไม่ได้ของ API เพิ่มเติมในอนาคตอันใกล้
  • ไลบรารีและเครื่องมือ : เทคโนโลยีเก่าที่มีผู้ใช้มากขึ้นจะมีไลบรารีและเครื่องมือมากขึ้น

คำตอบของฉันจะไม่ถูกต้องแน่นอนในปี 2558 ในปี 2014 ข้าม Node สำหรับแอปพลิเคชันเว็บที่ไม่ใช่เรียลไทม์ แต่คอยจับตาดูมัน

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


2
-1 ฉันเห็นด้วยกับคำตอบนี้จะไม่ถูกต้องในปี 2015 แต่นั่นก็เป็นเหตุผลสำหรับการลงคะแนนเสียงในสาระสำคัญ - การตัดสินใจในวันนี้คือการตัดสินใจในวันพรุ่งนี้ มันลบล้างสัญลักษณ์แสดงหัวข้อย่อย 8 ข้อด้านบน - หากเราเห็นว่ามีความเกี่ยวข้องกันชั่วคราว 1) มาตราส่วน - เครื่องชั่งน้ำหนัก Walmart Mobile ไม่ใช่เหตุผลที่จะหลีกเลี่ยง Node 2) Isomorphic JS ไม่ใช่เรื่องตลก ไม่ใช่เหตุผล 3) ความเซ็กซี่ของเซิร์ฟเวอร์? ผู้ใช้ส่วนใหญ่รู้จัก ux เท่านั้น 4) แนวปฏิบัติที่ดีที่สุดเป็นเรื่องส่วนตัว 5) ไม่น่าสนใจ? -subjective 6) ง่ายขึ้น? -subjective 7) ความเสถียรเป็นจุดที่เกี่ยวข้องชั่วคราว 8) NPM คาดว่าจะผ่าน Maven ในปี 2014 ไม่มีเหตุผลที่นี่ downvote
แจ็คสโตน

-1

Node.js เป็นแพลตฟอร์มยอดนิยมและมีคุณสมบัติที่น่าสนใจมากมาย blah blah blah แต่การใช้งานเครื่องมือเป็นเรื่องส่วนตัว ฉันให้ Node.js สี่ครั้งและฉันก็ไม่พอใจกับมัน นี่คือเหตุผลของฉัน โปรดทราบว่าเหตุผลบางประการนั้นล้าสมัยหรือเป็นเรื่องส่วนตัว: P

  • ฉันชอบภาษา / ไวยากรณ์ที่แตกต่างกัน (ฉันชอบ Python, Scala, ภาษาโปรดของฉันคือ Prolog ดังนั้นใช่)
  • คุณภาพของเอกสารประกอบสำหรับเฟรมเวิร์กและไลบรารีที่ฉันใช้นั้นไม่ดีเท่าห้องสมุด Java, Scala และ Python
  • นักออกแบบของ nodejs ค่อนข้างหมกมุ่นอยู่กับการเรียกกลับแทนรูปแบบเหตุการณ์ผู้สังเกตการณ์หรือฟิวเจอร์ส
  • มีโซลูชันพร้อมสำหรับสิ่งที่ฉันต้องการทำใน Ruby, Python, Java ที่พัฒนาแล้วในปี 2005 ฉันแค่ต้องแก้ไขไฟล์กำหนดค่า

2
-1 - คะแนนอัตนัย "ไวยากรณ์ที่ต้องการ", "เอกสารไม่ดี", "การเรียกกลับที่ครอบงำ" และ "เสร็จแล้วในภาษาของฉัน" - ล้วน แต่คลุมเครือและเป็นอัตนัย เราเคยได้ยินสิ่งเหล่านี้มาก่อน พวกเขา debunked ไม่มีเหตุผลที่จะหลีกเลี่ยง Node.JS ที่นี่ downvote
แจ็คสโตน

1
คะแนนทั้งหมดเป็นความชอบส่วนตัวของฉันซึ่งฉันระบุไว้อย่างเปิดเผย นอกจากนี้คุณจะ debunk การตั้งค่าส่วนตัวได้อย่างไร
David Sergey

-9

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

ที่กล่าวว่าโหนดเหมาะกว่าสำหรับสถาปัตยกรรมแอปพลิเคชันบางประเภท PHP เป็นไฟล์ html ที่บรรจุโค้ดไว้เล็กน้อย โหนดเป็นรหัสทางเลือกที่มีบิตของ html

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

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


จุดที่เกี่ยวกับ HTTP เป็นไร้สัญชาติและเรียลไทม์-ish; อย่างไรก็ตามฉันสนใจในความกังวลในทางปฏิบัติเกี่ยวกับคำจำกัดความทั่วไปของเรียลไทม์: คำขอปริมาณต่ำมาก ดูเหมือนว่าจะใช้ทักษะมากเกินไปในการหมุนอินสแตนซ์ PHP ใหม่เพื่อพ่น JSON สามหรือสี่บรรทัดในบางครั้ง ฉันถูกต้องหรือฉันแค่ทุกข์จากโรคนกแก้ว?
Paul d'Aoust

หากคุณไม่ได้โหลด PHP คุณกำลังโหลดจาวาสคริปต์และมีการแคชหลายประเภทที่เกี่ยวข้องดังนั้นความแตกต่างจะไม่เพียงพอที่จะต้องกังวล ความแตกต่างที่สำคัญคือรูปแบบการเขียนโปรแกรมดังนั้นการบำรุงรักษา - ทั้งสองแพลตฟอร์มสามารถส่งออกทั้ง HTML หรือ JSON แต่ PHP ถูกออกแบบมาสำหรับผู้ที่ใช้ในการแก้ไขไฟล์ html แบบคงที่ในขณะที่โหนดถูกออกแบบมาสำหรับคนที่ใช้
Tom Clarkson

ฉันรู้ว่าฉันต้องโหลดล่ามบางครั้ง แต่ฉันเห็นประโยชน์ที่จะมีล่ามหนึ่งอินสแตนซ์ที่ทำงานอยู่ตลอดเวลา (แน่นอนว่าแอปซีพียูต่ำ) ใน Node.js แทนที่จะมีล่ามหมุน ขึ้นและจบลงด้วยทุกคำขอเช่นเดียวกับใน PHP
Paul d'Aoust

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