1  正常的开发,都是把asset(js,css,image)文件放到一个可以访问的目录

2  Yii中使用CAssetManger和CClientScript两个类来对asset进行管理。通过publish将assets发布到assets目录,并建立一个随机名称的文件夹(文件夹名应该就创建规则,这里就简称随机)。

那么我们就有思考,到底用那种方式?

在论坛中,Yii的创建者qiang给出了答案。我简单整理如下:

assets(js, css, 图像等)一般有以下几种发布方式,实践中需要灵活运用:

1. 作为单独的文件直接存放在web目录下(例如把pager.css单独放到css目录下)。优点:高效,有相对的独立性。缺点:如果项目很大,资源文件可能很多,其管理和使用都将比较复杂。重用也相对复杂,重用时需要特别注意资源文件的存放位置和对应的URL。

2. 和其它代码片段一起存放在web目录下的文件里(例如把pager的CSS放到一个main.css里,和其它CSS在一起)。优点:高效。缺点:如果项目很大,资源文件可能很复杂,很难维护。另外重用也更复杂,因为需要提取对应的资源代码片段。

3. 和php代码放一起,在调用该php代码时通过assetManager发布(复制)到web目录下。优点:易重用(例如你使用yii自带的CLinkPager,你不需要考虑如何放置它的js/css)。缺点:效率不高。

一般来说,如果你的代码不打算在其它项目里重用,你应该考虑1或2。方法2主要适用于小项目。方法3主要用于你希望重用的部件,例如google map等。

另外,前后端的分离不是绝对的。在需要大量使用ajax的情况下,开发PHP和对应的js代码往往是同一个人。如果你只着眼于一个部件,那么它的前后端还是分开的。