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

前端资源(Assets)

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

包中?每个?CSS/JavaScript 文件,如果想对每个文件使用不同的选项, 应创建不同的资源包并在每个包中使用一个选项集。例如,只想IE9或更高的浏览器包含一个CSS文件,可以使用如下选项:public $cssOptions = ['condition' => 'lte IE9'];这会是包中的CSS文件使用以下HTML标签包含进来:<!--[if lte IE9]><link rel="stylesheet" href="path/to/foo.css"><![endif]-->为链接标签包含<noscript>可使用如下代码:public $cssOptions = ['noscript' => true];为使JavaScript文件包含在页面head区域(JavaScript文件默认包含在body的结束处)使用以下选项:public $jsOptions = ['position' => \yii\web\View::POS_HEAD];Bower 和 NPM 资源大多数 JavaScript/CSS 包通过Bower?和/或?NPM管理, 如果你的应用或扩展使用这些包,推荐你遵循以下步骤来管理库中的资源:修改应用或扩展的?composer.json?文件将包列入require?中, 应使用bower-asset/PackageName?(Bower包) 或?npm-asset/PackageName?(NPM包)来对应库。创建一个资源包类并将你的应用或扩展要使用的JavaScript/CSS 文件列入到类中, 应设置 yii\web\AssetBundle::sourcePath 属性为@bower/PackageName?或?@npm/PackageName, 因为根据别名Composer会安装Bower或NPM包到对应的目录下。注意: 一些包会将它们分布式文件放到一个子目录中,对于这种情况,应指定子目录作为 yii\web\AssetBundle::sourcePath属性值,例如,yii\web\JqueryAsset使用?@bower/jquery/dist?而不是?@bower/jquery。使用资源包为使用资源包,在视图中调用yii\web\AssetBundle::register()方法先注册资源, 例如,在视图模板可使用如下代码注册资源包:use app\assets\AppAsset;AppAsset::register($this); // $this 代表视图对象如果在其他地方注册资源包,应提供视图对象,如在?小部件?类中注册资源包, 可以通过?$this->view?获取视图对象。当在视图中注册一个资源包时,在背后Yii会注册它所依赖的资源包,如果资源包是放在Web不可访问的目录下,会被发布到可访问的目录, 后续当视图渲染页面时,会生成这些注册包包含的CSS和JavaScript文件对应的<link>?和?<script>?标签, 这些标签的先后顺序取决于资源包的依赖关系以及在 yii\web\AssetBundle::css和yii\web\AssetBundle::js 的列出来的前后顺序。自定义资源包Yii通过名为?assetManager的应用组件实现[[yii\web\AssetManager] 来管理应用组件, 通过配置yii\web\AssetManager::bundles 属性,可以自定义资源包的行为, 例如,yii\web\JqueryAsset 资源包默认从jquery Bower包中使用jquery.js?文件, 为了提高可用性和性能,你可能需要从Google服务器上获取jquery文件,可以在应用配置中配置assetManager,如下所示:return [ // ... 'components' => [ 'assetManager' => [ 'bundles' => [ 'yii\web\JqueryAsset' => [ 'sourcePath' => null, // 一定不要发布该资源 'js' => [ '//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js', ] ], ], ], ],];可通过类似yii\web\AssetManager::bundles配置多个资源包,数组的键应为资源包的类名(最开头不要反斜杠), 数组的值为对应的配置数组.提示: 可以根据条件判断使用哪个资源,如下示例为如何在开发环境用jquery.js,否则用jquery.min.js:'yii\web\JqueryAsset' => [ 'js' => [ YII_ENV_DEV ? 'jquery.js' : 'jquery.min.js' ]],可以设置资源包的名称对应false来禁用想禁用的一个或多个资源包,当视图中注册一个禁用资源包, 视图不会包含任何该包的资源以及不会注册它所依赖的包,例如,为禁用yii\web\JqueryAsset,可以使用如下配置:return [ // ... 'components' => [ 'assetManager' => [ 'bundles' => [ 'yii\web\JqueryAsset' => false, ], ], ],];可设置yii\web\AssetManager::bundles为false禁用?所有?的资源包。资源部署有时你想"修复" 多个资源包中资源文件的错误/不兼容,例如包A使用1.11.1版本的jquery.min.js, 包B使用2.1.1版本的jquery.js,可自定义每个包来解决这个问题,更好的方式是使用资源部署特性来部署不正确的资源为想要的, 为此,配置yii\web\AssetManager::assetMap属性,如下所示:return [ // ... 'components' => [ 'assetManager' => [ 'assetMap' => [ 'jquery.js' => '//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js', ], ], ],];yii\web\AssetManager::assetMap的键为你想要修复的资源名,值为你想要使用的资源路径, 当视图注册资源包,在yii\web\AssetBundle::css 和 yii\web\AssetBundle::js 数组中每个相关资源文件会和该部署进行对比, 如果数组任何键对比为资源文件的最后文件名(如果有的话前缀为 yii\web\AssetBundle::sourcePath),对应的值为替换原来的资源。 例如,资源文件my/path/to/jquery.js?匹配键?jquery.js.注意: 只有相对相对路径指定的资源对应到资源部署,替换的资源路径可以为绝对路径,也可为和yii\web\AssetManager::basePath相关的路径。资源发布如前所述,如果资源包放在Web不能访问的目录,当视图注册资源时资源会被拷贝到一个Web可访问的目录中, 这个过程称为资源发布,yii\web\AssetManager会自动处理该过程。资源默认会发布到@webroot/assets目录,对应的URL为@web/assets, 可配置yii\web\AssetManager::basePath 和 yii\web\AssetManager::baseUrl 属性自定义发布位置。除了拷贝文件方式发布资源,如果操作系统和Web服务器允许可以使用符号链接,该功能可以通过设置 yii\web\AssetManager::linkAssets 为 true 来启用。return [ // ... 'components' => [ 'assetManager' => [ 'linkAssets' => true, ], ],];使用以上配置,资源管理器会创建一个符号链接到要发布的资源包源路径,这比拷贝文件方式快并能确保发布的资源一直为最新的。常用

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


前端资源(Assets)