Узел: импортировать массив объектов из другого JS-файла?
в файле с именем data.js, у меня большой массив объектов:
var arr = [ {prop1: value, prop2: value},...]
Я хотел бы использовать этот массив в моем узле.приложение JS, но код типа
require('./data.js')
не помогает. Я знаю, как экспортировать функции, но я теряюсь, когда дело доходит до "импорта" массивы. Как добавить данные.JS файл для моего приложения.Яш?
5 ответов
локальные переменные (var whatever) не экспортируются и локальны для модуля. Вы можете определить свой массив на объекте exports, чтобы позволить импортировать его. Вы могли бы создать .JSON-файл, если Ваш массив содержит только простые объекты.
данные.js:
module.exports = ['foo','bar',3];
импорт.js
console.log(require('./data')); //output: [ 'foo', 'bar', 3 ]
[Edit]
Если вам требуется модуль (в первый раз), его код выполняется и экспорт "объект" возвращается и кэшируются. Для все дальнейшие звонки 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]
вы можете напрямую получить массив JSON или JSON из любого файла в NODEJS нет необходимости экспортировать его из сценария JS
[ {
prop1: value,
prop2: value
},
{
prop1: val,
prop2: val2
},
...
]
сохраните его в файл JSON, предположим
вы можете просто обернуть массив в функцию.
// 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']
Я знаю, как экспортировать функции, [...]
массив или действительно любое значение можно экспортировать так же, как function
s, изменив module.exports
или exports
:
var arr = [ {prop1: value, prop2: value},...];
exports.arr = arr;
var arr = require('./data').arr;
мы можем использовать разрушать для того чтобы разрешить вашу проблему.
в file1.js, мы создаем массив объектов:
var arr = [{ prop1: "beep", prop2: "boop" }];
затем мы делаем следующее для экспорта:
module.exports = { arr };
затем в другом файле, file2.js, нам нужен массив из file1
const f1 = require("./file1");
журнал результата теста
console.log(f1.arr);