การพึ่งพา Node.js มีน้ำหนักมากเกินไป


10

เมื่อเร็ว ๆ นี้ฉันเริ่มเล่นกับ node.js

ทีนี้ทุก ๆ บทช่วยสอนจะบอกว่าคุณควรเริ่มด้วย

npm init

จากนั้นพูดว่าคุณต้องการเฟรมเวิร์กเซิร์ฟเวอร์มาตรฐานพูดว่าคุณเลือกด่วน:

npm install express

แต่คุณจะต้องการสิ่งอื่น ๆ อีกมากมายที่คุณคุ้นเคยจากโลกอย่าง ASP.NET

ฉันพูดเกี่ยวกับแม่แบบเอ็นจิ้น (หยก) และสไตล์พรีโปรเซสเซอร์ (SASS)

แล้วพวกเขาก็บอกคุณว่า "ติดตั้ง gulp / grunt! เพื่อให้คุณสามารถลดขนาดและทำให้อัปเดตและรันเซิร์ฟเวอร์และสิ่งอื่น ๆ อีกมากมายโดยอัตโนมัติ!"

และนั่นหมายถึงการติดตั้ง gulp, node-sass และ gulp-sass และ gulp-uglify และอาจจะมีสิ่งดีๆอีกมากมาย (tsd หรือ babel, markdown ฯลฯ ) ...

แต่สิ่งเหล่านั้นมีอยู่มากในดิสก์และโปรเจ็กต์ อย่าค้นหาสักครู่และคุณสามารถค้นหาตัวเองด้วยขนาดดิสก์ 100MB + สำหรับโครงการนั้น (ซึ่งยังไม่ได้เริ่มเลย!) ไม่ต้องพูดถึงไฟล์มากกว่า 10,000 ไฟล์เนื่องจากทุกโหนดของโมดูลนำการอ้างอิงของตัวเองมาใช้ การพึ่งพาถูกใช้โดยโมดูลอื่น และนี่เป็นสิ่งที่ยากมากที่จะย้ายไปทุกที่โดยไม่ต้องพึ่งเว็บเซิร์ฟเวอร์

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


2
เห็นด้วยโดยสิ้นเชิงฉันรู้สึกประหลาดใจที่เห็นต้นไม้ npm สำหรับโครงการส่วนหน้า ฉันเดาว่าในโลกของ. net คุณมีสิ่งเดียวกัน แต่พวกเขาทั้งหมดถูกรวบรวมไปยังไบนารีดังนั้นคุณจึงไม่สังเกตเห็น
Ewan

2
น่าเสียดายที่นี่ไม่ใช่คำถามที่เฉพาะเจาะจงและตอบได้จริง ๆ ดังนั้นมันอาจจะถูกปิดในไม่ช้า สิ่งที่ฉันสามารถบอกคุณได้คือ 1) ในขณะที่เครื่องมือเพิ่มเติมทั้งหมดเหล่านั้นมีประโยชน์สำหรับบางสิ่งโครงการขนาดเล็กก็ไม่ต้องการมากที่สุด 2) กรอบการเขียนโปรแกรมอื่น ๆ ที่มีฟังก์ชั่นคล้ายกันจะมาพร้อมกับเนื้อหาที่คล้ายกัน ที่การดาวน์โหลด JRE หรือ. NET) ความแตกต่างเพียงอย่างเดียวคือสิ่งที่คุณต้องการเป็นส่วนหนึ่งของการกระจาย "เริ่มต้น" และจำนวนที่คุณต้องไปหาในแพ็คเกจอื่น ๆ 3) 100 MB บนเครื่อง dev ของคุณไม่มีอะไร
Ixrec

1
@ แน่นอนว่ามันตอบได้คุณเพิ่งทำ (หรือพยายาม) :) แต่จากนั้นฉันสามารถโต้แย้งการอ้างสิทธิ์ของคุณ: 1) นี่ไม่จำเป็นต้องเป็นโครงการเล็ก ๆ - พิจารณาโครงการที่มีหลายมุมมองด้วยไฟล์ js และสไตล์ชีตของพวกเขาเอง เพียงพอที่จะทำให้คุณต้องการมีเขื่อง cssnano และ uglify ยังพอที่จะทำให้คุณต้องการด่วนหยกและอีกเล็กน้อย 2) ฉันมีโปรเจ็กต์. net ที่ไม่หนักมาก (และไม่มีไฟล์มากเท่านี้) 3) บางทีเครื่อง dev ที่ทันสมัยใช้สิ่งนี้ได้อย่างง่ายดาย แต่นั่นก็มีน้ำหนักบนเซิร์ฟเวอร์และนั่นก็เกี่ยวกับอีกเล็กน้อย ฉันผิดหรือเปล่า?
Yaniv

2
@Orananiv แน่นอนคุณเป็นคนพิสูจน์ประเด็นของฉัน: นี่เป็นปัญหาที่สามารถพูดคุยได้ แต่ไม่ตอบเพราะมันกว้างเกินไปและขึ้นอยู่กับโครงการที่คุณกำลังทำและสิ่งที่คุณต้องพึ่งพา ความต้องการ. โดยวิธีการที่การอภิปรายจะสมบูรณ์ปรับมากกว่าในการแชท หรือบน Quora
Ixrec

3
ยินดีต้อนรับสู่โลกแห่ง node.js ที่ "น่าประหลาดใจ" ซึ่งไม่น่าจะง่ายและไม่ดีไปกว่าสิ่งที่คุณเคยใช้มาก่อน
Traubenfuchs

คำตอบ:


4

ปัญหาซ้าย - ขวาล่าสุดเป็นตัวอย่างสำคัญของปัญหาที่เกิดกับแนวโน้มนี้ในโหนด เมื่อคุณพึ่งพาหลายสิ่งหลายอย่างพวกเขาทั้งหมดมีแนวโน้มที่จะไป ka-pow ทำให้โครงการของคุณยากต่อการแก้ไขและสำหรับผู้มาใหม่ยากที่จะเข้าใจการทำงานของภาษา

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

แม้สำหรับงานที่ซับซ้อนมากขึ้นเช่นการจัดการโครงการฉันขอแนะนำให้ติดกับ Makefiles ในขณะที่โครงการของคุณง่ายพอ - เสียงฮึดฮัดและเสียงอึกทึกนั้นมีประโยชน์จริง ๆ สำหรับโครงการขนาดยักษ์ที่มีการยกของหนักมาก แต่สำหรับบล็อก SPA ของคุณ เขียน Makefile ใช้เวลา 5 นาทีและคุณรู้ว่ามันทำงานอย่างไร

สิ่งล่อใจเพียงแค่เรียกดู npm ทุกครั้งที่คุณจำเป็นต้องเขียนโค้ด 3 บรรทัดนั้นยอดเยี่ยม แต่ควรจะถูกต่อต้านเมื่อใดก็ตามที่สมเหตุสมผล อย่ารวม jQuery หากคุณมีการเปลี่ยนแปลง 3 DOM อย่าใช้เชิงมุมสำหรับหน้าโปรโมชั่นสแตติกนั้นอย่าใช้เอ็กซ์เพรสสำหรับเซิร์ฟเวอร์แบบง่าย แต่คุณกำลังเขียนโค้ด CMS อยู่ใช่ไหม คุณต้องคลั่งไคล้ที่จะไม่ใช้แพ็คเกจเช่น jQuery, ขีดล่างและอะไรที่ไม่ ทำงานกับคอลเล็กชั่น 10 ประเภท, 3 เดซิเบลและสอบถามพวกเขาตลอดเวลา? คุณจะเสียสติไม่ได้ที่จะใช้เครื่องหมายขีดล่างและอีกสองสามคน แค่คิดว่า 'ฉันจะประหยัดเวลาได้มากเพียงแค่ติดตั้งแพ็คเกจนี้หรือไม่' หรือ 'ฉันจะใช้รหัสนี้ไม่ได้ในครึ่งชั่วโมงหรือมากกว่านั้น'


2
ในอีกหมายเหตุใช้รหัส Javascript 100 บรรทัดเพื่อเพิ่มหมายเลขบรรทัดในสตริงหรือไม่
Robert Harvey

ฮ่าฮ่าฮ่าฉันไม่เคยคิดที่จะใช้การนับจำนวนจริงเพราะ ... ฉันไม่เห็นความต้องการสิ่งที่มีอยู่จริง
BorisStoyanovv

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