Некоторое время я выступал против встраивания тегов на стороне сервера в код JavaScript, но сегодня был поставлен на место разработчиком, который казался неубежденным.
Рассматриваемый код был устаревшим приложением ASP, хотя это в значительной степени неважно, поскольку его можно в равной степени применить к ASP.NET или PHP (например).
Рассматриваемый пример вращался вокруг использования константы, которую они определили в коде ServerSide.
'VB
Const MY_CONST: MY_CONST = 1
If sMyVbVar = MY_CONST Then
'Do Something
End If
//JavaScript
if (sMyJsVar === "<%= MY_CONST%>"){
//DoSomething
}
Мои стандартные аргументы против:
- Внедрение скрипта: тег на стороне сервера может содержать код, который может сломать код JavaScript.
- Модульное тестирование. Сложнее изолировать блоки кода для тестирования
- Разделение кода: мы должны максимально разделять технологии веб-страниц.
Причина этого заключалась в том, что разработчику не нужно было определять константу в двух местах. Они рассудили, что, поскольку это значение находится под их контролем, оно не подлежит внедрению скриптов. Это уменьшило мое обоснование (1) до «Мы пытаемся сохранить стандарты простыми, и определение случаев исключения может сбить людей с толку».
Аргументы модульного тестирования и разделения кода также не выдерживали никакой критики, так как сама страница представляла собой ужасную смесь HTML, JavaScript, ASP.NET, CSS, XML... вы называете это, это было там. Никакой код, который должен был быть включен в эту страницу, не мог быть протестирован.
Так что я почувствовал себя немного педантом, настаивающим на том, чтобы код был изменен, учитывая обстоятельства.
Есть ли какие-либо дополнительные аргументы, которые могли бы поддержать мои рассуждения, или я на самом деле немного педантичен в этой настойчивости?