Laravel 5.3包括JS插件,如jQuery

时间:2016-11-15 21:13:37

标签: javascript php jquery laravel laravel-5.3

我想知道什么是将js插件包含在laravel中以便在项目的每个文件中使用它们的正确方法....

我首先将它们包含在/public/index.php文件中,但总体上工作但导致了一些不可接受的问题。所以我正在寻找更好的方法。

我现在在我的主模板master.blade.php中尝试了它,包含在每个视图中..我使用过:

<script src="/js/jquery-3.1.1.min.js"></script>
    <script src="/js/sweetalert.min.js"></script>

但是它不起作用,没有定义$ ...使用CDN也没有改变任何东西,所以它似乎不是关于路径的...

任何人都可以帮助我吗?现在已经挣扎了好几天,围绕不同的方式进行测试,但没有任何作用......

修改:这是完整的文件master.blade.php

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">

    <!-- CSRF Token -->
    <meta name="csrf-token" content="{{ csrf_token() }}">

    <title>{{ config('app.name', 'Shopping Portal') }}@yield('page')</title>

    <!-- Styles -->
    <link href="/css/app.css" rel="stylesheet"/>
    <link href="/css/styles.css" rel="stylesheet"/>
    <link href="/css/sweetalert.css" rel="stylesheet"/>

    <!-- Scripts -->
    <script src="/js/jquery-3.1.1.min.js"></script>
    <script src="/js/sweetalert.min.js"></script>

    <script>
        window.Laravel = <?php echo json_encode([
            'csrfToken' => csrf_token(),
        ]); ?>
    </script>
</head>
<body>
    <div id="app">
        <nav class="navbar navbar-default navbar-static-top">
            <div class="container">
                <div class="navbar-header">

                    <!-- Collapsed Hamburger -->
                    <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#app-navbar-collapse">
                        <span class="sr-only">Toggle Navigation</span>
                        <span class="icon-bar"></span>
                        <span class="icon-bar"></span>
                        <span class="icon-bar"></span>
                    </button>

                    <!-- Branding Image -->
                    <a class="navbar-brand" href="{{ url('/') }}">
                        {{ config('app.name', 'Shopping Portal') }}
                    </a>
                </div>

                <div class="collapse navbar-collapse" id="app-navbar-collapse">
                    <!-- Left Side Of Navbar -->
                    <ul class="nav navbar-nav">

                    </ul>

                    <!-- Right Side Of Navbar -->
                   <!-- some nav items -->
                </div>
            </div>
        </nav>

        @yield('content')

        <div class="container">
        <div class="row">
            <footer class="text-center">
                &copy; 2016
                <ul>
                    <li class="btn btn-default"><a href="/imprint">Impressum</a></li>
                    <li class="btn btn-default"><a href="/support">Kontakt</a></li>
                </ul>

                @yield('footer')
            </footer>
            </div>
        </div>
    </div>

    <!-- Scripts -->
    <script src="/js/app.js"></script>
</body>
</html>

Edit2 :我现在注意到了一件事:当我再次从视图中加载jquery时(因此视图以此开头:

@extends('master')

<script src="/js/jquery-3.1.1.min.js"></script>

@section('content')

),然后它起作用(至少在那个特定的视图中),但我想知道为什么......我错了,如果我在主模板中加载jQuery,它包含在使用主模板的每个tempalte中好?

1 个答案:

答案 0 :(得分:1)

在布局上你可以添加这个 @yield('scripts')

和page.blade.php

@section('scripts')
  <script  type="text/javascript" src="{{ URL::asset('js/main.js') }}"></script>

@endsection 

如果您希望脚本位于所有页面上,请将其添加到布局

直接像这样

<script  type="text/javascript" src="{{ URL::asset('js/main.js') }}"></script>