dojo(六):ステートメント文法とdojo/parser

3911 ワード

1、概要
Dojoを使うには二つの主要な方法があります.それぞれプログラミングと宣言式です.プログラムはJavaScriptを使ってオブジェクトを実例化し、すべてのコードはJavaScriptに符号化されます.宣言式ではドジョジョ/パーを使ってDOMを読み、特殊な属性(後にはdata-dojo-typeと知っています.)で飾られたノードとコントロールの挙動を拡張する特定のラベルを解析します.
この二つの方法は自分の長所と短所があります.この二つの方法を同時に使うことができます.本文は主に声明式の文法を説明し、声明式の文法を使って、次のいくつかの点を考慮する必要があります.
  • 宣言式文法は非常に簡単であり、より深いJavaScriptは必要ない.JavaScriptは実現できます.ステートメント文法はほとんど実現できますが、ステートメント文法はその制約があります.
  • 宣言式文法の本質(類似)タグのため、彼の性能はプログラミング式より優れています.DOjo/parserを使用してDOMを解析し、処理が必要なノードを検索する必要があるからです.
  • 2、具体化対象
    ステートメント文法で最も一般的な方法は、実装コンポーネントです.実現方法は:特殊な属性(data-dojo-type)をhtmlタグに追加し、dojo/parserを使って文書と実用化コンポーネントを読み取ります.例を見ます
    上記の例では、data-dojo-typeを使用してMID(ここではDojo Button)を指定しましたが、dojo/parserがノードのDOM内の位置にdijit/form/Buttonオブジェクトを実装するように指示します.
    私たちはこのコンポーネントの参照を取得する必要があるときに有用なid属性を追加していることに注意することができます.Dijitの基本的なコンポーネントは、実装時に、彼らを格納するノードを検索し、ID属性があれば、dijit/registryにID値を登録して、将来的にはidによってコンポーネントを参照することができるようにする.
    私たちは上にラベルを置いただけです.これからはdojo/parserをアクティブにする必要があります.AMDを導入する前のバージョンでは、Dojo構成data-dojo-configのオプションparse Onload:trueを使ってdojo/parserをアクティブにしてもいいです.このような使い方は、特別な場合には予想外の結果をもたらす可能性がありますので、コードに表示されるdojo/parserの活性化を推奨します.
    
    
        require(["dojo/parser", "dojo/ready", "dijit/form/Button"],
        function(parser, ready){
            ready(function(){
                parser.parse();
            });
        });
    
    3、オブジェクトの配置
    dojo/parserを使った実用化対象は強力ですが、コンポーネントを設定できないと意味がありません.したがって、実装時に構成情報を入力できる仕組みが必要である.
    Dojoの初期バージョンでは、属性が機能しなくてもタグに属性を追加する方法を使用します.HTML 5は、data-先頭の属性をカスタマイズし、文書の厳密な検証を可能にする方法を導入しています.したがって、特別なdata-dojo-props属性を使用して、実装時のコンストラクタの構成を伝える必要があります.たとえば:
    4、非コンポーネントオブジェクトの実装
    dojo/parserは、一般に、ラベル(例えば、Dijitコンポーネント)の可視化要素を実装するために使用され、非可視オブジェクトを実装するためにも使用され得る.dojo/parser解析構成情報は、最初のパラメータとして、nodeノードの参照を第二のパラメータとします.これはドジョウに基づいていますベース/declareの非可視要素も可能です.
    問題があるのは、従来のオブジェクトはDijitコンポーネントのように登録されていません(Dijitコンポーネントは、実装時にはキャリア要素のID値に基づいてdijit/registryに登録され、将来的にコンポーネントの参照を得ることができるようになります)ので、実装後にこれらのオブジェクトに参照できるように、グローバル領域で参照を作成する必要があります.dojo/parseはdata-dojo-i属性を検索することによってこの仕事を完成します.