Залежності Node.js важать занадто багато


10

Нещодавно я почав грати з node.js.

Тепер у кожному навчальному посібнику із вузла зазначено, що слід починати

npm init

а потім, скажіть, що ви хочете отримати якийсь стандартний серверний фреймворк, скажіть, що ви вибираєте express:

npm install express

але тоді вам захочеться ще багато речей, до яких ви звикли з таких світів, як ASP.NET.

Я говорю про двигуни шаблонів (нефрит) та попередні процесори таблиць стилів (SASS).

А потім вони скажуть вам "встановити gulp / grunt! Щоб ви могли мінімізувати та знищувати та запускати сервер та багато інших речей автоматично!"

А це означає встановити gulp, node-sass, and gulp-sass, and gulp-uglify, а можливо, ще якісь цікаві речі (tsd або babel, markdown тощо) ...

Але все це важко на вашому диску та проекті. Не шукайте ні хвилини, і ви можете легко знайти себе з розміром диска 100 Мб + для цього проекту (який ще не почався!), Не кажучи вже про 10000+ файлів, оскільки кожен модуль вузла має свої власні залежності, незалежно від того, що те саме залежність використовується іншим модулем. І це дуже важко перенести куди завгодно, не кажучи вже про веб-сервер.

Я щось пропускаю? Я не думаю, що можливо так багато похвал відводиться середовищу вузлів, поки існує така явна вада. Чи очікую я занадто багато (адже я намагався використати багато інструментів одночасно), чи є щось тривіальне, що відомо ветеранам Вузла, щоб обійти це?


2
повністю згоден, я був вражений, коли побачив дерево npm для деяких передових проектів. Я думаю, що у світі .net у вас є те саме, але всі вони складені до двійкових файлів, тому ви не помічаєте
Еван

2
На жаль, це насправді не конкретне і відповідальне питання, тому воно, ймовірно, скоро закриється. Я можу вам сказати, що 1) хоча всі ці додаткові інструменти для чогось корисні, крихітні проекти просто не потребують більшості з них 2) всі інші рамки програмування з подібною функціональністю матимуть аналогічну кількість матеріалів (просто подивіться у завантаженні JRE або .NET), різниця полягає лише в тому, скільки потрібно, що є частиною дистрибутива "за замовчуванням" і скільки потрібно шукати в інших пакунках 3) 100 Мб на вашій машині
розробки

1
@Ixrec, звичайно, відповідає, ви щойно зробили (або намагалися) :). Але тоді я можу стверджувати ваші твердження: 1) це не повинно бути крихітним проектом - розгляньте проект з кількома переглядами з власними js-файлами та таблицями стилів. цього достатньо, щоб ви хотіли мати sass, cssnano та uglify. також достатньо, щоб ви хотіли експресу, нефриту і трохи більше. 2) У мене був гідний .net проект, який не став таким важким (і ніде стільки файлів). 3) можливо, сучасна машина розробників сприймає це легко, але це також важить на сервері, і це трохи більше стосується. Я помиляюся?
Або Янів

2
@OrYaniv Дійсно, ти наче доводиш мою думку: це питання, яке можна обговорити , але не відповісти, тому що воно занадто широке і занадто сильно залежить від того, якими саме проектами ти займаєшся та якими залежностями ти здається потреба. До речі, в чаті обговорення повністю прекрасні . Або на Quora.
Іксрек

3
Ласкаво просимо у чудово роздутий світ node.js "все або нічого", що насправді не простіше і не краще, ніж те, що ви використовували раніше.
Traubenfuchs

Відповіді:


4

Нещодавнє видання з лівої панелі є яскравим прикладом проблеми з цією тенденцією в Node. Якщо ви залежаєте від занадто багато речей, всі вони схильні йти ка-поро, ускладнюють налагодження вашого проекту, а для новачків - важче зрозуміти роботу мови.

Зараз хороші програмісти Node.js знають писати мінімалістичні програми, де йдеться про залежності. Чим менше речей від вас залежить - тим краще. Потрібно прокладати рядки зліва? Зашифруйте це в помічнику, це 11 рядків коду з пробілами. Потрібно нумерувати рядки рядків? Зашифруйте це, це менше 100 рядків коду.

Навіть для складніших завдань, таких як управління проектами, я б запропонував дотримуватися Makefiles, тоді як ваш проект досить простий - бурчання і глот по-справжньому, дуже корисні для гігантських проектів, які мають зробити багато важких підйомів. Але для вашого SPA-блогу? Напишіть Makefile, це займає 5 хвилин, і ви знаєте, як це працює.

Спокуса просто переглядати npm кожного разу, коли потрібно написати 3 рядки коду, велика, але їй слід протистояти, коли це розумно. Не включайте jQuery, якщо у вас є 3 маніпуляції з DOM, не використовуйте кутові для цієї статичної промо-сторінки, не використовуйте експрес для спрощеного сервера. Але ви кодуєте CMS? Вам доведеться бути божевільним, щоб не використовувати такі пакети, як jQuery, підкреслення та що ні. Працювати з 10 типами колекцій, 3 dbs і постійно запитувати їх? Вам буде божевільно не використовувати підкреслення та кілька інших. Подумайте лише: "Чи економлю достатньо часу, встановивши цей пакет?" або "Чи не можу я просто кодувати це протягом півгодини чи так?"


2
З іншого боку, чи дійсно потрібно 100 рядків коду Javascript, щоб додати номери рядків до рядка?
Роберт Харві

Ха-ха-ха, я насправді не думав про реалістичну реалізацію нумерації ліній, тому що ... я насправді не бачу необхідності в тому, щоб таке існувало, не кажучи вже про пакет.
БорисСтояновв

Ви, напевно, могли розрізати цю лінію навпіл, просто давши їй самовиразитися. Це справді вирішити просту проблему. (І це один вкладиш такою мовою, як схема, і, мабуть, пітон зараз, коли я думаю про це)
Shayne
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.