6

しばらく前に、Dojo と Dojo テーマを使用する際の「スタイル設定されていないコンテンツのフラッシュ」の解決策を調べました。ビルドを作成してすべてを結合することを誰かが提案しました。これにより、ロード/解析時間が短縮され、プリローダー オーバーレイなどを使用する必要がなくなります。

しかし、Dojo には、その機能の多く、特にこれに関する直接的な「現実世界」の使用例とチュートリアルが大幅に不足しているようです。多くのリソースでは、ビルドのセットアップ方法は説明されていますが、実装方法は説明されていません。

「pageinit.js」にこれがあるとしましょう:

require([
    'dojo/parser', 
    'dojo/dom',
    'dojo/dom-class',
    //etc...

    'dijit/form/ValidationTextBox', 
    'dijit/form/CheckBox',
    // etc...

    // Dom Ready call
    'dojo/domReady!']
    function(
        Parser, 
        Dom,
        Class,
        // etc...){
    // do stuff with parser, dijits, so on.
    }
)

簡潔にするために一部の require 呼び出しは削除されていますが、requiredomstyleclassesdijitsなどはいくつかあります。

Dojo Web Builderを使用して、使用しているモジュールを選択して実行しました。新しいファイルdojo.jscustom_layer.js.

だから私の質問は、「非ビルド」バージョンの代わりに、これらの新しい結合され縮小されたファイルをどのように使用するのですか? 私は何をしrequireますか?それとも私ですか?

混乱している...

4

2 に答える 2

8

まず、AMD(require/define) API がどのように機能するかを理解しましょう。

require([
  'dojo/parser', 
  'dojo/dom',
  'dojo/dom-class'
], function(parser, dom, domClass){
});

これは require 関数を呼び出し、いくつかの作業を行うために 3 つのモジュールが必要であることを指定します。require は各モジュールを取得します。If は、モジュールがロードされているかどうかを判断します。そうでない場合は、非同期にファイルを取得し、モジュールを JavaScript ランタイムにロードします。require は、必要なモジュールをすべて取得すると、コールバック (関数) を実行し、モジュールを引数として関数に渡します。

次に、ビルドを理解しましょう。Dojo ビルドは、まさにあなたが説明したことを行います。個々のファイルの束を 1 つのファイルに圧縮します。これにより、ページの読み込みが速くなり、説明した「フラッシュ」が防止されます。

最後に、すべてをまとめると、custom_layer.jsファイルと一緒にファイルを含める必要がありdojo.jsます。

<script type="text/javascript" src="path/to/dojo/dojo.js" />
<script type="text/javascript" src="path/to/custom_layer.js" />

Web ブラウザはこれら 2 つのファイルをロードし、コードを評価します。各モジュールを独自のファイルに遅延ロードする代わりに、モジュールはcustom_layer.js.

したがって、最後の質問に対する答えは、使用しているコードの特定のバージョン (ソース ビルドとカスタム ビルド) に基づいて、コードを変更してはならないということです。AMD API を使用すると、正常に動作するはずです。

于 2012-10-16T20:22:36.653 に答える
0

それがベスト プラクティスかどうかはわかりませんが、私が最初に始めたとき (数日前) にスタイル設定されていないコンテンツのフラッシュを見ていました<body>。何かを表示する準備ができたら、Parse はそれを再表示します。

<body style="visibility: hidden;">
于 2013-07-30T18:40:01.783 に答える