Как лучше всего использовать длинные строковые литералы в Javascript?

Возможное дублирование:
Многострочные строки в Javascript

В Ruby вы можете сделать что-то вроде этого:

temp = <<-SQLCODE
  select * from users
SQLCODE

Таким образом, в вашем коде будут очень длинные строковые литералы без необходимости экранирования большого количества символов. Есть ли что-то подобное в JavaScript?

В настоящее время у меня есть такой код JavaScript, и это сводит меня с ума ...

  new Element.update(lightbox_id, " \
    <div id='overlay' class='overlay' > \
    </div> \
    <div id='lightbox' class='lightbox'> \
      <div class='lightbox_title'> \
        <div class='corner_image' onclick=\"close_lightbox();return false;\"><a href='#'>" + corner_image + "</a></div> \
        <div class='lightboxname' id='lightboxname'>" + title + "</div> \
        <div class='close_image'> \
          <a href='#' onclick=\"close_lightbox();return false;\">Close</a> or Escape key\
        </div> \
      </div> \
      <div id='" + lightbox_content_id + "' class='lightbox_content'>    \
      </div> \
      <script>  \
        watch_for_escape(); \
      </script> \
    </div> \
");

person Janak    schedule 22.05.2009    source источник
comment
Краткий ответ: нет, вы не можете иметь буквальные символы новой строки в строках JS без символа продолжения. Вот еще несколько предложений: stackoverflow.com/questions/805107/   -  person Shog9    schedule 22.05.2009


Ответы (3)


Синтаксис, о котором вы говорите, часто известен как здесь-документ (или HEREDOC), и нет, он недоступен в Javascript.

Добавление обратной косой черты, как вы это делали, является подходящим способом растянуть строки на несколько строк в JavaScript.

person thomasrutter    schedule 22.05.2009

Наличие встроенного html - плохая практика, но если вы действительно хотите сделать его более чистым, попробуйте следующее:

Разместите на странице скрытый div с нужным HTML и замените настраиваемые параметры чем-то вроде {title}. При вызове обновления передайте yourdiv.innerHTML.replace (...

person Luke Schafer    schedule 22.05.2009
comment
Проблема с этим подходом заключается в том, что он затрудняет инкапсуляцию функциональности в одном файле Javascript - например, написание плагина, который должен вставлять определенный контент в DOM. - person alexw; 05.11.2015

Если вы используете Rails, то с rjs становится намного проще обновить div с помощью многострочного HTML:

page.replace__html 'lightbox_id', :partial => 'overlay'

тогда overlay.html.erb будет содержать необработанный HTML-код, указанный выше, без экранирования.

Дополнительным преимуществом является то, что «наложение» фрагмента также можно использовать при начальной загрузке страницы, что во многих случаях является именно тем, что вам нужно.

person Julian H    schedule 22.05.2009