如何在node.js中执行多行string?
随着node.js的兴起,多行string在JavaScript中变得越来越必要。
- Node.JS中有没有特殊的方法可以实现,即使它在浏览器中不起作用?
- 是否有任何计划或至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 \”结束行。