NodeJS - 从另一个文件中获取变量,而无需在每次调用时重新定义它



所以我有 2 个文件,一个 mapgen.js 和一个主.js。在mapgen中.js有一个生成巨型2D数组的函数。我想在main中使用这个aray.js但不希望生成映射的函数每次在main.js中"需要"时运行。我还希望最终能够编辑地图数组。

示例:(不是真正的代码只是写了一些废话来显示问题是什么)

mapgen.js:

var map;
function mapGen(){
    //make the map here
      this function takes like 2 seconds and some decent CPU power, so 
      don't want it to ever run more than once per server launch
    map = map contents!
}

主.js

var map = require mapgen.js;
console.log(map.map);
//start using map variable defined earlier, but want to use it without
  having to the run the big funciton again, since it's already defined.

我知道我必须在某个地方进行模块导出,但我认为这仍然不能解决我的问题。我会将其写入文件,但这并不比将其保存在 ram 中慢多少?以前我已经通过将所有内容保存在 1 个文件中来解决这个问题,但现在我需要清理它。

要求模块不会自动调用该函数。您可以在主.js文件中执行此操作。

地图生成.js

module.exports = function mapGen() {
  return [/* hundreds of items here. */];
};

主.js

// Require the module that constructs the array.
const mapGen = require('./mapgen');
// Construct the array by invoking the mapGen function and 
// store a reference to it in 'map'.
const map = mapGen(); // `map` is now a reference to the returned array.
// Do whatever you want with 'map'.
console.log(map[0]); // Logs the first element.

不是专家,但如果你在mapgen中放一个条件.js那行不通?

var map;
function mapGen(){
    if(!map){
       //your code here
       map = map contents!
    }
}

将其与全局变量和/或模块相结合。导出 参见如何在节点.js中使用全局变量?

相关内容

  • 没有找到相关文章

最新更新