Проблемы с организацией JavaScript кода в MVC проекте
У меня есть веб-приложение на ASP.NET MVC, где много JavaScript кода размещено прямо внутри представлений. Это создает некоторые неудобства и хотелось бы улучшить архитектуру.
Основные вопросы которые меня беспокоят:
1. Вынос скриптов в отдельные файлы
Можно ли переместить JavaScript функции в отдельные .js файлы, при этом сохранив возможность использования синтаксиса Razor для получения значений из модели?
2. Отладка JavaScript кода
Какие есть эффективные способы отладки приложения? Сейчас использую только alert() для проверки значений, но понимаю что это не лучший подход.
3. Логирование на клиентской стороне
Для серверной части C# использую log4net. Существует ли аналогичный способ логирования для JavaScript? Хотя бы вывод в секцию “Output” Visual Studio был бы полезен.
Буду благодарен за любые советы по улучшению работы с JavaScript в MVC проектах.
А почему не попробовать частичные представления для JS? Создай отдельный .cshtml только под скрипты, используй там Razor синтаксис и рендери где нужно. По отладке - девтулзы браузера лучше алертов, там брейкпоинты можно ставить.
По опыту - лучше через JSON сериализацию. Делаешь @Html.Raw(Json.Encode(Model)), записываешь в JS переменную, потом используешь в отдельном файле. Для отладки F12 намного эффективнее - видно Network и Sources с брейкпоинтами. Для логирования напиши простую обертку над console, которая отключается в продакшене.
Для логирования использую console.log() вместо alert() - гораздо удобнее. Все идет в консоль браузера и не мешает. В продакшене можно взять log4javascript или NLog.js. Со скриптами делаю так: основную логику выношу в отдельные файлы, данные из модели передаю через ViewBag в глобальные переменные или data-атрибуты. В js файле уже их использую. Немного костыльно, но работает надежно.