我刚刚开始使用RequireJS进行实验,并且想知道我加载这个词典/定义脚本(称为def / polygons.js)的方式是否最方便/最有效。
它有效,我可以实例化一个'抽屉'并且可以访问多边形'但那个多边形'变量我认为是全球性的,我觉得这可能是最好的做法......任何帮助都将受到赞赏:)
我要求的文件' 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
}]
}
});
答案 0 :(得分:0)
我认为是全球性的,我觉得这可能是最好的做法
Require.js的美丽和力量在于它可以帮助您避免污染全球范围。话虽如此,您的polygons
类绝对不是被放在全球范围内。
因为你已经这样定义了它:
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
对象并没有被推到全球范围,所以不要担心,它包含在你要求的特定模块的范围内它在。