linuor 2012-09-26 09:46:57 2682次浏览 1条回复 0 0 0

就web开发而言,最好是将syle, behavior和structure相分离。其中,style就是css,behavior就是javasrcipt,而structure就是各种<div>了。

style的分离由于css的出现,已经很容易,也达成了业界的共识了。就是把style放在<head>里面去。甚至把所有style以CSS文件的形式存在于html文件之外。yii在这点上完全没有问题。同理,javascript也可以用类似的手段达到。分离之后的一个表现,就是在structure里面,没有任何的sytle,也没有任何的behavior。

那么,yii中是如何实现javascript codestructure的分离的呢?要知道,如果使用诸如:CHtml::ajaxLink之类的,yii会直接在<a>上面生成javascript片断的,这是其一。其二,如果把javascript code也放到了<head>里面。那么,就相当于放到了layout文件里面,而layout是多个view文件共享的。javascript代码则可能是针对某一个特定的view文件,如上面的CHtml::ajaxLink不一定所有的view都需要。因此,把javascript放到layout里面也是不合适的。

那么退一步,为了实现javascriptstructure的分离,我把javascript放到了layout里面去,并让layout只用于特定的view,相当于降低了layout的适用范围,如此,可能出现的情况就是一个view对应一个layout了。那么,yii使用layout的初衷,将无从谈起。

那么,你们又是如何实现behavior (javascript)structure的相分离的呢? 请教。

  • 回复于 2012-09-26 09:46 举报

    有在Controller里引入js的方法的。

    Yii::app()->clientScript->registerCssFile('style.css');
    Yii::app()->clientScript->registerScriptFile('a.js');
    

    这样就会把css js文件写入到head里面。

您需要登录后才可以回复。登录 | 立即注册