在Laravel 5.2中的特定视图上加载CSS和JS文件

时间:2016-11-08 18:17:01

标签: javascript php css laravel-5 laravel-5.2

我有CSS和JS文件,只能在Laravel 5.2中的某些特定视图上加载。

我的老板决定放弃我们用来在我们的刀片模板上加载JS文件的RequireJS。现在,我们正在尝试以本机方式加载依赖项。

这是我的代码:

@extends('layouts.app')
<link href="{{ URL::asset('assets/css/slick.grid.css') }}" rel="stylesheet">
<link href="{{ URL::asset('assets/css/examples.css') }}" rel="stylesheet">
<script type="text/javascript">
    document.addEventListener('DOMContentLoaded', function() {
        loadscript('assets/js/jquery.event.drag-2.3.0.js');
        loadscript('assets/js/slick.rowselectionmodel.js');
        loadscript('assets/js/slick.core.js');
        loadscript('assets/js/slick.grid.js');
    });
</script>
@section('page')
//the rest of page

我的“loadscript”函数执行此操作:

function loadscript(url, callback)
{
    var head = document.getElementsByTagName('head')[0];
    var script = document.createElement('script');
    script.type = 'text/javascript';
    script.src = url;

    head.appendChild(script);
};

这确实有效,但感觉速度很慢,我相信在我们想要的任何视图上都必须有更好的方法让laravel使用特定的css和js文件加载。

让css和js文件仅在某些视图上加载非常重要。

2 个答案:

答案 0 :(得分:2)

Laravel 5 - Add a stylesheet only if on a certain page/controller (page specific asset)

@extends('layouts.master')

@section('styles')
    <link href="{{asset('assets/css/custom-style.css')}}" />
@stop

答案 1 :(得分:1)

如果您不喜欢@section()的想法,只想在一个地方使用动态脚本,请查看我的详细答案:

Laravel 5 - Add a stylesheet only if on a certain page/controller (page specific asset)

总之,使用命名路由:

<!-- In layout template -->
@if (in_array(Route::currentRouteName(), ['profile', 'register']))
    <script src="example.js"></script>
@endif