RequireJS:加载字典或定义脚本
RequireJS: loading a dictionary or definitions script
我刚开始使用 RequireJS 进行实验,想知道我加载此 dictionary/definitions 脚本(称为 def/polygons.js)的方式是否最 convenient/eficient 或不是。
有效,我可以实例化一个 'Drawer' 并可以访问 'polygons' 但是 'polygons' 变量 我认为 是全局的,我不要觉得这可能是最佳实践...任何帮助将不胜感激:)
我需要的文件'def/polygons.js'
/*
* Drawer Class Definition
*
*
**/
define([
'modules/canvas',
'def/polygons'
], function(Canvas, polygons) {
'use strict'
function Drawer(canvasSettings) {
if (!this instanceof Drawer) {
throw new TypeError("Drawer constructor cannot be called as a function.");
}
this.canvas = new Canvas(canvasSettings);
this.polygons = polygons;
}
Drawer.prototype = {
/* Repoint base constructor back to the original constructor function */
constructor: Drawer,
do: function() {
console.log("This is just a test");
console.log(this.polygons);
}
};
return Drawer;
});
这是我定义多边形字典的脚本:
/*
* Polygon Definitions
*
*
**/
define(function() {
return {
name: 'square',
position: {
x: 0,
y: 0
},
points: [{
x: 0,
y: 0
},{
x: 0,
y: 0
},{
x: 0,
y: 0
},{
x: 0,
y: 0
}]
}
});
I THINK is global and I don't feel this may be the best practice
Require.js 的美妙之处在于它可以帮助您避免污染全局范围。话虽如此,您的 polygons
class 绝对不会 被放在全球范围内。
因为你是这样定义的:
define(function() {
return {
name: 'square',
position: {
x: 0,
y: 0
},
points: [{
x: 0,
y: 0
},{
x: 0,
y: 0
},{
x: 0,
y: 0
},{
x: 0,
y: 0
}]
}
});
此模块只是 返回 您的多边形对象 - 没有任何内容被推送到全局范围。
当您在此处调用访问您的脚本时:
define([
'modules/canvas',
'def/polygons'
], function(Canvas, polygons) {
...
您的 polygon
对象仅在该模块的特定范围内被实例化。
综上所述,您的 polygon
对象不会被推送到全局范围内,所以不用担心,它包含在您调用的特定模块的范围内它在.
我刚开始使用 RequireJS 进行实验,想知道我加载此 dictionary/definitions 脚本(称为 def/polygons.js)的方式是否最 convenient/eficient 或不是。
有效,我可以实例化一个 'Drawer' 并可以访问 'polygons' 但是 'polygons' 变量 我认为 是全局的,我不要觉得这可能是最佳实践...任何帮助将不胜感激:)
我需要的文件'def/polygons.js'
/*
* Drawer Class Definition
*
*
**/
define([
'modules/canvas',
'def/polygons'
], function(Canvas, polygons) {
'use strict'
function Drawer(canvasSettings) {
if (!this instanceof Drawer) {
throw new TypeError("Drawer constructor cannot be called as a function.");
}
this.canvas = new Canvas(canvasSettings);
this.polygons = polygons;
}
Drawer.prototype = {
/* Repoint base constructor back to the original constructor function */
constructor: Drawer,
do: function() {
console.log("This is just a test");
console.log(this.polygons);
}
};
return Drawer;
});
这是我定义多边形字典的脚本:
/*
* Polygon Definitions
*
*
**/
define(function() {
return {
name: 'square',
position: {
x: 0,
y: 0
},
points: [{
x: 0,
y: 0
},{
x: 0,
y: 0
},{
x: 0,
y: 0
},{
x: 0,
y: 0
}]
}
});
I THINK is global and I don't feel this may be the best practice
Require.js 的美妙之处在于它可以帮助您避免污染全局范围。话虽如此,您的 polygons
class 绝对不会 被放在全球范围内。
因为你是这样定义的:
define(function() {
return {
name: 'square',
position: {
x: 0,
y: 0
},
points: [{
x: 0,
y: 0
},{
x: 0,
y: 0
},{
x: 0,
y: 0
},{
x: 0,
y: 0
}]
}
});
此模块只是 返回 您的多边形对象 - 没有任何内容被推送到全局范围。
当您在此处调用访问您的脚本时:
define([
'modules/canvas',
'def/polygons'
], function(Canvas, polygons) {
...
您的 polygon
对象仅在该模块的特定范围内被实例化。
综上所述,您的 polygon
对象不会被推送到全局范围内,所以不用担心,它包含在您调用的特定模块的范围内它在.