javascript - 使用 Webpack Encore 导入 Bootstrap 和插件 Carousel
问题描述
我正在使用 Webpack Encore 开发 Symfony 项目,但在加载 Bootstrap 和插件 Carousel 时遇到问题。
它可能来自 Bootstrap 的导入,因为当我导入文件时它似乎工作(但不完全):
import './styles/bootstrap.min.css';
但是当我从“node_modules”正确导入包时,滑块根本不起作用:
import 'bootstrap';
并且控制台中没有错误。这是我的代码:
应用程序.css
@import '~bootstrap';
@import url('https://maps.googleapis.com/maps/api/js?language=en');
@import url('https://fonts.googleapis.com/css?family=Roboto:100,300,400,500,700');
应用程序.js
//import './styles/bootstrap.min.css';
import 'bootstrap';
滑块.js
import jQuery from 'jquery';
// make Carousel a jQuery plugin
import Carousel from 'bootstrap/js/dist/carousel';
import jQueryBridget from 'jquery-bridget';
jQueryBridget('carousel', Carousel, jQuery);
;(function ($, window, document, undefined) {
$(document).ready(function () {
$('.carousel').carousel({
interval: 10000
});
});
})(jQuery, window, document);
解决方案
第一:试着理解你在做什么。虽然 Webpack 用于编译JavaScript 模块,但 jQuery 是在 JS 还没有那么现代时开发的库。如今,您可能不再需要 jQuery。因此,您将现代 JS 与传统 JS 结合起来。虽然它可以工作,但如果您不需要它,请不要尝试。
Bootstrap 5 不需要 jQuery。那么为什么要使用它呢?看一下Bootstrap 自己的文档中的示例:
var myCarousel = document.querySelector('#myCarousel')
var carousel = new bootstrap.Carousel(myCarousel, {
interval: 2000,
wrap: false
})
所以这应该足够了:
var myCarousel = document.querySelector('.carousel')
var carousel = new bootstrap.Carousel(myCarousel, {
interval: 1000
})
由于您之前遇到过类似的问题,我真的建议您阅读您要使用的库的文档。通常,它们会提供您可以使用的好例子。
TL;DR:停止使用 jQuery 并开始阅读文档。
推荐阅读
- angular - 从 queryparammap 退订 - 这有必要吗?
- bootstrap-4 - 如何在 Bootstrap Tooltip 中添加标签表
- python - 熊猫数据帧的样条插值顺序
- eclipse - eclipse中使用sap UI5的分析列表页面
- php - easybill REST API POST 通过 PHP
- html - 移动布局未根据屏幕尺寸调整
- node.js - 没有从 lambda 函数调用 aws ses.sendEmail
- python - 如何找出字符串是否在字典中
- asp.net-core-webapi - 带有 OData 控制器的 ASP.NET Core Web API 需要使用 fluent API 来实现复合键
- javascript - js将html附加到表格单元格