Можно ли ссылаться на node_modules напрямую? - PullRequest
0 голосов
/ 06 января 2020

Проект, над которым я сейчас работаю (Java / JSP), в настоящее время не использует менеджера пакетов для управления JavaScript зависимостями.

Используемые библиотеки просто фиксируются под контролем версий, и упоминается как таковой из JSP страниц ...

Я хотел бы перейти к рабочему процессу, если бы мы использовали менеджер пакетов (например, yarn), а позже, в конце концов, также webpack для дальнейшего оптимизировать сборку.

Я хотел бы сделать это поэтапно. Поскольку у меня практически нет опыта работы с таким внешним интерфейсом , у меня есть несколько вопросов:

  1. Было бы странно просто начать с определения используемых библиотек в package.json файл и использовать yarn для управления упаковкой?

yarn затем извлечет модули и сохранит их в папке node_modules.

Плохо ли обращаться к скриптам в этой папке node_modules непосредственно из файлов JSP?

Пример

package. json:

"dependencies": {
    "jquery": "^3.4.1"
}

приложение. jsp:

<script src="node_modules/jquery/dist/jquery.min.js"></script>

Ответы [ 2 ]

2 голосов
/ 07 января 2020
  1. Да, все в порядке. Так мы обычно инициализируем фронтенд-проекты (возможно, иногда какой-то скрипт более высокого уровня делает это за нас, но все же). Просто запустите npm init.

  2. О, да, это очень плохо. Скорее всего, это просто не будет работать. Если вы хотите загрузить что-то непосредственно на страницу, вам нужна версия cdn.

Если честно, наличие package.json не так полезно без такого инструмента для сборки, как webpack, gulp или хрюканье.

UPD : Относительно почему загрузка вещей напрямую из node_modules может повредить:

Много современных JS пакетов ( как, например, React) использовать модули , которые еще не реализованы ни в одном браузере, или синтаксис ES5 +, который поддерживается только некоторыми браузерами.

Таким образом, вы можете загрузить React напрямую, но взломает sh в любом браузере с чем-то вроде import is not defined.

В принципе, много современных пакетов ожидают, что у вас будет либо инструмент для сборки, либо вы используете версию cdn.

Честно говоря, я не знаю, сколько пакетов позволяет беспрепятственно загружать вещи прямо из node_modules.

Итак, в вашей конкретной ситуации я бы сказал, что если конкретные пакеты, которые вы используете, позволяют вам делать так и поставляются с браузер-совместимой версией, вы можете только на 1063 * впереди и сделайте это так.

Тем не менее, я считаю весьма вероятным, что рано или поздно вы столкнетесь с пакетом, который не позволит вам включить его таким образом ( или хуже : будет, но взломает sh некоторые браузеры, которые не поддерживают новейшие JS функции / привнесут другие неприятные ошибки в ваше приложение).

Надеюсь, на на этом этапе у вас уже будет настроен инструмент построения.

Бонус : сравнительно недавно некоторые браузеры начали поддерживать модули !

Есть даже такие инструменты, как снежный покров , которые делают нечто особенно похожее на то, что вы ищете.

Несмотря на то, что вам все равно нужно быть очень осторожным с этим. Например, прямое включение loda sh. js сгенерирует 640 GET (см. эту статью -> раздел «Библиотеки»).

0 голосов
/ 07 января 2020

NPM пакеты предназначены для запуска с Node, а не в браузере. Вам нужно будет предоставить версию, удобную для браузера, используя что-то вроде webpack или browserify.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...