在Laravel 5中,{{url}}和{{asset}}之间有什么区别?

无名小*_*名小路 13 php laravel laravel-5.2

我发现有时两者都可以吗?那真正的区别是什么?

例如,

<link rel="stylesheet" href="{{asset('resources/views/admin/style/css-ui.admin.css')}}">
Run Code Online (Sandbox Code Playgroud)

<link rel="stylesheet" href="{{url('resources/views/admin/style/font/css/font-awesome.min.css')}}">
Run Code Online (Sandbox Code Playgroud)

这两种形式都可以.

那么,有什么区别?

小智 29

决定使用哪个URL帮助程序

考虑所需的URL类型/ URL的使用方式.为每种类型的URL使用单独的辅助方法的一个优点是它们可以具有不同的处理逻辑.例如,资产(例如CSS,图像等)可能涉及检查文件存在于文件系统中但不需要路由的分析类型,因为路由可能具有参数.

url()生成给定路径的绝对URL (代码)

  • 用于静态URL(应该很少见).
  • 接受编码并添加到域末尾的参数数组.
  • 保留任何URL查询字符串.

    {{ url('search') }}
    // http://www.example.com/search
    
    {{ url('search', ['qevo', 'laravel']) }}
    // http://www.example.com/search/qevo/laravel
    
    Run Code Online (Sandbox Code Playgroud)

asset()生成应用程序资产的URL (代码)

route()获取指定路由的URL (代码)

  • 用于每条路线(应指定每条路线以帮助适应未来的路径变化).
  • 需要命名路由.
  • 接受路由参数的关联数组.
  • 允许覆盖相对路线与绝对路线(默认).

    {{ route('user.profile', ['name'=>'qevo']) }}
    // http://www.example.com/user/qevo/profile
    
    {{ route('user.profile', ['name'=>'qevo'], false) }}
    // /user/qevo/profile
    
    Run Code Online (Sandbox Code Playgroud)


Con*_*ney 10

{{url}} 允许您创建指向站点上URL的链接 - 另一个好处是您可以将第二个参数设置为包含查询字符串参数的数组.

{{asset}只是允许您链接到公共目录中的资产 - 例如css/main.css.