orchestra/asset

Orchestra平台资产组件

v6.1.0 2021-04-17 13:08 UTC

README

Asset组件是Laravel 3 Asset的移植,用于Orchestra平台。组件的主要功能是允许动态处理资产声明,并可以从容器中直接解析资产依赖。但此组件并不旨在成为Laravel的资产管道包,对于此类用途,我们建议使用Grunt或Gulp。

tests Latest Stable Version Total Downloads Latest Unstable Version License Coverage Status

目录

版本兼容性

安装

要通过composer安装,请在终端中运行以下命令

composer require "orchestra/asset"

配置

config/app.php中添加以下服务提供者。

'providers' => [

    // ...

    Orchestra\Asset\AssetServiceProvider::class,
    Collective\Html\HtmlServiceProvider::class,
    
],

别名

您可能需要在config/app.php中添加Orchestra\Support\Facades\Asset到类别名

'aliases' => [

    // ...

    'Asset' => Orchestra\Support\Facades\Asset::class,

],

使用

注册资产

Asset类提供了一个简单的方式来管理应用程序使用的CSS和JavaScript。要注册一个资产,只需在Asset类上调用add方法

注册资产

Asset::add('jquery', 'js/jquery.js');

add方法接受三个参数。第一个是资产的名称,第二个是相对于public目录的资产路径,第三个是资产依赖列表(稍后详细介绍)。请注意,我们没有告诉方法我们正在注册JavaScript还是CSS。add方法将使用文件扩展名来确定我们正在注册的文件类型。

导出资产

当您准备好在视图中放置已注册资产的链接时,您可以使用styles或scripts方法

将资产导出到视图中

<head>
    {!! Asset::styles() !!}
    {!! Asset::scripts() !!}
</head>

上面的代码也可以简化为

<head>
    {!! Asset::show() !!}
</head>

资产依赖

有时您可能需要指定一个资产有依赖关系。这意味着资产需要在您的视图中声明其他资产之后才能声明。在Laravel中管理资产依赖关系非常简单。还记得您为资产分配的“名称”吗?您可以将它们作为add方法的第三个参数传递来声明依赖关系

注册一个有依赖关系的包

Asset::add('jquery-ui', 'js/jquery-ui.js', 'jquery');

在这个例子中,我们注册了jquery-ui资产,并指定它依赖于jquery资产。现在,当您在视图中放置资产链接时,jQuery资产将始终在jQuery UI资产之前声明。需要声明多个依赖项?没问题

注册一个有多个依赖关系的资产

Asset::add('jquery-ui', 'js/jquery-ui.js', ['first', 'second']);

资产容器

为了提高响应时间,通常会将JavaScript放在HTML文档的底部。但是,如果您还需要在文档的头部放置一些资产怎么办?没问题。Asset类提供了一个简单的方式来管理资产容器。只需在Asset类上调用container方法并指定容器名称。一旦您有一个容器实例,您就可以使用相同的语法将任何您想要的资产添加到容器中

检索资产容器的实例

Asset::container('footer')->add('example', 'js/example.js');

从给定容器中导出这些资产

{!! Asset::container('footer')->scripts() !!}

资产版本控制

提高响应时间的另一种方法是利用浏览器缓存,虽然实现方式有很多种,我们选择最后修改时间作为对Asset进行版本控制的方法。

Asset::container()->addVersioning();

// or alternatively
Asset::addVersioning();

注意:这仅适用于本地资产。

您可以通过使用以下方法来移除添加版本号:

Asset::container()->removeVersioning();

// or alternatively
Asset::removeVersioning();