1
我目前正在研究一個node.js項目,該項目需要在運行時和運行期間生成和更改內存中的對象。我知道這聽起來令人困惑,所以這裏是一個例子。node.js並在運行時/期間生成模塊
週一上午10點:
var PI = Math.PI;
exports.area = function (r) {
return PI * r * r;
};
週一上午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;
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;
}
};
這是一個有點人爲的例子,因爲大部分的變化都可以通過適當的計劃來避免,但我知道,但這有點說明問題。該模塊在變量和函數中保持更改,並在服務器運行時進行擴展。
這裏是我的限制:
- 使用原型繼承(沒有關鍵字「新」)
- 更改將在函數的下一個通話效果
- 的變化包括增加新的變量,功能
- 變化需要保存服務器重新啓動
- 不能使用eval()
我想到了兩種可能的策略:
使用.prototype,繼續添加/修改函數和變量。
- 優點:能夠作爲服務器運行的是
- 缺點做到這一點:我不知道如何將它保存到文件。據我知道,我不能保存功能,而不以某種方式
直接編輯文件,並通過類似node-supervisor重裝他們使用eval()到文件。
- 優點:更改將被保存在,版本可以保存並恢復到
- 缺點:我覺得直接編輯文件將使用eval(),即或多或少具有相同的結果,如果有人系統可能會破壞某些惡意行爲。
這就是我現在能想到的。希望在這方面的任何意見或選擇。