Javascript node.js并在运行时/运行期间生成模块
我目前正在从事一个node.js项目,该项目要求在运行时和运行期间生成和更改内存中的对象。我知道这听起来很混乱,所以这里有一个例子 星期一上午10点:Javascript node.js并在运行时/运行期间生成模块,javascript,node.js,module,runtime,dynamically-generated,Javascript,Node.js,Module,Runtime,Dynamically Generated,我目前正在从事一个node.js项目,该项目要求在运行时和运行期间生成和更改内存中的对象。我知道这听起来很混乱,所以这里有一个例子 星期一上午10点: var PI = Math.PI; exports.area = function (r) { return PI * r * r; }; var PI = Math.PI; var minSize = 15; var error['eng'] = "Error: Minimum size of " + minSize + "not m
var PI = Math.PI;
exports.area = function (r) {
return PI * r * r;
};
var PI = Math.PI;
var minSize = 15;
var error['eng'] = "Error: Minimum size of " + minSize + "not met.";
var error['chn'] = "錯誤:不符合最小尺寸:" + minSize + "。"
exports.area = function (r) {
if (r >= minSize) {
return PI * r * r;
} else {
return error;
}
};
exports.circumference = function (r) {
if (r >= minSize) {
return 2 * PI * r;
} else {
return error;
}
};
星期一上午11时:
var PI = Math.PI;
var minSize = 10;
exports.area = function (r) {
if (r >= minSize) {
return PI * r * r;
} else {
return "Error: Minimum size not met.";
}
};
星期一中午12点:
var PI = Math.PI;
var minSize = 10;
var msg = "Error: Minimum size of " + minSize + "not met.";
exports.area = function (r) {
if (r >= minSize) {
return PI * r * r;
} else {
return msg;
}
};
星期二上午10点:
var PI = Math.PI;
exports.area = function (r) {
return PI * r * r;
};
var PI = Math.PI;
var minSize = 15;
var error['eng'] = "Error: Minimum size of " + minSize + "not met.";
var error['chn'] = "錯誤:不符合最小尺寸:" + minSize + "。"
exports.area = function (r) {
if (r >= minSize) {
return PI * r * r;
} else {
return error;
}
};
exports.circumference = function (r) {
if (r >= minSize) {
return 2 * PI * r;
} else {
return error;
}
};
这是一个有点做作的例子,因为我知道,通过适当的计划,大部分的变化都可以避免,但这有点说明了这一点。该模块在变量和函数方面不断变化,在服务器运行时不断扩展 以下是我的限制:
- 使用原型继承(无关键字“new”)
- 更改在下一次调用函数时生效
- 更改包括添加新的变量和函数
- 需要保存更改以重新启动服务器
- 无法使用eval()
- 优点:能够在服务器运行时执行此操作
- 缺点:我不知道如何保存到文件。据我所知,如果不以某种方式使用eval(),我无法将函数保存到文件中
- 优点:更改可以保存,版本可以保存并恢复到
- 缺点:我认为使用eval()直接编辑文件或多或少会产生相同的后果,即,如果有人潜入恶意内容,系统可能会破坏
- 有几个函数可以有效地沙箱执行,并防止访问其范围之外的变量。有一种方法讨论了不同版本之间的差异,并提供了基准
- node.js还提供了一个模块
- 在沙箱中运行东西的缺点是执行速度要慢得多