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

前端资源(Assets)

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

'C' => ['css' => [], 'js' => [], 'depends' => ['all']], 'D' => ['css' => [], 'js' => [], 'depends' => ['all']], ], ], ],];如自定义资源包?小节中所述,如上配置改变每个包的默认行为, 特别是包A、B、C和D不再包含任何资源文件,都依赖包含合并后的all-xyz.css?和?all-xyz.js文件的包all, 因此,对于页面X会包含这两个合并后的文件而不是包A、B、C的原始文件,对于页面Y也是如此。最后有个方法更好地处理上述方式,除了直接修改应用配置文件,可将自定义包数组放到一个文件,在应用配置中根据条件包含该文件,例如:return [ 'components' => [ 'assetManager' => [ 'bundles' => require(__DIR__ . '/' . (YII_ENV_PROD ? 'assets-prod.php' : 'assets-dev.php')), ], ],];如上所示,在产品上线模式下资源包数组存储在assets-prod.php文件中,不是产品上线模式存储在assets-dev.php文件中。使用?asset?命令Yii提供一个名为asset控制台命令来使上述操作自动处理。为使用该命令,应先创建一个配置文件设置哪些资源包要合并以及分组方式,可使用asset/template?子命令来生成一个模板, 然后修改模板成你想要的。yii asset/template assets.php该命令在当前目录下生成一个名为assets.php的文件,文件的内容类似如下:<?php/** * 为控制台命令"yii asset"使用的配置文件 * 注意在控制台环境下,一些路径别名如 '@webroot' 和 '@web' 不会存在 * 请定义不存在的路径别名 */return [ // 为JavaScript文件压缩修改 command/callback 'jsCompressor' => 'java -jar compiler.jar --js {from} --js_output_file {to}', // 为CSS文件压缩修改command/callback 'cssCompressor' => 'java -jar yuicompressor.jar --type css {from} -o {to}', // 要压缩的资源包列表 'bundles' => [ // 'yii\web\YiiAsset', // 'yii\web\JqueryAsset', ], // 资源包压缩后的输出 'targets' => [ 'all' => [ 'class' => 'yii\web\AssetBundle', 'basePath' => '@webroot/assets', 'baseUrl' => '@web/assets', 'js' => 'js/all-{hash}.js', 'css' => 'css/all-{hash}.css', ], ], // 资源管理器配置: 'assetManager' => [ ],];应修改该文件的bundles的选项指定哪些包你想要合并,在targets选项中应指定这些包如何分组,如前述的可以指定一个或多个组。注意: 由于在控制台应用别名?@webroot?and?@web?不可用,应在配置中明确指定它们。JavaScript文件会被合并压缩后写入到js/all-{hash}.js文件,其中 {hash} 会被结果文件的哈希值替换。jsCompressor?和?cssCompressor?选项指定控制台命令或PHP回调函数来执行JavaScript和CSS合并和压缩, Yii默认使用Closure Compiler来合并JavaScript文件, 使用YUI Compressor来合并CSS文件, 你应手工安装这些工具或修改选项使用你喜欢的工具。根据配置文件,可执行asset?命令来合并和压缩资源文件并生成一个新的资源包配置文件assets-prod.php:yii asset assets.php config/assets-prod.php生成的配置文件可以在应用配置中包含,如最后一小节所描述的。补充: 使用asset?命令并不是唯一一种自动合并和压缩过程的方法,可使用优秀的工具grunt来完成这个过程。

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


前端资源(Assets)