节点:从另一个js文件导入对象数组?

时间:2014-05-27 19:27:53

标签: node.js express

在一个名为data.js的文件中,我有一个大对象数组:

var arr = [ {prop1: value, prop2: value},...]

我想将此数组用于我的Node.js应用程序,但代码如

require('./data.js')

无济于事。我知道如何导出函数,但在“导入”数组时我迷失了方向。如何将data.js文件添加到我的app.js?

5 个答案:

答案 0 :(得分:17)

本地变量(var whatever)不会导出并且是模块的本地变量。您可以在exports对象上定义数组,以允许导入它。如果您的数组只包含简单对象,也可以创建.json文件。

data.js:

module.exports = ['foo','bar',3];

import.js

console.log(require('./data')); //output: [ 'foo', 'bar', 3 ]

[编辑]

如果您需要一个模块(第一次),则执行其代码并返回并缓存 exports 对象。对于require()的所有进一步调用,仅返回缓存的上下文。

您仍然可以在模块代码中修改对象。考虑一下这个模块:

module.exports.arr = [];
module.exports.push2arr = function(val){module.exports.arr.push(val);};

并调用代码:

var mod = require("./mymodule");
mod.push2arr(2);
mod.push2arr(3);
console.log(mod.arr); //output: [2,3]

答案 1 :(得分:2)

  

我知道如何导出函数,[...]

通过修改functionmodule.exports,可以将数组或任何值导出为与exports相同:

var arr = [ {prop1: value, prop2: value},...];

exports.arr = arr;
var arr = require('./data').arr;

答案 2 :(得分:1)

  

您可以直接从NODEJS中的任何文件中获取JSON或JSON数组   不需要从JS脚本中导出它

    [ {
        prop1: value, 
        prop2: value
      },
      {
        prop1: val,
        prop2: val2
      },
      ...
   ]

将其存储到JSON文件中,假设 test.json

  

现在您可以将其导出为非常简单的下面给出。

let data = require('./test.json');

答案 3 :(得分:1)

您可以简单地将数组包装在函数中。

// myArray.js
export default function iDoReturnAnArray() {
  return ['foo', 'bar', 'baz'];
}

// main.js 
import iDoReturnAnArray from './path/to/myArray';

const unwrappedArray = iDoReturnAnArray();

console.log(unwrappedArray); // ['foo', 'bar', 'baz']

答案 4 :(得分:0)

我们可以使用解构来解决您的问题。

在file1.js中,我们创建一个对象数组:

var arr = [{ prop1: "beep", prop2: "boop" }];

然后我们执行以下操作以导出:

module.exports = { arr };

然后在另一个文件file2.js中,我们需要file1中的数组

const f1 = require("./file1");

记录结果进行测试

console.log(f1.arr);