2016-08-04 5 views
0

Нод/NPM-новичок с передним интерфейсом. Я понимаю, что одна из сильных сторон модуля NPM-типа заключается в том, что его зависимости устанавливаются внутри себя, в node_modules. Модули всегда имеют код, который им нужен, а внешние библиотеки не конфликтуют.Модули NPM для интерфейсных узлов и несколько загрузок с одинаковой зависимостью

Это означает, что это приведет к тому, что клиент будет загружать один и тот же lib + ver (скажем, jquery v.X) несколько раз. Какова методика определения того, что модуль нуждается в зависимости, но он не должен упаковывать этот код, если зависимость уже доступна на сайте/странице? Включает ли упомянутый метод родительские модули, которые делают доступным доступ к общей lib + ver?

Или, если различные интерфейсные модули просто перезагрузите тот же lib + ver, что другие модули на странице, возможно, уже загрузились?

+0

Я полагаю, что когда я создаю скрипт сборки, я не объединяю общие библиотеки, и я указываю, что теги html-скриптов должны быть сгенерированы для загрузки разделяемой библиотеки, если они были восстановлены модулем. Также лучше для кеширования браузера. Или, иначе? Должен ли я просто конкатенировать все библиотеки, необходимые для конкретного модуля, и не беспокоиться о лишнем весе? –

ответ

0

Клиент будет только захватывать файлы из этой папки, которые необходимы, поэтому, если он связан в HTML, как только клиент будет только один раз его захватить. NPM обрабатывает дубликаты зависимостей автоматически.

Сказав это, вы обычно хотите обслуживать только статическую папку для клиента, не раскрывая всю свою структуру сервера. Это может быть достигнуто с помощью:

app.use(express.static('server/public')

где «сервер/общественность» директория относительно файла server.js, который вы хотите, чтобы служить. В этом случае «public» содержит все мои связанные файлы просмотра, таблицы стилей, файлы JS и т. Д., Которые связаны с HTML-страницами. Вам также не нужно перемещать зависимости этого модуля.

Недостатком этого является то, что вам придется вручную перемещать зависимости в общую папку (обычно я делаю каталог «поставщик») и ссылку. Это больше, но в долгосрочной перспективе это намного эффективнее и безопаснее.

ПРИМЕЧАНИЕ. При использовании статической папки для обслуживания файлов ваши HTML-ссылки будут обслуживаться с относительного пути к этой папке.

+0

Спасибо, joh ... это промежуточное ПО выглядит неплохим вариантом для обеспечения безопасности. На данный момент я прихожу из справочника css старой школы и ссылки js и пытаюсь понять, как это происходит через узел. На самом деле, я вижу, что «webpack» позволяет «разделять код» на sharedLibs и на файлы js для конкретных страниц ... Я просто собираюсь на этом этапе :-) –