我正在尝试创建自己的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 %>
一样包含在生成器数组中,这是无效的代码。
是否正在从另一个文件调用数组并将其存储在另一个数组中?有人知道解决方案吗?
是的,我知道哈利波特益普森已经存在。这只是虚拟文字。
答案 0 :(得分:1)
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"
]
]
}
答案 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
]
}