Die Abhängigkeiten von Node.j wiegen zu viel


9

Vor kurzem habe ich angefangen mit node.js zu spielen.

In jedem Knoten-Tutorial heißt es, dass Sie damit beginnen sollten

npm init

Angenommen, Sie möchten ein Standard-Server-Framework, wählen Sie Express:

npm install express

Aber dann möchten Sie noch viel mehr Dinge, die Sie von Welten wie ASP.NET gewohnt sind.

Ich spreche über Template-Engines (Jade) und Stylesheet-Pre-Prozessoren (SASS).

Und dann sagen sie dir: "Installiere gulp / grunt! Damit du den Server und so viele andere Dinge automatisch minimieren und hässlich machen und ausführen kannst!"

Und das bedeutet, gulp, node-sass und gulp-sass und gulp-uglify zu installieren und vielleicht noch ein paar wirklich coole Sachen (tsd oder babel, markdown usw.) ...

Aber all das belastet Ihre Festplatte und Ihr Projekt. Suchen Sie keinen Moment und Sie können sich leicht mit einer Festplattengröße von über 100 MB für dieses Projekt (das noch nicht einmal begonnen hat!) Finden, ganz zu schweigen von über 10000 Dateien, da jedes Knotenmodul seine eigenen Abhängigkeiten mit sich bringt, egal wie das gleiche Die Abhängigkeit wird von einem anderen Modul verwendet. Und es ist sehr schwierig, sich irgendwohin zu bewegen, geschweige denn auf einen Webserver.

Vermisse ich etwas Ich denke nicht, dass es möglich ist, dass die Knotenumgebung so sehr gelobt wird, während ein so klarer Fehler vorliegt. Erwarte ich zu viel (schließlich habe ich versucht, viele Tools gleichzeitig zu verwenden), ist Node-Veteranen etwas Triviales bekannt, um dies zu umgehen?


2
stimme vollkommen zu, ich war erstaunt, den npm-Baum für einige Front-End-Projekte zu sehen. Ich denke, in der .net-Welt haben Sie dasselbe, aber sie sind alle zu Binärdateien kompiliert, sodass Sie es nicht bemerken
Ewan

2
Leider ist dies keine spezifische und beantwortbare Frage, daher wird sie wahrscheinlich bald geschlossen. Was ich Ihnen sagen kann ist, dass 1) während all diese zusätzlichen Tools für etwas nützlich sind, winzige Projekte die meisten einfach nicht benötigen 2) alle anderen Programmier-Frameworks mit ähnlichen Funktionen eine ähnliche Menge an Material enthalten (schauen Sie einfach Bei den JRE- oder .NET-Downloads besteht der einzige Unterschied darin, wie viel von dem, was Sie benötigen, Teil der "Standard"
-Distribution

1
@Ixrec ist natürlich verantwortlich, du hast es gerade getan (oder versucht) :). Aber dann könnte ich Ihre Behauptungen argumentieren: 1) Dies muss kein winziges Projekt sein - betrachten Sie ein Projekt mit mehreren Ansichten mit eigenen JS-Dateien und Stylesheets. das ist genug, um dich dazu zu bringen, sass, cssnano und uglify zu haben. auch genug, um Lust auf Express, Jade und ein bisschen mehr zu machen. 2) Ich hatte ein anständiges .net-Projekt, das nicht so schwer wurde (und nirgends so viele Dateien). 3) Vielleicht nehmen moderne Entwickler dies leicht, aber das belastet auch den Server, und das ist etwas besorgniserregender. Liege ich falsch?
Oder Yaniv

2
@OrYaniv In der Tat beweisen Sie meinen Standpunkt: Dies ist die Art von Problem, das diskutiert , aber nicht beantwortet werden kann, weil es einfach zu weit gefasst ist und zu stark davon abhängt, welche Projekte Sie gerade durchführen und welche Abhängigkeiten Sie zu haben scheinen brauchen. Übrigens sind Diskussionen im Chat völlig in Ordnung . Oder auf Quora.
Ixrec

3
Willkommen in der wunderbar aufgeblähten "Alles oder Nichts" -Welt von node.js, die eigentlich nicht einfacher und nicht besser ist als alles, was Sie zuvor verwendet haben.
Traubenfuchs

Antworten:


3

Das aktuelle Problem mit dem linken Pad ist ein hervorragendes Beispiel für das Problem mit dieser Tendenz in Node. Wenn Sie von zu vielen Dingen abhängig sind, neigen alle dazu, Ka-Pow zu machen, das Debuggen Ihres Projekts zu erschweren und für einen Neuling die Funktionsweise der Sprache zu erschweren.

Jetzt wissen gute Programmierer von Node.j, minimalistische Anwendungen zu schreiben, wenn es um Abhängigkeiten geht. Je weniger Dinge Sie abhängig sind, desto besser. Müssen Sie die Saiten links auffüllen? Codieren Sie es in einem Helfer, es sind 11 Codezeilen mit den Leerzeichen. Müssen Sie Ihre Zeichenfolgenreihen nummerieren? Codieren Sie es ein, es sind weniger als 100 Codezeilen.

Selbst für kompliziertere Aufgaben wie das Projektmanagement würde ich empfehlen, sich an Makefiles zu halten, während Ihr Projekt einfach genug ist - Grunzen und Schlucken sind wirklich sehr nützlich für riesige Projekte, die viel zu tun haben. Aber für Ihren SPA-Blog? Schreiben Sie ein Makefile, es dauert 5 Minuten und Sie wissen, wie es funktioniert.

Die Versuchung, jedes Mal, wenn Sie 3 Codezeilen schreiben müssen, nur nach npm zu suchen, ist groß, sollte aber widerstanden werden, wann immer es vernünftig ist. Schließen Sie jQuery nicht ein, wenn Sie 3 DOM-Manipulationen haben, verwenden Sie keinen Winkel für diese statische Promo-Seite und verwenden Sie kein Express für einen vereinfachten Server. Aber Sie codieren ein CMS? Sie müssten verrückt sein, um keine Pakete wie jQuery, Unterstrich und was nicht zu verwenden. Arbeiten Sie mit 10 Sammlungstypen, 3 DBS und fragen Sie sie ständig ab? Sie wären verrückt, wenn Sie keinen Unterstrich und einige andere verwenden würden. Denken Sie nur: "Spare ich genug Zeit, indem ich dieses Paket installiere?" oder 'Kann ich das nicht einfach für eine halbe Stunde oder so codieren?'


1
Auf einer anderen Anmerkung, dauert es wirklich 100 Zeilen Javascript - Code Zeilennummern auf einen String hinzufügen?
Robert Harvey

Hahahah, ich hatte nicht wirklich an eine realistische Implementierung der Zeilennummerierung gedacht, weil ... ich sehe nicht wirklich die Notwendigkeit, dass so etwas existiert, geschweige denn als Paket.
BorisStoyanovv

Sie könnten diese Linie wahrscheinlich halbieren, indem Sie sie einfach eine Meinung abgeben lassen. Es ist wirklich ein einfaches Problem zu lösen. (Und es ist ein Einzeiler in einer Sprache wie Schema und wahrscheinlich Python jetzt, wo ich darüber nachdenke)
Shayne
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.