使用 dojo 的 declare 函数:第一个参数是什么?
Using dojo's declare function: what is the first parameter?
在 dojo 中使用 declare
时,我有时会看到两种略有不同的方法:
方式一是
define(["dojo/_base/declare"], function(declare){
return declare(null, {
constructor: function(){
}
});
对比
define(["dojo/_base/declare"], function(declare){
return declare("some/string/with/slashes/parameter",null, {
constructor: function(){
}
});
想知道第二版的"some/string/with/slashes/parameter"
是什么原因?
模块/"dojo class" 是否需要为自己命名,或者命名并不总是由其文件名暗示?
第一个声明将创建一个匿名 class(仅在其范围内可用)因此要访问最后一个,您应该在 dojoConfig 全局变量中访问它或它的包,
对于最后的第二个声明,它是在全局范围(应用程序范围)中创建的,因此可以使用其声明的 class 名称 some.string.with.slashes.parameter
来实例化或使用它(建议使用点insted of slash) 定义一般名称 space conataing this class + class name.
不是在道场里 documentation :
Named classes should only be created if they will be used with the
Dojo parser. All other classes should omit the className parameter.
这意味着仅将第二个声明用于小部件或 class 与 dojo/parser
一起使用,例如创建 Button 的自定义声明(ovveride 或 extend )...
在 dojo 中使用 declare
时,我有时会看到两种略有不同的方法:
方式一是
define(["dojo/_base/declare"], function(declare){
return declare(null, {
constructor: function(){
}
});
对比
define(["dojo/_base/declare"], function(declare){
return declare("some/string/with/slashes/parameter",null, {
constructor: function(){
}
});
想知道第二版的"some/string/with/slashes/parameter"
是什么原因?
模块/"dojo class" 是否需要为自己命名,或者命名并不总是由其文件名暗示?
第一个声明将创建一个匿名 class(仅在其范围内可用)因此要访问最后一个,您应该在 dojoConfig 全局变量中访问它或它的包,
对于最后的第二个声明,它是在全局范围(应用程序范围)中创建的,因此可以使用其声明的 class 名称 some.string.with.slashes.parameter
来实例化或使用它(建议使用点insted of slash) 定义一般名称 space conataing this class + class name.
不是在道场里 documentation :
Named classes should only be created if they will be used with the Dojo parser. All other classes should omit the className parameter.
这意味着仅将第二个声明用于小部件或 class 与 dojo/parser
一起使用,例如创建 Button 的自定义声明(ovveride 或 extend )...