【问题标题】:Javascript require cachingJavascript 需要缓存
【发布时间】:2020-10-29 12:06:02
【问题描述】:

对于我正在设计的小型无状态 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 是否足够聪明,可以将文件的内容保存在缓存中以供后续调用。如果是这样,那么我的代码就可以了。如果不是这样,我可能会遇到性能问题。

你们能启发我吗?

【问题讨论】:

    标签: javascript caching require


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2015-02-21
      • 2014-07-04
      • 1970-01-01
      • 2010-12-24
      • 2012-06-17
      • 2012-08-25
      • 2013-04-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多