为laravel中的不同页面组织脚本文件

时间:2015-01-23 07:33:34

标签: php laravel laravel-4

我们假设我有两个基于laravel的页面,我对这两个页面都有不同的脚本文件。现在我正在加载index.blade.php中的所有脚本。根据目前的实现,所有脚本在两种情况下加载。如何为不同的页面加载不同的脚本文件,并在html之后加载脚本。

2 个答案:

答案 0 :(得分:1)

我不熟悉require.js,@ jsxqf在评论中将其作为替代。

我个人拥有yields我的主版块(一个用于js,一个用于css)我正在使用刀片进行调整。在views中,您也可以这样做。

档案 layout/master.blade.php

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <title>title</title>
    <link rel="stylesheet" href="style.css">
    @yield('css-scripts')
  </head>
  <body>
     @yield('content')
  </body>
  <script src="script.js"></script>
  @yield('js-scripts')
</html>

然后,您的视图将扩展此布局,并将脚本独立放在相应的部分中,如下所示:

档案 myview.blade.php

@extends('layout.master')

@section('content')
    // your content...
@stop

@section('js-scripts')
    // here, you have control over additionally loaded scripts...
    <script src="otherscript.js"></script>
@stop

但看起来require.js可能是这种方法的一个很好的替代方案,直到现在我都不知道。

答案 1 :(得分:0)

您最好的方法是创建一个部分,以在主布局上使用堆栈放置可选脚本

<html>
<head>

    <!-- At the end of head -->
    @stack('styles')

</head>
<body>
    <!-- At the end of body -->
    @stack('scripts')
   
</body>
</html>

在正常的视图下,即您的页面,

@extends('layouts.app')

@push('styles')

<link rel="stylesheet" href="{{ asset('css/page1.css')}}">

@endpush

@section('content')

    // page content

@endsection


@push('scripts')

    <script src="{{ asset('js/page1.js')}}"></script>

@endpush

这允许您从其他视图向主布局添加其他可选脚本和样式,从而完全安全地在视图中组织样式/脚本