如何在JavaScriptstring中创build换行符以供给NodeJS写入文本文件?

我已经创build了一个简单的HTML页面,从用户的一些input存储在服务器上稍后检索 – 这是当用户点击一个提交button(我已经编号的注释下的关键行,但提供上下文的代码):

var origText = $('#input-field').val(), // 1. GETS WHATEVER USER TYPED INTO INPUT FIELD jsonText = '{ "text": "' + origText + '" }', // 2. WRAPS IT AN OBJECT STRING ajaxText = encodeURIComponent(jsonText); // 3. ENCODES THE STRING FOR USE WITH AJAX $.ajax({ url: 'http://localhost:8124/', data: 'save=' + ajaxText + '&fn=save', // 4. THE ENCODED STRING IS ADDED TO THE QUERY SECTION OF THE AJAX REQUEST dataType: "jsonp", cache: false, timeout: 5000, success: function(data) { $("#input-ready").html(data.save.text); }, error: function(jqXHR, textStatus, errorThrown) { alert('error ' + textStatus + " " + errorThrown); } }); 

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

 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 。 但是线路保持不变。

一些答案表明,我只能在编码string的级别或文件写入后执行此操作 。 也许我错过了简单的事情。 有没有办法通过操纵我的jsonTextvariables呢?

更新:

只是为了更清楚地输出所需的内容 – 目前生成的文本文件的内容如下所示:

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

但是我想知道它是否可以像这样产生:

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

使用

 var os = require('os'); var jsonText = '{' + os.EOL + '\t"text": "' + origText + '"' + os.EOL + '}'; 

事实certificate,当使用Node.js [编辑: 在Windows ] 中将一个string写入(文本)文件时,使用\r\n来换行。

与编码换行符一样 ,回车和换行都是必需的。 所以这行代码需要这个,而不是只有\r或只是\n

 jsonText = '{\r\n\t"text": "' + origText + '"\r\n}', 

结果文件的内容现在按需要显示:

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