Это первая (и, надеюсь, не последняя) заметка об очень понравившемся мне продукте, который лично мне помог в разы сократить время на написание яваскриптового кода.
Итак, Script# - это компилятор C#, который на выходе вместо IL выдает яваскриптовый код. Создает его Nikhil Kothari, один из архитекторов в ASP.NET Team. Кроме непосредственно самого компилятора, в проект входит несколько сборок, а также шаблоны проектов для VS. На данный момент последней является версия 0.3.
Перечислю основные приемущества:
· Строгая типизация и сопутствующий ей интеллисенс.
· Строгая сингатура методов и делегатов.
· Ошибки, связанные с неверными типами или сигнатурой, стали ошибками исполнения
· Возможность использовать перечисления вместо строковых констант
· Расширяемость. Script# позволяет создавать прокси для любых классов и глобальных функций, написанных на JavaScript
· Script# содержит прокси для всех клиентских классов MS AJAX
· Все возможности C# в плане рефакторинга
· Удобен для создания типов, используемых в PageMethods
и недостатки:
· Требует создания отдельного проекта
· Неподдерживаются некоторые возможности C# 2.0 (например, generics, partial classes)
· Не для всех свойств DOM-элементов есть готовые прокси (особенно для тех, которые отсутствуют в IE)
· В проектах, совместимых с ASP.NET AJAX, не поддерживается foreach и события нужно объявлять явно (используя ключевые слова add/remove)
· Нет кастум-тула, который можно было бы использовать для кодогенерации прокси к PageMethods
При всех этих минусах, лично для меня плюсы перевешывают. Кроме того, многие проблемы излечимы. Об известных мне способах «излечения» расскажу в следующий раз.