Как сделать многострочную строку в node.js?
С ростом node.js многострочные строки становятся все более необходимыми в JavaScript.
- Есть ли специальный способ сделать это в node.JS, даже если он не работает в браузерах?
- Есть ли какие-либо планы или, по крайней мере, запрос функции, который я могу поддерживать?
Я уже знаю, что вы можете использовать \n\
в конце каждой строки, это не то, что я хочу.
Ответы
Ответ 1
node v4 и текущие версии node
В ES6 (и, следовательно, версии Node больше, чем v4) в Javascript добавлен новый "шаблонный литерал", который также можно использовать для создания мульти- строки, как в:
`this is a
single string`
который оценивается как: 'this is a\nsingle string'
.
Обратите внимание, что в результирующую строку включена строка новой строки в конце первой строки .
Были добавлены литералы шаблонов, позволяющие программистам создавать строки, в которых значения или код могут быть непосредственно введены в строковый литерал без использования util.format
или других templaters, например:
let num=10;
console.log(`the result of ${num} plus ${num} is ${num + num}.`);
который будет печатать "результат 10 плюс 10 равен 20." на консоль.
Старые версии node
Старая версия Node может использовать символ "продолжение строки", позволяющий писать многострочные строки, такие как:
'this is a \
single string'
который оценивается как: 'this is a single string'
.
Обратите внимание, что новая строка в конце первой строки не включена в результирующую строку.
Ответ 2
Многострочные строки являются текущей частью JavaScript (начиная с ES6) и поддерживаются в node.js v4.0.0 и новее.
var text = `Lorem ipsum dolor
sit amet, consectetur
adipisicing
elit. `;
console.log(text);
Ответ 3
Что именно вы ищете, когда имеете в виду многострочные строки.
Вы ищете что-то вроде:
var str = "Some \
String \
Here";
Что будет печатать как "Some String Here"?
Если это так, имейте в виду, что приведенное выше является действительным Javascript, но это не так:
var str = "Some \
String \
Here";
Какая разница? Пространство после \
. Получите удовольствие отладки, что.
Ответ 4
Взгляните на mstring модуль для node.js.
Это простой небольшой модуль, который позволяет вам иметь многострочные строки в JavaScript.
Просто сделайте следующее:
var M = require('mstring')
var mystring = M(function(){/***
Ontario
Mining and
Forestry
Group
***/})
чтобы получить
mystring === "Ontario\nMining and\nForestry\nGroup"
И это в значительной степени.
Как это работает
В node.js вы можете вызвать метод .toString
для функции, и он даст вам исходный код определения функции, включая любые комментарии. Регулярное выражение захватывает содержимое комментария.
Да, это взломать. Вдохновленный небольшим комментарием от Dominic Tarr.
Примечание. Модуль (начиная с 2012/13/11) не допускает пробелов перед закрытием ***/
, поэтому вам нужно взломать его в себе.
Ответ 5
В отличие от того, что люди публиковали здесь, я слышал, что конкатенация может быть намного быстрее, чем присоединиться к современным 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-фрагментов. Я не говорю, что это причина для его использования, но я бы хотел, чтобы он приземлился в экма-земле: - (.
Джош
Ответ 6
Взгляните на CoffeeScript: http://coffeescript.org
Он поддерживает многострочные строки, интерполяцию, понимание массивов и множество других приятных вещей.
Ответ 7
Если вы хотите (как я) поддерживать строки, подобные этому в NodeJS:
<<<my_var
This a very large string
>>>
<<<my_sql
SELECT
*
FROM my_table
WHERE
field = 'true';
>>>
Вы должны попробовать этот плагин.
Ответ 8
Если вы используете io.js, он поддерживает многострочные строки, как в ECMAScript 6.
var a =
`this is
a multi-line
string`;
См. "Новые методы строкой" в http://davidwalsh.name/es6-io для получения подробной информации и "строки шаблона" в http://kangax.github.io/compat-table/es6/ для отслеживания совместимости.
Ответ 9
Vanilla Javascipt не поддерживает многострочные строки. Предварительные процессоры языка в настоящее время оказываются выполнимыми.
CoffeeScript, у самой популярной из них есть эта функция, но она не минимальна, это новый язык. Компилятор трассировки Google добавляет новые функции к языку в качестве супермножества, но я не думаю, что многострочные строки являются одной из добавленных функций.
Я хочу создать минимальный набор javascript, который поддерживает многострочные строки и пару других функций. Я начал этот маленький язык некоторое время назад, прежде чем писать исходный компилятор для coffeescript. Я планирую закончить его этим летом.
Если предварительные компиляторы не являются параметрами, существует также тэг script, в котором вы храните многострочные данные в теге script в html, но предоставляете ему собственный тип, чтобы он не выполнялся не обходится. Затем, используя javascript, вы можете извлечь содержимое тега script.
Кроме того, если вы положите\в конец любой строки в исходном коде, это приведет к игнорированию новой строки, как если бы ее не было. Если вы хотите новую строку, то вам нужно закончить строку с помощью "\n \".
Ответ 10
В дополнение к принятому ответу:
'this is a
single string'
который оценивается как "это строка \nsingle".
Если вы хотите использовать интерполяцию строк, но без новой строки,
просто добавьте обратную косую черту как в обычной строке:
'this is a \
single string'
=> "это одна строка".
Имейте в виду, что пробелы вручную необходимы:
'this is a\
single string'
=> "это одна строка"