在Javascript文件之间共享数据

在Javascript文件之间共享数据,javascript,json,Javascript,Json,我有一个生成JSON格式字符串的脚本。我想在另一个脚本中使用此字符串中包含的数据。我甚至不知道从哪里开始。我曾经考虑过从同一个目录运行两个脚本,并以某种方式将JSON数据输出到一个文本文件中,然后将其加载到第二个脚本中,但这看起来更像是一种变通方法,而不是实际的解决方案。是否可以从第一个脚本调用第二个脚本并将数据传递给它?很像在单个脚本中在函数之间传递数据 FWIW我曾尝试简单地将两个脚本执行的功能合并为一个,但这给我带来了无数麻烦,没有任何进展。为了简单起见,我更愿意将每个脚本执行的函数分开(

我有一个生成JSON格式字符串的脚本。我想在另一个脚本中使用此字符串中包含的数据。我甚至不知道从哪里开始。我曾经考虑过从同一个目录运行两个脚本,并以某种方式将JSON数据输出到一个文本文件中,然后将其加载到第二个脚本中,但这看起来更像是一种变通方法,而不是实际的解决方案。是否可以从第一个脚本调用第二个脚本并将数据传递给它?很像在单个脚本中在函数之间传递数据

FWIW我曾尝试简单地将两个脚本执行的功能合并为一个,但这给我带来了无数麻烦,没有任何进展。为了简单起见,我更愿意将每个脚本执行的函数分开(除了明显的数据共享需求!)


任何正确方向上的建议或点都将不胜感激。

如果没有一些代码可以引用,很难说,但可能只是一个全局变量,并检查其是否为null

var myJsonString = null;

function one () {
    var jsonString = "[]";
    myJsonString = jsonString;
}

function two () {
    //string not set so bail
    if (myJsonString === null) { return; }
}

很难说没有一些代码可以引用,但可能只是一个全局变量,检查它是否为null

var myJsonString = null;

function one () {
    var jsonString = "[]";
    myJsonString = jsonString;
}

function two () {
    //string not set so bail
    if (myJsonString === null) { return; }
}

所以这实际上取决于您在什么环境中编程。如果是web浏览器,则所有代码实际上都在全局空间中,并且按顺序运行。因此,如果在html文件中有
,然后
,并且在第一个文件中放入x=10并在第二个文件中使用,那么就不会有问题。如果您使用的是node.js,我也可以发布解决方案,请告诉我

(顺便说一句,如果您将x=10放入第二个文件,并从第一个文件引用它,它将抛出一个错误)


有一些方法可以避免这种情况,例如使用document.ready函数或将内容包装到函数中,然后在最后调用它们。您需要确保函数和变量在使用之前就已经创建好了(这是初学者经常犯的一个错误,并且会被它弄糊涂)

因此这实际上取决于您在什么环境下编程。如果是web浏览器,则所有代码实际上都在全局空间中,并且按顺序运行。因此,如果在html文件中有
,然后
,并且在第一个文件中放入x=10并在第二个文件中使用,那么就不会有问题。如果您使用的是node.js,我也可以发布解决方案,请告诉我

(顺便说一句,如果您将x=10放入第二个文件,并从第一个文件引用它,它将抛出一个错误)


有一些方法可以避免这种情况,例如使用document.ready函数或将内容包装到函数中,然后在最后调用它们。您需要确保函数和变量在使用前已创建(这是初学者经常犯的错误,并且容易被混淆)

如果JSON数据小于5 mb,则可以使用localStorage在浏览器中保存输出

在第一个js文件中:

function fOne(){
    var jsonStr = ''; //insert some json data here
    localStorage.setItem("myJson", JSON.stringify(jsonStr)); //save data
}
在第二个js文件中:

function fTwo(){
    if (localStorage.getItem("myJson") !== null) {
        var passedJson = localStorage.getItem("myJson"); //get saved data anytime
    }
}

如果JSON数据小于5 mb,则可以使用localStorage在浏览器中保存输出

在第一个js文件中:

function fOne(){
    var jsonStr = ''; //insert some json data here
    localStorage.setItem("myJson", JSON.stringify(jsonStr)); //save data
}
在第二个js文件中:

function fTwo(){
    if (localStorage.getItem("myJson") !== null) {
        var passedJson = localStorage.getItem("myJson"); //get saved data anytime
    }
}

您可以使用ES6导入/导出您可以使用ES6导入/导出对不起,Javascript是新手,所以我应该提到我确实在使用node.js,而不是编写用于网站的代码。在根据您的回复完善我的搜索词之后。我会试试我在那里看到的。谢天谢地,我的两个脚本都没有试图改变任何一个脚本的数据——一个创建,另一个读取。只有一种方法:)哦,没问题。这改变了很多。如果你需要更多的帮助,请告诉我。祝你好运抱歉,我是Javascript新手,所以我应该提到我确实在使用node.js,而不是编写用于网站的代码。在根据您的回复完善我的搜索词之后。我会试试我在那里看到的。谢天谢地,我的两个脚本都没有试图改变任何一个脚本的数据——一个创建,另一个读取。只有一种方法:)哦,没问题。这改变了很多。如果你需要更多的帮助,请告诉我。祝你好运抱歉@TusharTyagi,我应该提到我使用的是node.js,而不是为浏览器工作而编程。我相信以上内容只能在浏览器环境下使用?好吧,那么,由于您的问题中使用了标记,更多ppl可能会感到困惑,因此您必须尽快对其进行编辑:)我真的很喜欢这个。不要随便摆弄全局变量。我要做的一个小改进是改用sessionStorage,除非数据必须在会话之间持久化,否则这是暂时存储数据的最安全的方法。很抱歉@TusharTyagi,我应该提到我使用的是node.js,而不是为浏览器工作编程。我相信以上内容只能在浏览器环境下使用?好吧,那么,由于您的问题中使用了标记,更多ppl可能会感到困惑,因此您必须尽快对其进行编辑:)我真的很喜欢这个。不要随便摆弄全局变量。我要做的一个小改进是改用sessionStorage,除非数据必须在会话之间持久化,否则这是暂时存储数据的最安全的方法。