您好我想知道按照文档中描述的流程注册Asset Bundle的优势 处理一个 在AppAsset.php中
public $js = [
'js/myjsfile.js'
];
然后在视图文件中 添加名称空间,如
namespace app\assets;
然后添加使用语句,如
use app\assets\AppAsset;
AppAsset::register($this);
如果我使用的话,而不是做这一切 处理二
$this->registerJs('js/myjsfile.js', $this::POS_READY);
它工作正常。 那么我为什么要使用 Process One 。
感谢。
答案 0 :(得分:10)
Asset Bundles比正常注册有一些优势。除了@deacs在他/她的答案中所说的还有其他人:
答案 1 :(得分:8)
使用资产包的主要原因之一是您的资产'路径永远是正确的。考虑:
$this->registerJsFile('js/myjsfile.js', ['position'=>$this::POS_READY]);
将生成如下内容:
<script src="js/myjsfile.js"></script>
适用于未启用urlManager的网址,例如http://localhost/yiiproject/index.php?r=user/update&id=8
,因为您的浏览器会在/yiiproject/js/myjsfile.js
但是如果您启用了urlManager,您的网址将显示为http://localhost/yiiproject/user/update/8
,这意味着您的浏览器会在/yiiproject/user/update/8/js/myjsfile.js
查找您的js文件。
您可以使用以下方法解决此问题:
$this->registerJsFile(Yii::$app->request->baseUrl.'/js/myjsfile.js', ['position'=>$this::POS_READY]);
但是Asset Bundle基本上可以帮到你。
答案 2 :(得分:0)
使用资产套装,您还可以从“供应商”获取最新版本。文件夹,所以如果你需要更新一些lib,你不需要手动执行此操作,因为composer已经这样做了。