Как получить доступ к массиву, хранящемуся в другом файле JS - PullRequest
0 голосов
/ 21 февраля 2019

Я пытаюсь создать собственное приложение lorem ipsum и хочу сохранить свой код в чистоте, сохраняя свой банк слов в других файлах.Как я могу получить доступ к массиву, хранящемуся в другом файле JS?Например, вместо жесткого кодирования harry = ["", "", ""] я хочу сохранить эти данные в другом файле и просто вызвать этот файл в массив.

// generator.js
function GenerateNewText(){
this.sentences = [
    harry = [
        "I am the chosen one!",
        "Boy wizard",
        "Quidditch seeker"
    ron = [
       "I am a Weasley",
       "Gryffindor",
       "Quidditch keeper"
    ]
  ]
}

GenerateNewText.prototype.getRandomSentence = function() {
   let randomSentence = this.sentences[0][Math.floor(Math.random() * this.sentences.length)]
   return randomSentence;
}

В настоящее время у меня есть файл harryText.js, который содержит

// harryText.js
harryText = [
  "I am the chosen one",
  "I am a Gryffindor",
  "I am a boy"
]

module.exports = harryText;

, но в моем файле generator.js это показывает harryText is not defined

function GenerateNewText(){
this.sentences = [
    harryText,  <---- error here
    ron = [
       "I am a Weasley",
       "Gryffindor",
       "Quidditch keeper"
    ]
  ]
}

Я попытался сделать это так, как const harryText = require("./harryText.js"), и проблема не исчезла.Я предполагаю, что проблема в сфере?

Я попытался установить ejs и изменить harryText.ejs и включить его, например, <%= include harryText %> в массив генератора, и это неверный код.

Вызывает массив из другого файла и сохраняет его вдругой массив вообще возможен?Кто-нибудь знает решение этой проблемы?

И да, я знаю, что Гарри Поттер Ипсум уже существует.Это просто фиктивный текст.

Ответы [ 3 ]

0 голосов
/ 21 февраля 2019

Если вы используете ES6, вы можете сделать следующее.

//file1.js
  export const harryText = [
     "I am the chosen one",
     "I am a Gryffindor",
     "I am a boy"
  ]

//file2.js
  import {harryText} from './file1.js';
  // use variable here 
0 голосов
/ 21 февраля 2019

ОБНОВЛЕНИЕ 20.02.19 16:15 Я получаю, что harryText не определена ошибка, потому что я продолжал глупо определять переменную в неправильном месте!Сначала я определил его вне function GenerateNewText, затем попытался определить его внутри this.sentence.Вместо этого я должен был определить его внутри function GenerateNewText и снаружи this.sentence, например

function GenerateNewText(){
  const harryText = require("./harryText");
  const ronText = require("./ronText");
  this.sentences = [
    harryText,
    ronText
  ]
}
0 голосов
/ 21 февраля 2019

Файлы Javascript изолированы друг от друга.Для совместного использования общего кода вам всегда нужны require и module.exports

Так что вы делаете правильные вещи с module.exports = harryText

Затем вам нужно require этот файл в generator.js

const harryText = require("./harryText");
function GenerateNewText(){
this.sentences = [
    harryText,
    ron = [
       "I am a Weasley",
       "Gryffindor",
       "Quidditch keeper"
    ]
  ]
}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...