如何在node.js中执行多行string?

随着node.js的兴起,多行string在JavaScript中变得越来越必要。

  1. Node.JS中有没有特殊的方法可以实现,即使它在浏览器中不起作用?
  2. 是否有任何计划或至less有一个function要求来做到这一点,我可以支持?

我已经知道你可以在每行的结尾使用\n\ ,这不是我想要的。

节点v4和当前版本的节点

从ES6开始(以及Node版本大于v4的版本),在Javascript中添加了一个新的“模板字面量”内部types(用back-ticks表示),也可以用来构造多行string,如:

 `this is a single string` 

其计算结果为: 'this is a\nsingle string'

请注意,第一行末尾的换行符包含在结果string中。

添加了模板文字,允许程序员构buildstring,其中值或代码可以直接注入到string文字中,而无需使用util.format或其他模板,如下所示:

 let num=10; console.log(`the result of ${num} plus ${num} is ${num + num}.`); 

这将打印出“10加10的结果是20”。 到控制台。

较旧版本的节点

较旧版本的节点可以使用“续行”字符,允许您编写多行string,例如:

 'this is a \ single string' 

其评估为: 'this is a single string'

请注意,第一行末尾的换行符包含在结果string中。

当你指的是多行string时,你到底在找什么。

你在找什么东西吗?

 var str = "Some \ String \ Here"; 

这将打印为“一些string在这里”?

如果是这样,请记住,以上是有效的Javascript,但这不是:

 var str = "Some \ String \ Here"; 

有什么不同? \之后的空格。 玩得开心debugging。

多行string是JavaScript (自ES6以来)的一个当前部分,在node.js v4.0.0及更高版本中受支持。

 var text = `Lorem ipsum dolor sit amet, consectetur adipisicing elit. `; console.log(text); 

看看node.js的mstring模块。

这是一个简单的小模块,可以让你在JavaScript中使用多行string。

只要这样做:

var M = require('mstring')

var mystring = M(function(){/*** Ontario Mining and Forestry Group ***/})

要得到

mystring === "Ontario\nMining and\nForestry\nGroup"

而这是非常多的。

怎么运行的
在Node.js中,你可以调用函数的.toString方法,它会给你函数定义的源代码,包括任何注释。 正则expression式抓取评论的内容。

是的,这是一个黑客。 灵感来自Dominic Tarr的一次性评论。


注意:模块(截至2012/13/11)在closures前不允许有空格***/ ,所以你需要自己破解它。

除了在这里发布的信息之外,我还听说串联可以比现在的JavaScript vms更快。 含义:

 var a = [ "hey man, this is on a line", "and this is on another", "and this is on a third" ].join('\n'); 

会慢于:

 var a = "hey man, this is on a line\n" + "and this is on another\n" + "and this is on a third"; 

在某些情况下。 http://jsperf.com/string-concat-versus-array-join/3

另一方面,我觉得这是Coffeescript中更吸引人的特性之一。 是的,是的,我知道,仇敌会讨厌。

 html = ''' <strong> cup of coffeescript </strong> ''' 

它特别好的HTML片段。 我不是说它是一个使用它的理由,但我希望它会在ecma土地上登陆:-(。

玩笑

看看CoffeeScript: http : //coffeescript.org

它支持多行string,插值,数组理解和许多其他好东西。

如果你想(像我一样)在NodeJS上支持这样的string:

 <<<my_var This a very large string >>> <<<my_sql SELECT * FROM my_table WHERE field = 'true'; >>> 

你应该试试这个插件 。

如果使用io.js,则它支持ECMAScript 6中的多行string。

 var a = `this is a multi-line string`; 

有关详细信息,请参阅http://davidwalsh.name/es6-io的; “新string方法”,有关跟踪兼容性,请参阅http://kangax.github.io/compat-table/es6/上的; “模板string”。

Vanilla Javascipt不支持多行string。 语言预处理器现在变得可行了。

CoffeeScript,这些function中最受欢迎的,但它并不是最小的,这是一种新的语言。 Google的traceur编译器为这个语言增加了新的特性作为超集,但是我不认为多行string是增加的特性之一。

我正在寻找一个JavaScript的最小超集,支持多行string和其他一些function。 在编写coffeescript的初始编译器之前,我开始使用这个小语言。 我打算今年夏天完成它。

如果预编译器不是一个选项,那么还有脚本标记hack将你的多行数据存储在html中的脚本标记中,但给它一个自定义types,以避免它被取消。 然后稍后使用JavaScript,可以提取脚本标记的内容。

另外,如果你在源代码中的任何一行的末尾加上“\”,就会导致新行被忽略,就好像它不在那里一样。 如果你想换行,那么你必须用“\ n \”结束行。