Я пытаюсь добиться следующего:Webpack расслоение - JavaScript Bootstrap требует JQuery
bundle
(в таком порядке)jquery
,tether
иbootstrap.js
.- загрузите этот комплект на странице
HTML
и под ним загрузите другие скрипты на странице.
Для этого я использую webpack 2
и CommonsChunkPlugin
. Вот мой конфиг.
Для entries
у меня есть:
const scriptsEntry = {
blog_index: SRC_DIR + "/js/pages/blog_index.js",
blog_about: SRC_DIR + "/js/pages/blog_about.js",
vendor: ["jquery", "tether", "bootstrap"]
};
В plugins
разделе:
scriptsPlugins.push(
new webpack.optimize.CommonsChunkPlugin({
name: "vendor",
filename:"vendor.bundle.js",
minChunks: 2
}),
...
}));
Внутри 'index.html' Я нагрузить связки:
<script src="{{ url_for('static', filename='dist/js/vendor.bundle.js') + anti_cache_token }}"></script>
<script src="{{ url_for('static', filename='dist/js/home.js') + anti_cache_token }}"></script>
Внутри исходного каталога в blog_index.js
Я использую jquery
:
import $ from "jquery";
$(".home-click").click(function() {
alert("clicked from .home-click");
});
Результат:
- всё пучки без каких-либо ошибок.
- когда я нажимаю
.home-click
alert box
пожары как и ожидалось. - проверки пакетных файлов, которые я вижу, что:
vendor.bundle.js
содержит:jquery
,tether
иbootstrap
.- Внутри, например,
blog_index.js
(после того, как он прошел черезwebpack 2
), я заметил, что импортjquery
не входит в этот файл, ноvendor.bundle.js
(это как и ожидалось).
Однако, у меня есть следующий проблема когда я проверяю консоль браузера:
Я попробовал переключать порядок библиотек в этой строке vendor: ["jquery", "tether", "bootstrap"]
, но ничего не изменилось - ошибка все еще существует.
Знаете ли вы, как я могу решить эту проблему, желательно без использования дополнительных плагинов webpack
?
Большое спасибо за ваш ответ. У меня есть короткий вопрос: добавляет ли это влияние на 'vendor.bundle.js'? –
Да, он будет заменять экземпляры слова 'jQuery',' $ ',' window.jQuery' и т. Д. С чем-то, что фактически указывает на объект 'jQuery'. Например, что-то вроде этого '* WEBPACK VAR INJECTION */(function (jQuery, __webpack_provided_window_dot_Tether, Tether) {/ *!'. Это никак не влияет на функциональность, –
Спасибо! Я думаю, что понимаю, но просто чтобы убедиться : потому что он только предоставляет плагин, это означает, что мне не нужно изменять конфигурацию 'entry' и' CommonChunksPlugin'. Я получил его правильно? –