Laravel 5 中使用 HtmlBuilder 及 URL::asset() 引入站内或站外的 css 和 js 文件

在应用中引入站内或站外的css和js文件是一项基本需求,Laravel 5提供了多种方式来引入css和js,今天我们就来讨论这个问题。

1、HtmlBuilder

在Laravel 5之前我们使用内置的 HtmlBuilder 来添加样式和脚本文件,但是在 Laravel 5 将 HtmlBuilder 从核心中移除出去了,所以 HTML::style() 不再有效。如果你想要在 Laravel 5 中继续使用需要手动引入 illuminate/html 这个包。

我们还是通过Composer来安装:

composer require illuminate/html 5.*

安装完成后需要在config/app.php中注册服务提供者到providers数组:

Illuminate\Html\HtmlServiceProvider::class,

同时注册门面到aliases数组:

'Html' => Illuminate\Html\HtmlFacade::class,
'Form' => Illuminate\Html\FormFacade::class,

接下来你就可以在视图文件中使用如下方式来引入css和js文件了:

{!!Html::style('css/style.css')!!}
{!!Html::script('js/script.js')!!}

注:站内文件默认相对于web根目录,也就是public目录

如果要引入站外文件,可以这么实现:

{!!Html::style('//netdna.bootstrapcdn.com/bootstrap/3.0.3/css/bootstrap.min.css')!!}
{!!Html::script('//code.angularjs.org/1.2.13/angular.js')!!}

2、URL::asset()

此外,还可以使用内置的URL类上的asset()方法来引入css和js文件。

引入站内css和js:

<link rel="stylesheet" href="{{ URL::asset('css/bootstrap.css') }}">
<script type="text/javascript" src="{{ URL::asset('js/jquery.min.js') }}"></script>

注:默认相对于web根目录,也就是public目录

引入站外css和js:

<link rel="stylesheet" href="{{ URL::asset('//netdna.bootstrapcdn.com/bootstrap/3.0.3/css/bootstrap.min.css') }}">
<script type="text/javascript" src="{{ URL::asset('//code.angularjs.org/1.2.13/angular.js') }}"></script>

学院君 has written 883 articles

Laravel学院院长,终身学习者

积分:100062 等级:P12 职业:码农 城市:杭州

4 条回复

  1. 吴海浪 吴海浪 says:
    为什么放到云虚拟机上, 这么写,但是图片加载不出来呢?但是在本地测试时就能加载出来。。。
  2. Ehmetjan | 艾合 Ehmetjan | 艾合 says:
    FormFacade 中value值怎么传,比如这样:value="{{ old('email') }}"。安装文章这么写会报错{!! Form::email('email','old('email')' !!}. 用单引号报错,用双引号输出字符串。
  3. happyjian21 happyjian21 says:
    {{asset('/path/to/js/js.name')}},5.2这样写就可以了

登录后才能进行评论,立即登录?