Javascript 需要缓存

Javascript require caching

对于我正在设计的小型无状态API,我需要一个非常简单的i18n工具。我将管理 2 种语言的少于 30 个字符串,不会更多。

我决定写一个非常简单的 i18n 工具:

exports.i18nString = function (language, stringID) {
    try {
        var dictionary = require(`./${language}.json`)

        if (Array.isArray(dictionary[stringID])) {
            return dictionary[stringID][Math.floor(Math.random() * dictionary[stringID].length)];
        }
        return dictionary[stringID];
    } catch(error) {

    }
    return "";
}

示例 JSON 字典:

{
    "example": "This is an example",
    "multi": [
        "Choice 1",
        "Choice 2",
        "Choice 3"
    ]
}

它运行完美,非常符合我的需要。不过有一件事困扰着我:我每次调用的函数中都存在 require 需要一个字符串。

我是 Js 的初学者,但我知道 require 打开文件,读取其内容并对其进行评估。但我不知道 Js 是否足够聪明,可以将文件内容保存在缓存中以供后续调用使用。如果是这样,那么我的代码就可以了。如果不是,我可能会遇到性能问题。

各位大神能指点一下吗?

我在随机搜索中找到了答案。

事情是这样的:Node.js 缓存每个文件,如解释的那样 here:

模块在第一次加载后被缓存。这意味着(除其他事项外)每次调用 require('foo') 都会返回完全相同的对象,如果它解析为同一个文件的话。 如果require.cache不被修改,多次调用require('foo')不会导致模块代码被多次执行。