加载jquery和boostrap的问题(可能是app.js& webpack.mix.js问题)

时间:2017-07-13 17:00:26

标签: laravel webpack

我尝试使用bootstrap创建下拉列表,但下拉列表未打开。我通过添加jqueryboostrap css& js cdn链接到我的页眉和页脚。我的理解是,jquery.jsbootstrap.js都应该包含在app.js中。但是,当我查看我的app.js时,我看不到任何代码,它看起来并不正确。

我创建了一个自定义test.js文件,假设在页面加载时显示警告,单击按钮但我得到$ is undefined,除非我将jquery.js和{{1进入一个文件,再次不应该在test.js

中加载jquery alreayd

test.js

app.js

webpack.js

$(function() {
    alert('test');
}

function test() {
    alert('worked');
}

app.js

https://pastebin.com/rnWkQBmz

footer.js

mix.js('resources/assets/js/app.js', 'public/js')
   .sass('resources/assets/sass/app.scss', 'public/css')
    .styles(['resources/assets/css/approve.css'], 'public/css/approve.css')
    .scripts(['resources/assets/js/jquery-3.2.1.js',
        'resources/assets/js/test.js'],
        'public/js/vendor.js');

bootstrap.js

<script type="text/javascript" src="{{asset('js/vendor.js')}}"></script>
<script type="text/javascript" src="{{ asset('js/app.js') }}"></script>
</body>
</html>

full bootstrap.js https://pastebin.com/274biWYp

app.scss

try {
    window.$ = window.jQuery = require('jquery');

    require('bootstrap-sass');
} catch (e) {}

我认为如果@import "node_modules/bootstrap-sass/assets/stylesheets/bootstrap"; 合并app.jsbootstrap.js并且我不应该再包括它们,我是否正确?

2 个答案:

答案 0 :(得分:0)

  

我曾遇到同样的问题

只需从您那里删除window.$ = window.jQuery = require('jquery');

bootstrap.js并再次转换代码。您应该在jquery之前添加app.js以使其正常运行

答案 1 :(得分:0)

解决了我的问题。不知怎的,我app.js中的resources/assets/js被覆盖并且内部有一个函数,所以我从laravel https://github.com/laravel/laravel/blob/master/resources/assets/js/app.js中复制并粘贴了原始的 UIView.animate(withDuration: 0.95, delay: 0, options: .curveEaseIn, animations: {() -> Void in self.blurView.effect = nil }, completion: {(finished:Bool) -> Void in })