Улучшения JavaScript Intellisense в VS 2010
Это двадцатая статья из серии, которую я посвятил выходу VS 2010 и .NET 4.
Сегодняшний пост охватывает некоторые замечательные улучшения, которые грядут в Intellisense у VS 2010 и бесплатной Visual Web Developer 2010 Express для JavaScript. Он стал быстрее загружаться с большими скриптовыми файлами и поддерживает завершение выражений для еще большего количества сценариев, по сравнению с предыдущими версиями Visual Studio.
Улучшения в JavaScript Intellisense
Гораздо сложнее предоставлять поддержку Intellisense для такого динамического языка, как JavaScript , чем для таких строго типизированных языков, как C# и VB. Невозможно правильно оценить форму и структуру переменных, методов и т.п. без псевдо-запуска самого кода, так как JavaScript очень гибкий и может динамически изменять эти объекты.
Редактор JavaScript-кода в VS 2010 теперь наделен “интелектом”, который позволяет выполнять псевдо-код по мере ввода текста, таким образом intellisense сохраняет аккуратность при авто-дополнении. Ниже представлен упрощенный обзор насколько богатый и гибкий новый функционал в финальной версии.
Сценарий №1: Базовая оценка типа
Во время объявления переменной в JavaScript не нужно задавать тип данных. Тип определяется по привязанному значению. Так как VS 2010 производит псевдо-запуск кода в редакторе, он динамически определяет тип переменной и предоставляет свойственный коду intellisense, основанный на присвоенном значении переменной.
Например, обратите внимание, как VS 2010 предоставляет список дополнения для строки (мы ведь присвоили переменной строковое значение “foo”)
Если мы позже зададим ей числовое значение, то список предположений автоматически изменится и соответственно выдаст объекты для работы с числами:
Сценарий №2: Intellisense во время манипуляции объектами браузера
Довольно распространенным действием в JavaScript является работа с DOM страницы, а также работа с объектами браузера доступных на клиенте.
В предыдущих версиях Visual Studio так же была поддержка intellisense со стандартными объектами браузера, но оно не предоставляло помощи при более ухищренных сценариях (создание динамических переменных и методов). Псевдо-запуск кода в редакторе VS 2010 позволяет нам получить богатый intellisense для более широкого набора сценариев.
Например, ниже мы используем объект браузера window для создания глобальной переменной с именем “bar”. Обратите внимание на то, что мы получаем от intellisense, когда мы хотим использовать переменную после её объявления:
Когда мы присваиваем переменной “bar” числовое значение вместо строки, движок intellisense в VS 2010 корректно определяет её тип и изменяет список предложений для работы с числом:
Сценарий №3: Show must go on
В следствии псевдо-запуска кода в редакторе VS 2010, у вас есть возможность обрабатывать различные сценарии и везде и всегда будет работать intellisense.
Например, ниже мы используем цикл for и объект браузера window для динамического создания и задания имени нескольким динамическим переменным(bar1, bar2, bar3…bar9). Обратите внимание, движок intellisense редактора определяет и предоставляет список предположений и для них:
Так как переменные добавлены в объект браузера window они так же являются глобальными, они отображаются в списке глобальных переменных intellisense:
Вы не забыли? Определение типа все еще поддерживается. Так что, если мы присвоим динамической переменной строку то получим список для работы со строкой, если же это будет число, то тип так же изменится на числовой.
А теперь для развлечения заставим цикл for присваивать строку переменным, если счетчик четный (bar2, bar4, bar6) и числа, если счетчик нечетный (bar1, bar3, bar5):
И тут intellisense не подвел и все правильно вывел для строковой переменной “bar2” и “bar1” далее:
Не смотря на то, что приведенный пример является надуманным, создание переменных, методов и обработчиков событий на лету является распространенным явлением в многих JavaScript библиотеках. Многие популярные библиотеки используют техники упаковки, которые делают размер скрипта, как можно меньше. VS 2010 поддерживает парсинг и псев-дозапуск библиотек, которые применяют данный подход упаковки скрипта, давая вам улучшенную поддержку Intellisense прямо из коробки.
Итоги
Теперь Visual Studio 2010, включая бесплатную Visual Web Developer 2010 Express, предоставляют более богатую поддержку intellisense в JavaScript. Все это работает с большинством популярных JavaScript библиотек и должно помочь облегчить разработку клиентского JavaScript кода и AJAX сценариев в ваших ASP.NET приложениях.
Источник – Scott Gu