我找不到很多信息,它的AssetManager管理JS和CSS文件。我的问题是是什么的点使用AssetManager?我不确定什么样的价值,它增加了我的发展过程,事实上,这似乎是它的复杂性,我的代码...每次我改变我的脚本或css代码,我要进去和删除我的资产文件夹,以确保我们最新版本。

似乎这是很简单只要把所有的Javascript下的文件/安装/js/和只使用标记,以加载文件,而不是通过麻烦的AssetManager.另外,它的registerCoreScript功能总是地方脚本,标记内部的头的标签,而不是将它们放在底部的代码,接近关闭体标签的建议,通过YSlow.

我认为必须有一个差距在我理解它是AssetManager.任何人有任何想法为什么使用AssetManager是更好的比勤编码的剧本标签内PHP代码?我有点糊涂...

谢谢!

有帮助吗?

解决方案

我敢肯定有人能更好地回答这个比我自己,但基本上它是使您的来源 JS和CSS文件可以留在你的保护文件夹中。

这是一个更安全一点的一两件事,但对我来说主要的好处是的您可以压缩和缩小,并以其他方式处理自己的资产的与资产发布系统,这使得它更容易在CDN主机您的JS和CSS 的,因为它是从你的代码是分开的。

此外,这里的羌族的官方回应关于这个(是谁写的Yii的家伙)。

其他提示

的主要好处在于它的资产管理是 它可以让你结构组件,在一个自足的方式.

一个故事中的一件

考虑一个组成,是一个用户界面部件。让我们假设的分配包括一对夫妻的资产,随着分执行,例如这些文件:

SuperWidget.php
superwidget.css
superwidget.js
image_for_css.png

考虑如何将纳入这个小部件进入你的应用程序,如果该资产管理并不存在。典型的步骤可能包括:

  1. 复制 SuperWidget.php 里面的某个地方的 protected/ 目录
  2. 复制 superwidget.js 你的 js/ 目录
  3. 复制 superwidget.css 你的 css/ 目录
  4. 复制 image_for_css.png 你的 images/ 目录中或许也在里面 css/ 为帮助减少的相对路径依赖关系

然后在运行时SuperWidget会发适当的标签,以包括CSS和JavaScript; 要做到这一点,它将需要知道到底你有放置这些资产.换句话说: 一些选择有关的安装可能是任意的,但后来他们是在石头除非你去和编辑源.

是件可重复使用的?

如果这个小部件是高度定制的,并意味着不可分割的一部分你的应用程序,那么这种方法会工作的现有不会从需要有一个资产经理。但是,如果这是一个广泛的有用成分,你想要分发的?

问题开始引起的。

第一,所有的部署计划,我们已经审查了需要用户的部件,以不同的复制文件,进入不同的目录中,复杂的安装过程和增加出错的机会。

但是更大的问题是,你的部署方案的可能冲突与任何其他组独立开发。如果其他人的决定有一个 superwidget.js 文件呢?

如果安装说明这两个组成部分冲突后显然一个人不能够安装的目的,然后你再改变的一些细节和攻击的源代码的分量以适应这些变化。如果你以后升级到新版本的成分将被迫仔细帐户自定义,制作一个"复制,复盖"升级不可能的。

所有这一切都是真的不是很漂亮,虽然这可不太可能发生在实践中肯定感觉不对。

资产管理,这样做

这里是哪里的资产管理。让我们假设你决定要结构组件是这样的:

superwidget/
  SuperWidget.php
  assets/
    css/
      superwidget.css
    js/
      superwidget.js
    images/
      image_for_css.png

你可以直接副本这里面的某个地方你 protected/ 目录无论什么其他的成分你已经安装;最糟糕的事情可能发生在这里,你会必须重新命名 superwidget/ 到别的东西如果有冲突。

使用的资产管理人, SuperWidget.php 出版 整个 superwidget/assets/ 目录,复制的结束,在如 assets/1337c0de/ 哪里 assets/ 是你的应用程序的基本资源的路径, 1337c0de/ 是随机的散列创造的许和保证没有冲突与任何其它公布资产。

这意味着资产SuperWidget 不可能的冲突与任何其他的成分, 使SuperWidget真正的可重复使用。和因为该目录的内部结构 1337c0de/ 将以相同于分配CSS可以参考图像的使用相对路径 ../images/ 而不需要参考价值的随机的散列的(这是唯一知道后出版)。

什么样的资产管理员是不是

  • 这不是一种方法来增加安全性。你的分量源将里面的某个地方 protected/ 无论如何(因此没有改善那里),并且资产要被网络访问无论在哪里,他们最终被复制(不安全对于他们,无论什么).
  • 这不是一种无所不包的解决方案,用于处理资产(例如缩小CSS)。虽然这是可以安装一个定制的资产管理,做到这一点,不要忘记,资产包括可再用的部件将一个小型的少数民族在所有的"基本应用程序"资产;如果你想要缩小,你必须还进程的一切和资产经理将不会帮助你。

TL博士

资产管理可以让你做的部件,很容易分发和可以包括在应用程序没有恐惧的冲突创造与其他组件。

另一个振作,我喜欢对资产管理人,是它允许您更新资产的文件,而无需告诉你的用户清除缓存。

的http:// WWW .yiiframework.com /维基/ 311 / assetmanager出清浏览器-S-缓存现场更新/

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top