Php 什么';这就是Yii&x27;谁是资产管理人?
我找不到关于Yii的AssetManager用于管理JS和CSS文件的太多信息。我这里的问题是,使用AssetManager有什么意义?我不确定它为我的开发过程增加了什么价值,事实上,它似乎使我的代码复杂化了。。。每次我更改脚本或css代码时,我都必须进入并删除我的资产文件夹,以确保我拥有最新版本 似乎将所有Javascript文件放在/webroot/js/下并使用标记加载文件要简单得多,而不用经历AssetManager的麻烦。另外,Yii的registerCoreScript函数总是将脚本标记放在header标记内,而不是像YSlow建议的那样,将它们放在代码的底部,靠近结束体标记 我想我对易易的资产管理人的理解一定有差距。有人知道为什么使用AssetManager比在PHP代码中硬编码脚本标记更好吗?我有点困惑Php 什么';这就是Yii&x27;谁是资产管理人?,php,yii,Php,Yii,我找不到关于Yii的AssetManager用于管理JS和CSS文件的太多信息。我这里的问题是,使用AssetManager有什么意义?我不确定它为我的开发过程增加了什么价值,事实上,它似乎使我的代码复杂化了。。。每次我更改脚本或css代码时,我都必须进入并删除我的资产文件夹,以确保我拥有最新版本 似乎将所有Javascript文件放在/webroot/js/下并使用标记加载文件要简单得多,而不用经历AssetManager的麻烦。另外,Yii的registerCoreScript函数总是将脚本
谢谢 我相信有人能比我更好地回答这个问题,但基本上,这是为了让您的源代码JS和CSS文件可以保留在受保护的文件夹中 首先,这有点安全,但对我来说主要的好处是,您可以使用资产发布系统压缩、缩小或以其他方式处理您的资产,并且它使您更容易在CDN上托管JS和CSS,因为它与您的代码库是分开的
此外,这里还有一个(写Yii的人)关于这一点。Yii的资产管理器的主要好处是它允许您以一种自包含的方式构建组件 小部件的故事 考虑一个作为UI小部件的组件。让我们假设发行版包括两个资产以及组件实现,例如以下文件:
SuperWidget.php
superwidget.css
superwidget.js
image_for_css.png
考虑如果资产管理器不存在,您将如何将此小部件合并到应用程序中。典型步骤可能包括:
SuperWidget.php
复制到protected/
目录中的某个地方superwidget.js
复制到您的js/
目录中superwidget.css
复制到您的css/
目录中image\u for_css.png
复制到images/
目录中,或者也可以复制到css/
中,以帮助减少相对路径依赖关系superwidget.js
文件怎么办
如果这两个组件的安装说明发生冲突,那么显然其中一个组件无法按预期安装,然后您需要更改一些细节并修改组件的源代码以适应这些更改。如果您以后升级到该组件的较新版本,您将被迫仔细考虑您的自定义设置,从而无法进行“复制/覆盖”升级
所有这些都不太好,虽然在实践中不太可能发生,但感觉肯定不对
资产经理,就这样吧
这就是资产经理的作用。假设您决定这样构造组件:
superwidget/
SuperWidget.php
assets/
css/
superwidget.css
js/
superwidget.js
images/
image_for_css.png
您可以直接将其复制到受保护的/
目录中的某个位置,而不管您安装了其他什么组件;这里可能发生的最糟糕的事情是,如果发生冲突,您必须将superwidget/
重命名为其他名称
使用资产管理器,SuperWidget.php
整个SuperWidget/assets/
目录,副本的结尾是,例如,assets/1337c0de/
,其中assets/
是应用程序的基本资产路径,1337c0de/
是Yii创建的随机散列,保证不会与任何其他发布的资产冲突
这意味着SuperWidget的资产不可能与任何其他组件的资产冲突,从而使SuperWidget真正可重用。由于1337c0de/
中的目录结构与您的发行版中的目录结构相同,CSS可以使用相对路径。/images/
引用图像,而无需引用随机散列的值(只有在发布后才知道)
资产管理人不是什么
- 这不是增加安全性的方法。不管怎样,您的组件源代码将在
中的某个地方(因此没有任何改进),并且资产需要可以通过web访问,无论它们最终被复制到哪里(无论发生什么情况,它们都没有安全性)受保护的/
- 它不是处理您的资产(例如缩小CSS)的全面解决方案。虽然可以安装一个定制的资产管理器来实现这一点,但不要忘记,可重用组件中包含的资产在所有“基本应用程序”资产中只占少数;如果你想全面缩小规模,你还必须处理其他所有事情和屁股