Залежності 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.