dojo命名类-何时使用它们以及如何创建它们?

dojo命名类-何时使用它们以及如何创建它们?,dojo,Dojo,我正在阅读dojo classy,这里有一个创建命名类的示例: // Create a new class named "mynamespace.MyClass" declare("mynamespace.MyClass", null, { // Custom properties and methods here }); 问题:什么时候应该使用命名类,什么时候应该使用匿名类 名为mynamespace.MyClass的类现在在应用程序中全局可用 问题:如何在应用程序中创建类的实例

我正在阅读dojo classy,这里有一个创建命名类的示例:

// Create a new class named "mynamespace.MyClass"
declare("mynamespace.MyClass", null, {

    // Custom properties and methods here

});
问题:什么时候应该使用命名类,什么时候应该使用匿名类

名为mynamespace.MyClass的类现在在应用程序中全局可用

问题:如何在应用程序中创建类的实例

// First make sure to import/alias the declare module in your application module that will be declaring the new class:
//    define([dojo/_base/declare],function(declare){}){

// From 1.8+, you don't need the class name parameter.  
// Supplying the name provides no additional value.
declare(null, {
    // Custom properties and methods here
});
仅当命名类将与一起使用时,才应创建命名类 Dojo解析器。所有其他类都应该省略className参数


问:这意味着什么?

我什么时候应该使用命名类,什么时候应该使用匿名类

在Dojo 1.8之前,您需要使用第一个参数来提供一个类名,该类名用于定义命名空间中的类以及Dojo解析器用于dojoType属性中的声明性标记

如何在应用程序中创建类的实例

// First make sure to import/alias the declare module in your application module that will be declaring the new class:
//    define([dojo/_base/declare],function(declare){}){

// From 1.8+, you don't need the class name parameter.  
// Supplying the name provides no additional value.
declare(null, {
    // Custom properties and methods here
});
包含更多信息的dojo declare官方参考指南页面可在以下位置找到:

这是什么意思?
它不再与解析器相关。过去,dojo解析器在解析html片段以将数据dojo type=与这些类名匹配时使用了class name参数。现在,您只需输入模块的AMD模块标识符,例如dijit/按钮,该模块返回小部件的构造函数,解析器可以自动加载和实例化小部件,而无需使用类名

有趣。我记得读过一篇文章,在使用AMD加载程序时,您不应该再使用命名类。dojo解析器已经使用这些类名来识别小部件,但是由于dojo 1.8,您还可以直接使用模块名my/form/InputWidget作为数据dojo类型。因此,我认为命名类不再有任何用处。