Импорт, Требовать?Как смешивать файлы Javascript вместе? - PullRequest
0 голосов
/ 01 декабря 2018

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

У меня есть веб-сайт, который буквально представляет собой один огромный HTML-файл.Он запускает скрипты, определенные в строке в теге <scripts>.

Моя цель - переместить все скрипты в отдельные файлы .js и перетащить их в index.html (или друг в друга, где это необходимо).Я знаком с использованием Node's require и знаком с import , используемым в Angular.Я подчеркиваю использование , потому что я действительно не знаю как они работают.

Предположение 1 : я не могу использовать require - эточисто для Node.js.Причина, по которой я привел это, состоит в том, что я почти уверен, что видел требование в AngularJS 1.5 коде, поэтому допущение делает меня неудобнымЯ догадываюсь это было сшито WebPack, Gulp или подобным.

Предположение 2 : я должен использовать import, но импорт работает только с URLадрес, если мой .js размещен на сервере или CDN, он будет удален.НО, я не могу указать локальный путь (на сервере) здесь - index.html НЕ будет автоматически извлекать зависимости во время обслуживания.Мне нужно npm/Webpack/other для предварительной компиляции моего index.html, если я хочу, чтобы deps был загружен на сервер.

Предположение 3 : Предварительная компиляция вОдин, готовый к работе, HTML-файл - это желаемый способ построения вещей, потому что файл можно быстро обслужить (при условии, что он готов к работе).Я делаю предположение о недавней тенденции обслуживания Markdown с CDN, появлении JAMstack и количестве сайтов, использующих Jekyll и т. Д. (Правда, для традиционных сайтов Jekyll).

Предположение 4 : Я также хочу в конечном итоге перейти к Typescript, но я предполагаю, что это ничего не меняет, поскольку я просто потяну TS, чтобы скомпилировать его до .js, а затем использую любое решение, которое я использовал выше

Вопрос : Если понятно, что я пытаюсь сделать и что меня смущает, является ли приличным решением изучить npm/Webpack, чтобы склеить мои .js файлы?Что бы подготовило их для склеивания, используя import / export ?Если да, то есть ли пример того, как это обычно делается?

1 Ответ

0 голосов
/ 01 декабря 2018

Как вы упомянули, require не может использоваться для ваших целей, поскольку он является частью модульной системы CommonJS и NodeJS.Более подробную информацию о require можно найти здесь: Что это за Javascript "require"?

Импорт - это стандартный синтаксис JS ES2015.Но стандарт ES2015 и все вышеперечисленное имеет очень ограниченную поддержку браузера.Подробнее об этом можно прочитать здесь: Ссылка на импорт

Однако вы все равно можете кодировать в соответствии с последним стандартом (что позволяет использовать импорт / экспорт и т. Д.), А затем переносить кодчтобы иметь возможность работать в браузере.Для этого вам понадобится транспортер.Вы можете сослаться на Babel, который является одним из самых популярных транспортеров: https://babeljs.io/

Для ваших точных целей вам необходимо использовать модуль связывания .Webpack / Rollup и т. Д., Являются некоторыми популярными модулями.Они могут автоматически идентифицировать все JS-файлы, на которые есть ссылки при импорте, объединить их, а затем перенести код для запуска в браузере (они также используют транспортер) и создать один JS-файл (или несколько, в зависимости от ваших конфигураций).

Вы можете обратиться к руководствам по началу работы с Webpack: https://webpack.js.org/guides/getting-started/

или RollupJS: https://rollupjs.org/guide/en#quick-start

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