从主脚本文件中分离数组
Separate arrays from main script file
我正在开发一个 Javascript 代码,它可以从较小的字符串集生成随机文本。问题是为了使代码易于阅读和扩展,我肯定必须为每个字符串变量使用一行。
类似这样的东西,非常广泛。
var array = [
"text",
"text",
"text",
"text",
"text",
"text",
"text",
"text",
"text",
"text",
"text",
"text",
"text",
"text",
"text",
"text",
"text",
"text",
"text",
"text",
"text",
"text",
"text",
"text",
"text",
...
]
var array_b = [
//(the same again)
]
var result = array[math.floor(math.random())] + " " + array_b[math.floor(math.random())]
不用说,很不舒服。显然,并非不可能习惯;但如果可能的话,我会摆脱那些长数组。
有办法吗?将它们放入不同的文件中,也许从另一个页面的另一个脚本中调用它们?或者什么?
只要确保同时加载它们并确保它们位于全局 window 对象上,您就可以将它们简单地添加到另一个文件中。这意味着不用
var array_a = []
您使用:
window.array_a = []
并且在当前文件(您完成所有工作的地方)中,您将它们引用为 window.array_a
而不仅仅是 array_a
.
此外,根据您使用的编辑器,它很可能允许您出于您所描述的原因折叠任何此类数组或函数声明,这也可以解决问题。一个例子是 Sublime Text。
您可以将数组放入 JSON(JavaScript Object Notation)文件,然后使用 ajax 请求加载它们
data.json
["text","text","text","text","text","text","text","text","text","text",...]
main.js
//if using jQuery
jQuery.ajax({
url:"data.json",
dataType:"json"
}).then(function(data){
//'data' will be your array use it
});
//if not using jQuery
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
//parse the JSON text
var data = JSON.parse(xmlhttp.responseText);
//call a function passing it the array
response(data);
}
};
xmlhttp.open("GET", "data.json");
xmlhttp.send();
function response(data){
//data will be your array use it
}
您也可以只将它们添加到单独的 js 文件中,然后添加第二个 <script>
元素
data.js
var data =["text","text","text","text","text","text","text","text","text","text",...]
main.html
<head>
<script src="data.js"></script>
<script src="main.js"></script>
</head>
我正在开发一个 Javascript 代码,它可以从较小的字符串集生成随机文本。问题是为了使代码易于阅读和扩展,我肯定必须为每个字符串变量使用一行。
类似这样的东西,非常广泛。
var array = [
"text",
"text",
"text",
"text",
"text",
"text",
"text",
"text",
"text",
"text",
"text",
"text",
"text",
"text",
"text",
"text",
"text",
"text",
"text",
"text",
"text",
"text",
"text",
"text",
"text",
...
]
var array_b = [
//(the same again)
]
var result = array[math.floor(math.random())] + " " + array_b[math.floor(math.random())]
不用说,很不舒服。显然,并非不可能习惯;但如果可能的话,我会摆脱那些长数组。
有办法吗?将它们放入不同的文件中,也许从另一个页面的另一个脚本中调用它们?或者什么?
只要确保同时加载它们并确保它们位于全局 window 对象上,您就可以将它们简单地添加到另一个文件中。这意味着不用
var array_a = []
您使用:
window.array_a = []
并且在当前文件(您完成所有工作的地方)中,您将它们引用为 window.array_a
而不仅仅是 array_a
.
此外,根据您使用的编辑器,它很可能允许您出于您所描述的原因折叠任何此类数组或函数声明,这也可以解决问题。一个例子是 Sublime Text。
您可以将数组放入 JSON(JavaScript Object Notation)文件,然后使用 ajax 请求加载它们
data.json
["text","text","text","text","text","text","text","text","text","text",...]
main.js
//if using jQuery
jQuery.ajax({
url:"data.json",
dataType:"json"
}).then(function(data){
//'data' will be your array use it
});
//if not using jQuery
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
//parse the JSON text
var data = JSON.parse(xmlhttp.responseText);
//call a function passing it the array
response(data);
}
};
xmlhttp.open("GET", "data.json");
xmlhttp.send();
function response(data){
//data will be your array use it
}
您也可以只将它们添加到单独的 js 文件中,然后添加第二个 <script>
元素
data.js
var data =["text","text","text","text","text","text","text","text","text","text",...]
main.html
<head>
<script src="data.js"></script>
<script src="main.js"></script>
</head>