如何访问存储在其他js文件中的数组

时间:2019-02-20 22:19:25

标签: javascript arrays node.js express

我正在尝试创建自己的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 :(得分:1)

JavaScript文件相互隔离。要共享通用代码,您始终需要requiremodule.exports

所以您使用module.exports = harryText做正确的事

然后您需要在requiregenerator.js

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

答案 1 :(得分:0)

如果您使用的是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 

答案 2 :(得分:0)

UPDATE 19/2/20 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
  ]
}