2

プロジェクトでrequirejsを使い始めたばかりで、とても気に入っています。現在、私たちはサイトを実行する多くの jQuery プラグインを管理するためにそれを使用しているだけなので、その可能性の表面をかろうじて引っ掻いているだけです…しかし、時間の制約のために、これは待たなければなりません.

オプティマイザーを思うように動作させるのに問題があります。これが可能かどうか教えていただけないでしょうか。私のディレクトリ構造:

> /common/
> /common/*.js - common plugins used on most pages on the site
> /infrequent/
> /infrequent/infrequentModule.js
> /infrequent/ckeditor
> /infrequent/ckeditor/1000s.js
> /require.js
> /jquery.js
> /main.js - this file contains all scripts in common. It looks at the page and call the necessary plugins.

最適化/ビルドの希望:

  • main.js には、すべての一般的なスクリプトが含まれます。ほとんどのページでは、このスクリプトだけがロードされます (require.js を除く)。
  • main.js はページを見て、まれにプラグイン/モジュールが必要であることがわかった場合、その非同期をロードします。そのため、あまり使用しないページでは、require.js、main.js、および infrequentModule.js をロードすることがあります。

ビルドスクリプトでさまざまな方法を試して、ファイルを除外およびインクルードして目的の結果を取得しましたが、役に立ちませんでした。これが実際に可能であるかどうか、誰かがアイデアを持っているか知っていますか?

4

1 に答える 1

3

OK、require.jsのGoogleグループでいくつかの素晴らしい回答を得ました - http://groups.google.com/group/requirejs/browse_thread/thread/359b02473f4e707

以下は、私が与えられた有用な回答であり、他の誰かを助けることができることを願っています…</p>

こんにちは、私は現在、私のプロジェクトの 1 つでこれを行っています。これが私の build.js です。

paths: { 
                //load libs from cdn 
                "jqueryUI": "jqueryUI", //temp static file for build 
                "swfobject": "swfobject", //temp static file for build 
                "Templates": "../Templates/Settings" 
        }, 
modules: [{ 
            name: "appName", 
                        excludeShallow: ["jqueryUI", "swfobject", "Modules/ 
module.preferences"] 
        } 

次に、モジュールの 1 つに、必要なときに実行する Modules/ module.preferences の require 呼び出しがあります。

function loadPreferences(){ 
 require(["Modules/module.preferences"],function(){ 
                     //Execute some init code after the module has 
loaded 
         }) 
 } 
} 

これにより、ページの読み込み時にrequireとmainが読み込まれた場所で説明したことが達成され、必要なときにmodule.preferencesが非同期に読み込まれます。お役に立てば幸いです、ジェフ。

于 2011-03-22T11:45:06.923 に答える