Der Klassenname (erstes Argument von declare()
) braucht nicht den Pfad zur Datei darzustellen. Eigentlich ist es optional. Der optionale Name des Konstruktors (lose, "class"
), der in der Eigenschaft "declaredClass"
im erstellten Prototyp gespeichert ist. Es wird als globaler Name für einen erstellten Konstruktor verwendet.
Zum Beispiel:
define(["dojo/_base/declare"], function(declare){
return declare("my.firstWidget", {
constructor: function(){
console.log(this.declaredClass)
}
});
});
Dies wird einen globalen Konstruktor, my.firstWidget
, dass es wie folgt verwenden können:
require(["dojo/dom", "myApp/myWidget"], function(dom){
var my = new my.firstWidget(); //note this line
my.placeAt(dom.byId('someID'));
});
Aber dies ist eine schlechte Gebrauch davon, haben wir Dojo und wir müssen es Dojo Weg, das war nur ein Beispiel.
Aber wir tun können, es in einer deklarativen Weise verwenden, wie folgt aus:
<div data-dojo-type="my.firstWidget"></div>
Und das ist in Ordnung.
Tatsächlich wird das erste Argument von declare()
in der Neuentwicklung weggelassen. Dadurch wird sichergestellt, dass der globale Namespace nicht durch Klassen verschmutzt wird und die Wahrscheinlichkeit von Namenskonflikten reduziert wird.
Der AMD Module ID (MID)
wird der allgemein als Klassenname bezeichnete Name. Dieser Name bezieht sich auf den Pfad zur Datei. Zum Beispiel myApp/myWidget.js
würde die MID myApp/myWidget
machen. Und das MID
ist das, was wir verwenden können, wenn wir die class name
weggelassen und wollen die deklarative Weise
<div data-dojo-type="myApp/myWidget"></div>
Dies funktioniert auch verwenden, und das funktioniert auch, wenn wir die class name
-declare()
gab
Werfen Sie einen Blick here Es gibt viele Beispiele und Informationen über declare()
im Dojo.