tôi đang cố gắng để đạt được những điều sau đây:Webpack bó - cần JavaScript Bootstrap của jQuery
bundle
(theo thứ tự này)jquery
,tether
, vàbootstrap.js
.- tải gói này trong trang
HTML
và bên dưới tải các tập lệnh cụ thể của trang khác.
Để đạt được điều này, tôi đang sử dụng webpack 2
và CommonsChunkPlugin
. Đây là cấu hình của tôi.
Đối entries
tôi có:
const scriptsEntry = {
blog_index: SRC_DIR + "/js/pages/blog_index.js",
blog_about: SRC_DIR + "/js/pages/blog_about.js",
vendor: ["jquery", "tether", "bootstrap"]
};
Trong plugins
phần:
scriptsPlugins.push(
new webpack.optimize.CommonsChunkPlugin({
name: "vendor",
filename:"vendor.bundle.js",
minChunks: 2
}),
...
}));
Bên trong 'index.html' Tôi nạp bó:
<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>
Bên trong thư mục nguồn trong số blog_index.js
Tôi sử dụng số jquery
:
import $ from "jquery";
$(".home-click").click(function() {
alert("clicked from .home-click");
});
Kết quả:
- tất cả mọi thứ mà không bó bất kỳ lỗi nào.
- khi tôi nhấp vào
.home-click
vụ cháyalert box
như mong đợi. - kiểm tra các tập tin kèm tôi thấy rằng:
vendor.bundle.js
chứa:jquery
,tether
, vàbootstrap
.- tìm bên trong, ví dụ:
blog_index.js
(sau khi được chạy quawebpack 2
), tôi nhận thấy rằng nhậpjquery
không được nhóm bên trong tệp này, nhưngvendor.bundle.js
(điều này đúng như mong đợi).
Tuy nhiên, tôi có sau vấn đề khi tôi kiểm tra trình duyệt giao diện điều khiển:
tôi đã cố gắng chuyển đổi thứ tự của các thư viện trong dòng này vendor: ["jquery", "tether", "bootstrap"]
, nhưng không có gì thay đổi - các lỗi vẫn còn đó.
Bạn có biết cách tôi có thể giải quyết vấn đề này hay không, tốt nhất là không sử dụng các plugin bổ sung webpack
?
Cảm ơn rất nhiều câu trả lời của bạn. Tôi có một câu hỏi ngắn: việc thêm điều này có ảnh hưởng đến 'vendor.bundle.js' không? –
Có, nó sẽ thay thế các thể hiện của từ 'jQuery',' $ ',' window.jQuery' vv, với một cái gì đó thực sự trỏ đến đối tượng 'jQuery'. Ví dụ, một cái gì đó như thế này '* WEBPACK VAR INJECTION */(chức năng (jQuery, __webpack_provided_window_dot_Tether, Tether) {/ *!'. Nó không ảnh hưởng đến chức năng theo bất kỳ cách nào, –
Cảm ơn! Tôi nghĩ rằng tôi hiểu, nhưng chỉ để đảm bảo : bởi vì nó chỉ hiển thị các plugin nó có nghĩa là tôi không phải sửa đổi cấu hình của 'entry' và' CommonChunksPlugin'. Tôi đã nhận nó đúng chưa? –