当前位置:K88软件开发文章中心网站服务器框架Yii 2.0 → 文章内容

前端资源(Assets)

减小字体 增大字体 作者:佚名  来源:网上搜集  发布时间:2019-1-26 15:28:35

由  创建, 最后一次修改 2016-02-24 资源Yii中的资源是和Web页面相关的文件,可为CSS文件,JavaScript文件,图片或视频等, 资源放在Web可访问的目录下,直接被Web服务器调用。通过程序自动管理资源更好一点,例如,当你在页面中使用 yii\jui\DatePicker 小部件时, 它会自动包含需要的CSS和JavaScript文件,而不是要求你手工去找到这些文件并包含, 当你升级小部件时,它会自动使用新版本的资源文件,在本教程中,我们会详述Yii提供的强大的资源管理功能。资源包Yii在资源包中管理资源,资源包简单的说就是放在一个目录下的资源集合, 当在视图中注册一个资源包,在渲染Web页面时会包含包中的CSS和JavaScript文件。定义资源包资源包指定为继承yii\web\AssetBundle的PHP类,包名为可自动加载的PHP类名, 在资源包类中,要指定资源所在位置,包含哪些CSS和JavaScript文件以及和其他包的依赖关系。如下代码定义基础应用模板使用的主要资源包:<?phpnamespace app\assets;use yii\web\AssetBundle;class AppAsset extends AssetBundle{ public $basePath = '@webroot'; public $baseUrl = '@web'; public $css = [ 'css/site.css', ]; public $js = [ ]; public $depends = [ 'yii\web\YiiAsset', 'yii\bootstrap\BootstrapAsset', ];}如上AppAsset?类指定资源文件放在?@webroot?目录下,对应的URL为?@web,资源包中包含一个CSS文件?css/site.css,没有JavaScript文件, 依赖其他两个包 yii\web\YiiAsset 和 yii\bootstrap\BootstrapAsset, 关于yii\web\AssetBundle 的属性的更多详细如下所述:yii\web\AssetBundle::sourcePath: 指定包包含资源文件的根目录, 当根目录不能被Web访问时该属性应设置,否则,应设置 yii\web\AssetBundle::basePath 属性和yii\web\AssetBundle::baseUrl。?路径别名?可在此处使用;yii\web\AssetBundle::basePath: 指定包含资源包中资源文件并可Web访问的目录, 当指定yii\web\AssetBundle::sourcePath 属性,?资源管理器?会发布包的资源到一个可Web访问并覆盖该属性, 如果你的资源文件在一个Web可访问目录下,应设置该属性,这样就不用再发布了。?路径别名?可在此处使用。yii\web\AssetBundle::baseUrl: 指定对应到yii\web\AssetBundle::basePath目录的URL, 和 yii\web\AssetBundle::basePath 类似,如果你指定 yii\web\AssetBundle::sourcePath 属性,?资源管理器?会发布这些资源并覆盖该属性,路径别名?可在此处使用。yii\web\AssetBundle::js: 一个包含该资源包JavaScript文件的数组,注意正斜杠"/"应作为目录分隔符, 每个JavaScript文件可指定为以下两种格式之一:相对路径表示为本地JavaScript文件 (如?js/main.js),文件实际的路径在该相对路径前加上 yii\web\AssetManager::basePath,文件实际的URL在该路径前加上yii\web\AssetManager::baseUrl。绝对URL地址表示为外部JavaScript文件,如?http://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js?或//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js.yii\web\AssetBundle::css: 一个包含该资源包JavaScript文件的数组,该数组格式和 yii\web\AssetBundle::js 相同。yii\web\AssetBundle::depends: 一个列出该资源包依赖的其他资源包(后两节有详细介绍)。yii\web\AssetBundle::jsOptions: 当调用yii\web\View::registerJsFile()注册该包?每个?JavaScript文件时, 指定传递到该方法的选项。yii\web\AssetBundle::cssOptions: 当调用yii\web\View::registerCssFile()注册该包?每个?css文件时, 指定传递到该方法的选项。yii\web\AssetBundle::publishOptions: 当调用yii\web\AssetManager::publish()发布该包资源文件到Web目录时 指定传递到该方法的选项,仅在指定了yii\web\AssetBundle::sourcePath属性时使用。资源位置资源根据它们的位置可以分为:源资源: 资源文件和PHP源代码放在一起,不能被Web直接访问,为了使用这些源资源,它们要拷贝到一个可Web访问的Web目录中 成为发布的资源,这个过程称为发布资源,随后会详细介绍。发布资源: 资源文件放在可通过Web直接访问的Web目录中;外部资源: 资源文件放在你的Web应用不同的Web服务器上;当定义资源包类时候,如果你指定了yii\web\AssetBundle::sourcePath 属性,就表示任何使用相对路径的资源会被 当作源资源;如果没有指定该属性,就表示这些资源为发布资源(因此应指定yii\web\AssetBundle::basePath 和 yii\web\AssetBundle::baseUrl 让Yii知道它们的位置)。推荐将资源文件放到Web目录以避免不必要的发布资源过程,这就是之前的例子指定 yii\web\AssetBundle::basePath 而不是 yii\web\AssetBundle::sourcePath.对于?扩展来说,由于它们的资源和源代码都在不能Web访问的目录下, 在定义资源包类时必须指定yii\web\AssetBundle::sourcePath属性。注意: yii\web\AssetBundle::sourcePath 属性不要用@webroot/assets,该路径默认为 yii\web\AssetManager资源管理器将源资源发布后存储资源的路径,该路径的所有内容会认为是临时文件, 可能会被删除。资源依赖当Web页面包含多个CSS或JavaScript文件时,它们有一定的先后顺序以避免属性覆盖, 例如,Web页面在使用jQuery UI小部件前必须确保jQuery JavaScript文件已经被包含了, 我们称这种资源先后次序称为资源依赖。资源依赖主要通过yii\web\AssetBundle::depends 属性来指定, 在AppAsset?示例中,资源包依赖其他两个资源包: yii\web\YiiAsset 和 yii\bootstrap\BootstrapAsset 也就是该资源包的CSS和JavaScript文件要在这两个依赖包的文件包含?之后?才包含。资源依赖关系是可传递,也就是人说A依赖B,B依赖C,那么A也依赖C。资源选项可指定yii\web\AssetBundle::cssOptions 和 yii\web\AssetBundle::jsOptions 属性来自定义页面包含CSS和JavaScript文件的方式, 这些属性值会分别传递给 yii\web\View::registerCssFile() 和 yii\web\View::registerJsFile() 方法, 在视图?调用这些方法包含CSS和JavaScript文件时。注意: 在资源包类中设置的选项会应用到该

[1] [2] [3] [4]  下一页


前端资源(Assets)