Node.js bağımlılıkları çok ağır


10

Son zamanlarda node.js ile oynamaya başladım.

Şimdi, her düğüm öğreticisi ile başlamanız gerektiğini belirtiyor

npm init

ve sonra standart sunucu çerçevesi istediğinizi söyleyin, ifade seçtiğinizi varsayalım:

npm install express

ancak ASP.NET gibi dünyalardan alışkın olduğunuz pek çok şey daha istersiniz.

Şablon motorları (yeşim taşı) ve stil sayfası ön işlemcileri (SASS) hakkında konuşuyorum.

Ve sonra size "gulp / grunt kurun!" Derler, böylece sunucuyu ve diğer birçok şeyi otomatik olarak küçültebilir ve çirkinleştirebilirsiniz! "

Ve bu, yudum, düğüm-sass ve yudum-sass ve yutmak-uglify yüklemek ve belki de daha güzel şeyler (tsd veya babel, markdown vb.)

Ama tüm bunlar diskinizde ve projenizde ağır . Bir an aramayın ve kendinizi bu proje için 100MB + disk boyutuyla (henüz başlamadı bile) kolayca bulabilirsiniz, çünkü her düğüm modülü kendi bağımlılıklarını getirir, aynı olmasa da 10000 + dosya bağımlılığı başka bir modül tarafından kullanılır. Ve bu bir web sunucusu değil, her yere taşınması çok zor bir şey.

Bir şey mi kaçırıyorum? Böyle net bir kusur varken düğüm ortamına çok fazla övgü verilmesinin mümkün olduğunu düşünmüyorum. Çok fazla mı bekliyorum (sonuçta aynı anda birçok araç kullanmaya çalıştım), Düğüm gazilerinin bunu atlaması için önemsiz bir şey var mı?


2
tamamen katılıyorum, bazı ön uç projeleri için npm ağacını görmekten şaşırdım. Sanırım .net dünyasında aynı şey var, ama hepsi ikili dosyalara derlendi, böylece fark etmiyorsunuz
Ewan

2
Ne yazık ki bu gerçekten spesifik ve cevaplanabilir bir soru değil, bu yüzden yakında kapanacak. Söyleyebileceğim şey şu ki 1) tüm bu ek araçlar bir şey için yararlı olsa da, küçük projelerin çoğuna ihtiyaç duymazlar 2) benzer işlevselliğe sahip diğer tüm programlama çerçeveleri benzer miktarda malzeme ile gelir (sadece bak JRE veya .NET indirmelerinde), tek fark, ihtiyacınız olan şeyin ne kadarının "varsayılan" dağıtımın bir parçası
olduğudur

1
@Ixrec tabii ki onun sorumlu, sen sadece yaptı (veya yapmaya çalıştı) :). Ama sonra, iddialarınızı savunabilirim: 1) bu küçük bir proje olmak zorunda değil - kendi js dosyaları ve stil sayfaları ile çeşitli görünümlere sahip bir proje düşünün. sass, cssnano ve uglify'ye sahip olmak istemeniz için yeterli. Ayrıca ekspres, yeşim ve biraz daha fazlasını yapmak için yeterli. 2) O kadar da ağır olmayan iyi bir .net projem vardı (ve hiçbir dosya kadar). 3) belki modern dev makinesi bunu kolayca al, ancak bu da sunucuda ağırlığında ve bu biraz daha ilgili. Yanlış mıyım?
Veya Yaniv

2
@OrYaniv Gerçekten, benim fikrimi kanıtlıyorsunuz: bu tartışılabilecek , ancak cevaplanamayacak bir konu, çünkü çok geniş ve tam olarak hangi projelere ve hangi bağımlılıklara benzediğinize çok bağlı ihtiyaç. Bu arada, sohbetlerde tartışmalar tamamen iyi durumda . Veya Quora'da.
Ixrec

3
Aslında daha önce kullandığınızdan daha kolay ve daha iyi olmayan node.js'nin harika şişirilmiş "ya hep ya hiç" dünyasına hoş geldiniz.
Traubenfuchs

Yanıtlar:


4

Son sol ped sorunu, Düğümdeki bu eğilim ile ilgili sorunun temel bir örneğidir. Çok fazla şeye bağlı olduğunuzda, hepsi ka-pow'e gitmeye, projenizin hata ayıklamasını zorlaştırmaya ve yeni gelen biri için dilin işleyişini kavramaya eğilimlidir.

Şimdi iyi Node.js programcıları bağımlılık söz konusu olduğunda minimalist uygulamalar yazmayı biliyor. Ne kadar az şey bağımlı olursanız o kadar iyidir. Dizeleri sola doldurmanız mı gerekiyor? Bir yardımcıya kodlayın, boşluklarla birlikte 11 satırlık kod. Dize satırlarınızı numaralandırmanız mı gerekiyor? Kodlayın, 100 satırdan az kod.

Proje yönetimi gibi daha karmaşık görevler için bile, projeniz yeterince basitken Makefiles'a sadık kalmanızı öneririm - homurdanma ve yutkunma, çok fazla ağır kaldırma gerçekleştiren dev projeler için gerçekten yararlıdır. Ama SPA blogunuz için? Bir Makefile yazın, 5 dakika sürer ve nasıl çalıştığını bilirsiniz .

Sadece 3 satırlık kod yazmanız gerektiğinde npm'e göz atma cazibesi harika, ancak makul olduğunda direnilmelidir. 3 DOM manipülasyonunuz varsa jQuery eklemeyin, bu statik tanıtım sayfası için açısal kullanmayın, basit bir sunucu için express kullanmayın. Ama bir CMS kodluyorsunuz? JQuery, alt çizgi ve ne gibi paketleri kullanmamak için deli olmanız gerekir. 10 koleksiyon türü, 3 dbs ile çalışma ve bunları her zaman sorgulama? Alt çizgileri ve birkaçını kullanmamanız delirmiş olur. Sadece ' Bu paketi yükleyerek yeterli zaman kazanıyor muyum?' veya 'Bunu yarım saat kadar kodlayamaz mıyım?'


2
Başka bir notta, bir dizeye satır numaraları eklemek gerçekten 100 satır Javascript kodu gerektirir mi?
Robert Harvey

Hahahah, gerçekten gerçekçi bir numaralandırma uygulaması düşünmemiştim, çünkü ... Bir paket olarak, böyle bir şeyin varlığına gerçekten ihtiyaç duymadım.
BorisStoyanovv

Muhtemelen bu çizgi şeyi yarıda kesebilirsin. Bunu çözmek gerçekten basit bir problem. (Ve şema gibi bir dilde tek bir astar ve muhtemelen bunu düşündüğüm python)
Shayne
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.