如何在JavaScript字符串中创建一个换行符,以馈送给NodeJS写入文本文件?

如何在JavaScript字符串中创建一个换行符,以馈送给NodeJS写入文本文件?,javascript,node.js,jquery,Javascript,Node.js,Jquery,我创建了一个简单的HTML页面,它将用户的一些输入存储在服务器上,以便以后检索——这就是当用户单击submit按钮时文本的处理方式(我在关键行下放置了编号注释,但提供了上下文的周围代码): 请求被发送到我正在本地运行的NodeJS服务器,该服务器(在http.createServer回调中)执行以下操作: var queryObj = url.parse(req.url, true).query; // 1. GET THE QUERY PART OF THE REQUEST/URL A

我创建了一个简单的HTML页面,它将用户的一些输入存储在服务器上,以便以后检索——这就是当用户单击submit按钮时文本的处理方式(我在关键行下放置了编号注释,但提供了上下文的周围代码):

请求被发送到我正在本地运行的NodeJS服务器,该服务器(在
http.createServer
回调中)执行以下操作:

var queryObj = url.parse(req.url, true).query;
    // 1. GET THE QUERY PART OF THE REQUEST/URL AS AN OBJECT
res.writeHead(200, {'Content-Type': 'application/javascript'});
    // 2. PREPARE SERVER'S RESPONSE AS JAVASCRIPT
queryObj.fn = queryObj.fn || '';
queryObj.save = queryObj.save || '';
queryObj.callback = queryObj.callback || '';
    // 3. ENSURE THE PROPERTIES NEEDED ARE DEFINED, EVEN IF FALSE-Y
if (queryObj.fn === 'save') {
    // 4. IF THE REQUEST IS TO SAVE THEN WRITE THE USER INPUT AS OBJECT TO A TEXT FILE
    fs.writeFile('jsonp-storage-2.txt', queryObj.save, function (err) {
        if (err) {
            throw err;
        } else {
            console.log('Saved message successfully.', 'Ready to be read now.');
            res.end(queryObj.callback +
                '({ fn: "' + queryObj.fn + '", save: ' + queryObj.save + ' })');
        }
    });
}
假设用户键入并提交“这是一行文本”,服务器上的输出是一个名为jsonp-storage-2.txt的文本文件,其中包含以下内容:

{ "text": "this is a line of text" }
毕竟,我的问题很简单。如何美化文本文件中的输出

代码需要修改,但我正在考虑使用它来存储更大的对象,以便以后阅读。但是,在服务器端,我希望文件(目前)在使用记事本打开时易于阅读

我试过使用
\n
\t
如下:

jsonText = '{\n\t"text": "' + origText + '"\n}',
我也尝试过
\r
。但这条线仍然没有中断

一些答案表明我只能这样或那样做。也许我错过了一些简单的事情。有没有办法通过操纵我的
jsonText
变量来实现这一点

更新:

为了更清楚地了解所需的输出--当前生成的文本文件的内容如下所示:

{ "text": "this is a line of text" }
{
    "text": "this is a line of text"
}
但我想知道它是否可以这样制作:

{ "text": "this is a line of text" }
{
    "text": "this is a line of text"
}

事实证明,在Windows中使用Node.js[编辑:将字符串写入(文本)文件时,请使用
\r\n
作为新行

与之一样,还需要一个回车车厢和一条新线路。所以代码行应该是这样的,而不是只有
\r
\n

jsonText = '{\r\n\t"text": "' + origText + '"\r\n}',
现在,结果文件的内容将根据需要显示:

{
    "text": "this is a line of text"
}
使用


你是否真的需要对它们进行美化?如果你真的打开了它们,为什么不美化它们呢?因为白线是你存储概念的一部分,而不是消息的一部分,为什么不把它们添加到你的nodeJS代码中呢?fs.writeFile('jsonp-storage-2.txt',queryObj.save+“\n\n”,函数(err){@DaveNewton谢谢你的评论。我还不知道我想制作多少这样的文件。我意识到这似乎太琐碎了,不需要在这么小的规模下进行自动化,但我很好奇这是否可以实现,因为我不想打开每个文件并手动美化每个文件。即使在完成时只需点击一次e文件是打开的,如果有100个或更多的文件,它会变得单调乏味。@guypursey这就是他们发明脚本的原因;不知道为什么有人会手动执行它。但是你为什么要打开所有这些文件呢?那就不说了:有可能JSON在节点端被解析并存储为JSON,而这些空白在其中是没有意义的吗?谢谢@Roonaan。这可能会起作用,但为了正确美化输出,换行符和缩进需要在字符串本身内(而不是附加)。我编辑了我的问题以使其更清楚。换行符编码因平台而异。
\r\n
是Windows和相关平台的换行符编码,
\n
是UNIX相关平台的换行符编码。请参阅以了解历史转移。@Plynx谢谢。我应该在不久前回复此评论,现在正在回复鼓励人们使用我标记为正确的与平台相关的答案。我在这里的答案是在我刚开始使用Node.js for Windows时得出的(因此它对我有效,因此留在这里)但并非适用于所有用途。此答案必须是正确的。因为在某些情况下编写windows“return caret character”\r可能会引发异常。请非常小心!抱歉,我刚刚看到了这个答案。它比我的答案更好,所以我已将其标记为正确。您也可以使用
JSON.stringify(data,null,”)