Ответ. Запишите по сравнению с <% = %>

Вы можете сделать это в MVC

[EnableCors(origins: "*", headers: "*", methods: "*")]
public ActionResult test()
{
     Response.AppendHeader("Access-Control-Allow-Origin", "*");
     return View();
}
26
задан AnonJr 22 October 2009 в 03:38
поделиться

14 ответов

Во-первых, наиболее важным фактором, на который необходимо смотреть, является простота обслуживания. Вы могли купить ферму сервера с деньгами и время, Вы будете в других отношениях ненужный при необходимости дешифровать грязный веб-сайт для поддержания его.

В любом случае, это не имеет значения. В конце дня весь ASP делает, просто выполняют сценарий! Синтаксический анализатор ASP берет страницу и преобразовывает <%= expression %> в прямые вызовы сценария, и каждый непрерывный блок HTML становится одним гигантским вызовом к Response.Write. Получающийся сценарий кэшируется и снова используется, если страница не изменяется на диске, который заставляет кэшируемый сценарий быть повторно вычисленным.

Теперь, слишком много использования <%= %> приводит к современной версии "запутанного кода": страшный "Суп тега". Вы не будете в состоянии сделать орлянку логики. С другой стороны, слишком много использования Ответа. Запишите средства, Вы никогда не будете в состоянии видеть страницу вообще, пока это не представит. Используйте <%= %> в надлежащих случаях для получения лучшего из обоих миров.

Мое первое правило состоит в том, чтобы обратить внимание в пропорции "переменного текста" к "статическому тексту".

, Если у Вас есть всего несколько мест с переменным текстом для замены, <%= %>, синтаксис очень компактен и читаем. Однако как эти <%= %> начинают накапливаться, они затеняют все больше HTML и в то же время, HTML затеняет все больше Вашей логики. Как правило, как только Вы начинаете брать о циклах, необходимо остановиться и переключиться на Ответ. Запишите'.

нет многих других жестких правил. Необходимо решить для конкретной страницы (или раздел страницы), какой более важен, или естественно тяжелее понять, или легче повредиться: Ваша логика или Ваш HTML? Это обычно один или другой (я видел сотни случаев обоих)

, Если Вы, логика более очень важна, необходимо взвесить больше к Response.Write; это заставит логику выделиться. Если Вы, HTML более очень важен, польза <%= %>, который сделает структуру страницы более видимой.

Иногда я должен был записать обе версии и сравнить их бок о бок для решения, какой более читаем; это - последнее средство, но сделайте это, в то время как код нов в Вашем уме, и Вы будете радоваться три месяца спустя, когда необходимо будет внести изменения.

41
ответ дан jjnguy 28 November 2019 в 06:11
поделиться

Я соглашаюсь с Jason, больше теперь, когда.NET предлагает платформу MVC как альтернативу той ужасной Веб-форме/Postback/ViewState.NET, начатая с.

, Возможно, это - потому что я был олдскульным классическим ASP/HTML/JavaScript и не программистом настольного приложения VB, который вызвал меня только к не grokk "Способ Веб-формы?" но я так рад, мы, кажется, идем полный круг и назад к методологии как , Jason относится к.

, Имея это в виду, я всегда выбирал бы включенную страницу, содержащую Вашу модель/логику и < % = %> маркеры в Вашем, эффективно шаблон HTML "представление". Ваш HTML будет более "читаемым" и Ваша логика, разделенная так, как классический ASP позволяет; Вы уничтожаете несколько птиц с тем камнем.

1
ответ дан Community 28 November 2019 в 06:11
поделиться

< % =Bazify () %> полезен при генерации HTML от короткое выражение, встроенное с некоторым Ответом HTML .

. Запишите, что "нечто" лучше, когда необходимо сделать [приблизительно 119] HTML, встроенный с большим количеством кода .

Технически, они - то же.

Разговор о Вашем примере, тем не менее, Ответ. Запишите, что код делает большую конкатенацию строк с & который является очень медленный в VBScript. Кроме того, как Russell Myers сказал , это не снабдило вкладками тот же путь как Ваш другой код, который мог бы быть неумышленным.

1
ответ дан Community 28 November 2019 в 06:11
поделиться

Необходимо структурировать это вопросы с точки зрения повторного использования кода и надежности кода (иначе удобочитаемость). Так или иначе нет действительно никакого увеличения производительности.

1
ответ дан Jason Jackson 28 November 2019 в 06:11
поделиться

Нет никакого повышения производительности, переключающегося на Ответ. Запишите, и это может быть быстрее, чтобы считать и поддержать использование нотации ярлыка.

1
ответ дан Cade Roux 28 November 2019 в 06:11
поделиться

<%= %> и остальные расширены до Response.Write(), таким образом, это - то же в конце.

1
ответ дан Mark Cidade 28 November 2019 в 06:11
поделиться

Мой классический ASP ржав, но:

Response.Write "<table>" & vbCrlf
Response.Write "<tr>" &vbCrLf
Response.Write "<tdclass=""someClass"">" & someVariable & "</td>" & vbCrLf 
Response.Write "</tr>" & vbCrLf 
Response.Write "</table>" & vbCrLf

это выполняется как есть. Это, однако:

<table>
  <tr>
     <td class="someClass"><%= someVariable %></td>
  </tr>
</table>

результаты в:

Response.Write"<table>\r\n<tr>\r\n<td class="someClass">"
Response.Write someVariable
Response.Write "</td>\r\n</tr>\r\n</table>"

, Где \r\n является vbCrLf

Так технически, второй более быстр. ОДНАКО различие было бы измерено в единственных миллисекундах, таким образом, я не буду волноваться об этом. Я был бы более обеспокоен, что лучший в значительной степени неудобен в сопровождении (особенно разработчиком UI HTML), где, поскольку второй тривиален для поддержания.

опоры @Euro Micelli - обслуживание является ключом (который является также, почему языки как Ruby, Python, и в прошлом (tho все еще....) C# и Java ударили торец по C, C++ и блоку - люди могли поддержать код, который является путем, более важным, чем бритье некоторых мс от загрузки страницы.

, Конечно, C/C++ и т.д. имеет их место...., но это не он.:)

2
ответ дан Nic Wise 28 November 2019 в 06:11
поделиться

Я предпочитаю <%= %> только, потому что это делает разработку JavaScript легче. Можно записать код, который ссылается средства управления как это

var myControl = document.getElementById('<%= myControl.ClientID %>');

, я могу тогда использовать то управление любым путем, я хотел бы в своем коде JavaScript, не имея необходимость волноваться о твердых кодированных идентификаторах.

Ответ. Запись может повредить некоторый код Ajax ASP.NET некоторых случаев, таким образом, я стараюсь избегать его если с помощью него для рендеринга определенных вещей в пользовательских элементах управления.

2
ответ дан Dan Herbert 28 November 2019 в 06:11
поделиться

Формат ответа представит HTML как так:

<table>
<tr>
<td class="someClass">variable value</td>
</tr>
</table>

В результате не только будет, средства произвести Ваш код быть нечитабельными, но результат будут также снабжены вкладками неуместно. Палка с другой опцией.

2
ответ дан Russell Myers 28 November 2019 в 06:11
поделиться

Я предпочитаю < % = %> метод в большинстве ситуаций по нескольким причинам.

  1. HTML представлен IDE так, чтобы это могло быть обработано, дав Вам подсказки, закрытие тега, и т.д.
  2. , добавление отступа Поддержания в выходном HTML легче, который может быть очень полезным с переделкой расположения.
  3. Новые строки, не добавляя vbCrLf на всем и снова для рассмотрения выходного источника.
3
ответ дан ManiacZX 28 November 2019 в 06:11
поделиться

Многие ответы здесь указывают, что два подхода производят тот же вывод и что выбором является один из стиля кодирования и производительности. Кажется его верившим что статическое содержание за пределами < % %> становится единственным Ответом. Записать.

Однако это было бы больше с точностью до, говорит код снаружи < % %> отправляется с BinaryWrite.

Ответ. Запишите берет строку Unicode и кодирует его к текущему Ответу. CodePage прежде, чем поместить его в буфер. Никакое такое кодирование не происходит для статического содержания в файле ASP. Символы снаружи < % %> выводится дословный байт для байта в буфер.

Следовательно, где Ответ. CodePage отличается, чем CodePage, который использовался, чтобы сохранить файл ASP, результаты двух подходов могут отличаться.

, Например, позволяет, говорят, что мне сохранили это содержание в стандартном page:-

<%
     Response.CodePage = 65001
     Response.CharSet = "UTF-8"
 %>
<p> The British £</p>
<%Response.Write("<p> The British £</p>")%>

кода 1252 года, первый абзац искажен, так как ВЈ не будет отправлен с помощью кодировки UTF-8, второе прекрасно, потому что предоставленная строка Unicode кодируется к UTF-8.

Следовательно с точки зрения производительности с помощью статического содержания предпочтительно, так как ему не нужно кодирование, но уход необходим, если сохраненная кодовая страница отличается от выходной кодовой страницы. Поэтому я предпочитаю сохранять как UTF-8, включать < % codepage=65001 и Ответ набора. Набор символов = "UTF-8".

9
ответ дан AnthonyWJones 28 November 2019 в 06:11
поделиться

Не принимая во внимание проблемы кода readibility/maintainibility, к которому обратились другие, Ваш вопрос был конкретно о производительности, когда у Вас есть несколько переменных для вставки - таким образом, я предполагаю, что Вы собираетесь быть повторением чего-то как Ваш фрагмент кода многократно. В этом случае необходимо получить лучшую производительность при помощи единственного Ответа. Запишите, не связывая все новые строки:

Response.Write "<table><tr><td class=""someClass"">" & someVar & "</td></tr></table>"

браузеру не нужны новые строки или вкладки или любое другое симпатичное форматирование для парсинга HTML. Если Вы идете для производительности, можно удалить все их. Вы также сделаете свой вывод HTML меньшим, который даст Вам более быстрое время загрузки страницы.

В случае единственной переменной, это действительно не имеет большое значение. Но для нескольких переменных, Вы хотите минимизировать контекстное переключение между HTML и ASP - Вы получите удар для каждого перехода от одного до другого.

Для помощи с readibility при создании более длинного оператора можно использовать продолжение строки VBScript charcter и вкладки в исходном коде (но не вывод) для представления структуры, не поражая производительность:

Response.Write "<table>" _
        & "<tr>" _
            & "<td class=""someClass"">" & someVar & "</td>" _
        & "</tr>" _
        & "<tr>" _
            & "<td class=""anotherClass"">" & anotherVar & "</td>" _
        & "</tr>" _
        & "<tr>" _
            & "<td class=""etc"">" & andSoOn & "</td>" _
        & "</tr>" _
    & "</table>"

Это не столь четки как версия HTML, но если Вы бросите много переменных в вывод (т.е. большое контекстное переключение между HTML и ASP), Вы будете видеть лучшую производительность.

, Стоит ли увеличение производительности того или были ли Вы более обеспеченным масштабированием Ваших аппаратных средств, отдельный вопрос - и, конечно, это - не всегда опция.

Обновление: посмотрите подсказки 14 и 15 в этой статье MSDN Len Cardinal для получения информации об улучшающейся производительности с Ответом. Буфер и избегающий контекстного переключения: http://msdn.microsoft.com/en-us/library/ms972335.aspx#asptips_topic15 .

9
ответ дан Simon Forrest 28 November 2019 в 06:11
поделиться

С персональной предпочтительной точки зрения я предпочитаю < % = %> метод, поскольку я чувствую его, обеспечивает лучшее разделительное содержание переменной от статического содержания.

12
ответ дан Jon P 28 November 2019 в 06:11
поделиться

Я пытаюсь использовать парадигму MVC при выполнении ASP/PHP. Это делает вещи самыми легкими поддержать, повторно спроектировать, подробно остановиться. В том отношении я склонен иметь страницу, которая представляет модель. Это - главным образом VB/PHP и устанавливает Вар для более позднего использования в представлении. Это также генерирует скрягу HTML когда цикличное выполнение для более позднего включения в представление. Тогда у меня есть страница, которая представляет представление. Это - главным образом HTML, наперченный < % = %> теги. Модель является #include-d в представлении, и далеко Вы идете. Логика контроллера обычно делается в JavaScript на третьей странице или серверной стороне.

2
ответ дан Jason Dufair 28 November 2019 в 06:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: