连接 Bootstrap、jQuery 和本地 JavaScript - 中断 jQuery
Concatenating Bootstrap, jQuery and local JavaScript - breaks jQuery
目前,我正在为我的本地 'theme' 缩小并连接我的 JavaScript 和 CSS 文件。然后我将 Bootstrap、jQuery 和我的本地 JavaScript/css 文件加载到我网站的头部。
虽然这有效,但它确实会导致 8 个单独的资源加载,而不仅仅是我想要完成的 2 个(1 个用于 JS,1 个用于 CSS)。 (此时我不打算异步加载多个库)。
我在构建系统中使用 Grunt 以调用 Uglify 操作来缩小我的 JavaScript。
下面是我Gruntfile.js
的相关部分
uglify: {
build: {
files: [{
src: ['src/main/webapp/js/vendor/*.js', 'src/main/webapp/js/*.js', '!src/main/webapp/js/output.min.js'],
dest: 'src/main/webapp/js/output.min.js'
}]
}
}
我认为通过将已经缩小的 jQuery 和 Bootstrap 库指定给 Uglify 操作,我可以让它将这些库与我缩小的 'theme' JavaScript .但是,这样做时,我的浏览器会收到以下错误消息:
Uncaught Error: Bootstrap's JavaScript requires jQuery
Uncaught ReferenceError: $ is not defined
Uncaught ReferenceError: $ is not defined
显然,通过连接和缩小这些文件,我破坏了一些东西。
有人有什么建议吗?为了确定,我已经尝试使用 Bootstrap 和 jQuery 库的缩小版和未缩小版。
干杯,
安迪
问题是您在 jQuery 之前包含了 bootstrap 的 javascript 文件。
Bootstrap 依赖于 jQuery。您需要先包含 jQuery,然后再包含任何需要 jQuery.
的内容
假设您使用标准 grunt-contrib-concat
进行串联,您需要确保以正确的顺序指定文件。
例如,在我的工作 Grunt 配置文件中(我使用 Foundation 而不是 Bootstrap,但它们都依赖于 jQuery)我的 vendor/external 文件。 build/external.all.min.js
是从 jQuery 构建的预缩小代码,然后是基础,然后是所有其他脚本。
files: {
'build/external-all.min.js': [
'build/external/jquery.min.js',
'build/external/foundation.min.js',
'build/external/*.js']
}
目前,我正在为我的本地 'theme' 缩小并连接我的 JavaScript 和 CSS 文件。然后我将 Bootstrap、jQuery 和我的本地 JavaScript/css 文件加载到我网站的头部。
虽然这有效,但它确实会导致 8 个单独的资源加载,而不仅仅是我想要完成的 2 个(1 个用于 JS,1 个用于 CSS)。 (此时我不打算异步加载多个库)。
我在构建系统中使用 Grunt 以调用 Uglify 操作来缩小我的 JavaScript。
下面是我Gruntfile.js
的相关部分uglify: {
build: {
files: [{
src: ['src/main/webapp/js/vendor/*.js', 'src/main/webapp/js/*.js', '!src/main/webapp/js/output.min.js'],
dest: 'src/main/webapp/js/output.min.js'
}]
}
}
我认为通过将已经缩小的 jQuery 和 Bootstrap 库指定给 Uglify 操作,我可以让它将这些库与我缩小的 'theme' JavaScript .但是,这样做时,我的浏览器会收到以下错误消息:
Uncaught Error: Bootstrap's JavaScript requires jQuery
Uncaught ReferenceError: $ is not defined
Uncaught ReferenceError: $ is not defined
显然,通过连接和缩小这些文件,我破坏了一些东西。
有人有什么建议吗?为了确定,我已经尝试使用 Bootstrap 和 jQuery 库的缩小版和未缩小版。
干杯, 安迪
问题是您在 jQuery 之前包含了 bootstrap 的 javascript 文件。
Bootstrap 依赖于 jQuery。您需要先包含 jQuery,然后再包含任何需要 jQuery.
的内容假设您使用标准 grunt-contrib-concat
进行串联,您需要确保以正确的顺序指定文件。
例如,在我的工作 Grunt 配置文件中(我使用 Foundation 而不是 Bootstrap,但它们都依赖于 jQuery)我的 vendor/external 文件。 build/external.all.min.js
是从 jQuery 构建的预缩小代码,然后是基础,然后是所有其他脚本。
files: {
'build/external-all.min.js': [
'build/external/jquery.min.js',
'build/external/foundation.min.js',
'build/external/*.js']
}