关于自定义module assets目录发布的一些疑惑 [ 2.0 版本 ]
我在module.php里定义了一个返回asset路径的:
public function getAssetsUrl()
{
if ($this->_assetsUrl === null)
$this->_assetsUrl = Yii::$app->getAssetManager()->publish(
Yii::getAlias('@admin.assets') );
return $this->_assetsUrl;
}
方法用到了Yii的publish方法,看官方的文档这个方法会对比素材的修改时间,如果有修改,则会拷贝的web目录下的assets文件下,我有几点疑问,还望了解的大神解惑:
1、每次调用assetsUrl属性,都会执行publish方法吗?这样不是会产生硬盘IO吗?这在生产环境很影响性能吧?
2、我发现必须得在web.php(配置文件)里添加
$config['components']['assetManager']['forceCopy'] = true;
module下的素材才会拷贝到web目录下,官方不是说会自动判断吗?
3、admin module下的assets有可能很大,比如用一些收费的后台模板,整个素材都有100多m,每次都要拷贝,效率得多底下啊?
另外一个疑问是在视图里面单独引用css和js文件的问题:
4、我发现js文件必须得这样引用:
<?php $this->registerJsFile(Yii::$app->getModule('admin')->assetsUrl[1].'/js/index.js') ?>
直接写script标签是不行的,但是css又可以直接写link标签引用,为何呢?
刚刚接触Yii框架,可能很多知识点还未学习,请大牛轻拍,同时给些指导,先谢过了!
共 2 个回答
-
dingjj2010 回答于 2016-09-02 09:19 举报
在asset文件上设置sourcePath,框架会为没有发布的资源,自动发布。已发布的不变。
可以参照权威教程:http://www.yiichina.com/doc/guide/2.0/structure-assets 中关于 sourcePath basePath baseUrl三者关系的设置 -
38442
注册时间:2016-10-31
最后登录:1970-01-01
在线时长:0小时0分
最后登录:1970-01-01
在线时长:0小时0分
- 粉丝0
- 金钱0
- 威望0
- 积分0