1

Yiiの多くのモジュール、拡張機能、またはその他のものは、アセットマネージャーからjQueryを読み込もうとします。これで問題ありません。インクルードのハードコーディングをやめ、代わりに「registerCoreScript」を採用しています。

唯一の問題は、HEADの下部近くにロードされているように見えることです。jQueryに依存するスクリプトやコードは他にもたくさんあり、それらはその前に読み込まれます。jQueryが最初に読み込まれることを確認するにはどうすればよいですか?

真実は、それがデフォルトの動作ではないことを私は理解していません。jQueryは何にも依存していませんが、多くのスクリプトがそれに依存しています...

4

3 に答える 3

4

packages CClientScriptコンポーネントのプロパティを使用して、次のように指定できdependsます。

Yii::app()->clientScript->addPackage('give-some-name-to-script', array(
    'baseUrl'=>'base URL for the script files', // or basePath
    'js'=>array(list of js files relative to basePath/baseUrl),
    'depends'=>array('jquery')
));

または、config/main.php構成でこれを行います。

'clientScript'=>array(
    'packages'=>array(
        'give-this-package-name'=>array(
            'basePath'=>'alias of the directory containing the script files',
            'js'=>array('first.js','second.js'),
            'depends'=>array('jquery')
    ),
)

そして、使用しますregisterPackage

Yii::app()->clientScript->registerPackage('your-package-name');

これができる唯一の方法だと思います。もちろん、これには、JavaScriptをパッケージにグループ化して名前を付けるか、各スクリプトをパッケージとして宣言する必要があります。


関連する回答:これこれ

于 2012-11-08T11:08:32.600 に答える
0
  1. <script>HTMLでハードコードされたタグを使用しないでください
  2. Yii::app()->clientScript->registerCoreScript('jquery');関数の先頭に置きますController::init()
  3. を使用して独自のスクリプトを含めるYii::app()->clientScript->registerScriptFile('....');
于 2012-11-08T13:20:17.283 に答える
0

コメント内のハードコードされたスクリプトへの参照が、のレイアウトファイルにタグがあることを意味する場合<script><style>はい<head>、Yiiメソッドのいずれかを使用してスクリプトを登録すると、Yiiメソッドがjavascriptを追加するため、そのスクリプトが最後になります。<head>(確認したい場合はソースを読んでください)の既存のコンテンツに。

理想的には、JavaScriptを別のファイルに外部化し、 registerScriptFile()を使用してファイルをロードする必要があります。これにより、物事がよりクリーンになり、保守が容易になります。

または、 registerScript()を使用することもできますが、読み取り/保守が難しい場合があります。

これらのメソッドを使用する場合、アイテムはメソッドが呼び出された順序で追加されます。

于 2012-11-08T17:10:08.460 に答える