Каков наилучший способ обработки длинных аргументов write ()? - PullRequest
0 голосов
/ 27 октября 2008

ОБНОВЛЕНИЕ: Спасибо всем за ответы. Я не понял, что document.write () устарел. Добавьте еще одну метку в колонку обучения. Я воспользуюсь советом, размещенным здесь, но оставлю оригинальный вопрос, чтобы ответы давали смысл в контексте исходного вопроса.


Я нахожусь в процессе написания некоторых довольно длинных аргументов write () и пытаюсь решить, какой из следующих примеров будет наилучшим, учитывая синтаксис, читаемость и производительность. Должен ли я

а. Держите их все в одной строке:

<script>

    var someVariable = "(<a href=\"http://www.example.com\">Link<\/a>)";

    document.write("<p>Supergroovalisticprosifunkstication and Supercalifragilisticexpialidocious are very long words.</p>" + someVariable + "<p>Dociousaliexpisticfragilicalirepus is Supercalifragilisticexpialidocious spelled backwards.</p>" + someVariable);

</script>

б. Разбейте их, добавив разрывы строк для улучшения читаемости:

<script>

    var someVariable = "(<a href=\"http://www.example.com\">Link<\/a>)";

    document.write("<p>Supergroovalisticprosifunkstication and Supercalifragilisticexpialidocious are very long words.</p>" 
        + someVariable
        + "<p>Dociousaliexpisticfragilicalirepus is Supercalifragilisticexpialidocious spelled backwards.</p>" 
        + someVariable);

</script>

с. Разбейте их, используя несколько переменных:

<script>

    var someVariable = "(<a href=\"http://www.example.com\">Link<\/a>)";

    var partOne = "<p>Supergroovalisticprosifunkstication and Supercalifragilisticexpialidocious are very long words.</p>"; 
    var partTwo = "<p>Dociousaliexpisticfragilicalirepus is Supercalifragilisticexpialidocious spelled backwards.</p>"; 

    document.write(partOne + someVariable + partTwo + someVariable);

</script>

Заранее спасибо.

Ответы [ 3 ]

3 голосов
/ 27 октября 2008

Моя внутренняя реакция: не делай этого . (Ваш пример плохой, вы не должны писать большие куски контента в вашем слое поведения.)

Всякий раз, когда вы должны сделать это, либо concat:

var longVar = 'asdfasdf asdf asdf asdfasdf asdfasdf asdf asdfasdf' +
    ' fasdf s9d0af asdf asdf0s,dv z-xcfva-sdfmwaert ' +
    'qersdfasdfasdfasdfasdf';
document.write(longVar);

Или, если он станет действительно длинным, производительность может увеличиться за счет объединения в массив:

var longVar = [
    'asdfasdf asdf asdf asdfasdf asdfasdf asdf asdfasdf',
    ' fasdf s9d0af asdf asdf0s,dv z-xcfva-sdfmwaert ',
    'qersdfasdfasdfasdfasdf'
].join('');
document.write(longVar);
0 голосов
/ 27 октября 2008

- и это плохой пример использования document.write(), поскольку он относится к 90-м годам и устарел с введением HTML4 в 1998 году ...

Если у вас есть что-то на стороне сервера, лучше обработать код там ...

По вопросу о конкатенации струн я согласен с отсутствием век! -)

РЕДАКТИРОВАТЬ (29/10)

Как комментарий к комментарию (мне нужен код-нотация)

<script type="text/javascript">
  window.onload = function(){
    var newD = document.createElement("div");
    newD.appendChild(document.createTextNode("Hello World"));
    document.getElementsByTagName("body")[0].appendChild(newD);
  }
</script>

Таким образом, все что угодно вставляется в документ ...

0 голосов
/ 27 октября 2008

Я бы написал это, однако его будет легче читать и поддерживать. Затем проверьте производительность. Если он слишком медленный, попробуйте постепенно улучшать алгоритм, пока скорость не станет приемлемой.

Итак, идеи по улучшению производительности: - убедитесь, что сценарий минимизирован. - сделать столько предварительной обработки на сервере и обслуживать «обработанный» скрипт.

Используя инструмент минимизации (например, jsMin), вы не будете испытывать никаких проблем, если для удобства чтения будете использовать пробелы и разрывы строк.

...