Jednou z novinek nového Visual Studia je nesrovnatelně lepší Intellisense pro psaní JavaScriptů. Pojďme si ji trochu přiblížit na následujících řádcích.
Kdysi byl pro mě JavaScript odporným jazykem bez ladu a skladu. Přibližně před rokem, se začala psát nová verze AMap postavená na API a frameworku Mootools. V rámci interního vzdělávání nás Dan zasvětil do tajů JavaScriptu a já pomalu začal objevovat jeho kouzlo. V průběh února jsem potřeboval psát nějaké AJAXové věci, a tak nastal čas se JavaScript naučit.
Zjistil jsem, že s MooToolama je to celkem sranda a postupem času člověk začne chápat víc a víc v různých souvislostech. Čím víc toho pak píše, začne se poohlížet po něčem, co by mu psaní ulehčilo. Zkoušel jsem Aptanu, ale ta mi moc nepomáhala, protože MooTooly neuměla. Zkoušel jsem i beta verze Orcasu, ale stejně to nebylo ono, aspoň mi to teď tak připadá…
Zkrátka, za poslední dva týdny jsem napsal JavaScriptu docela kopec, a poslední týden ve VS2008, takže můžu bezprostředně porovnat. No prostě s ním je to lepší. Konec románů a teď k věci.
Intellisense
Intellisense se nově objevuje po prvním napsaném písmenku, ne až po
tečce jako v předchozí verzi. Nabízí i klíčová slova, takže funguje
moje oblíbené ret mezera. Okénky intellisense jde
i zprůhlednit, pokud potřebujete kouknout na kód, který je pod ním.
Stačí podržet klávesu CTRL.
Intellisense je plněna parserem přilinkovaných JavaScriptů. Parser je podle mého názoru, ještě trošku v pubertě. Pokud píšete script, dokáže interpretovat, pouze to, co je před kurzorem. I když používá značnou cache, nedokáže vám nabídnout funkce, které jsou až dál.
Jelikož je JavaScript dynamicky typovaný, je tu občas problém, že parser nerozpozná aktuální typ a tak vám intellisense nenabídne nic. :) Toto chování by se dalo značně minimalizovat díky dokumentačním komentářům, kde se např. u parametrů dají nastavit datové typy. Snad v příští verzi.
Dokumentační komentáře
Aby byla intellisense živena kvalitním obsahem, přichází nové studio s dokumentačními komentáři, ve stylu jak je známe v C#, také v JavaScriptu. Hlavní rozdíl je, že se komentáře píší do těla funkce, nikoli před ní. A je tu i další chybka parseru, nedokáže zobrazovat v intellisense obsah dokumentace ze stejného souboru.
Jak tedy takové komentáře vypadají? Následovně:
function add(node) {
/// <summary>Přidá uzel do stromu.</summary>
/// <param name="node" type="TreeNode">Uzel.</param>
}
Dokumentační tag summary přidá popis funkce, v praxi to
vypadá asi následovně:

Tag param popisuje parametr funkce a v tomto případě i jeho
typ. Opět ukázka:

Reference na scripty
Pokud píšete něco většího, neobejdete se bez extrahování scriptů do
samostatných souborů. V tom případě, ale intellisense neví, co je
v ostatních souborech, a moc nám toho neukáže. Naštěstí je tu
pseudodokumentační tag reference pomocí něhož se jde odkazovat
na další scripty, jejichž kód využíváme (tradičně JS frameworky), nebo
dokonce i na ScriptService v projektu. Užití může být
následující:
/// <reference path="mootools.js" />
/// <reference path="/services/ajax.svc" />
Tento kód napíšeme na začátku souboru a studio už bude vědět. Občas se mi ale stává, že pokud provedu změnu v referencovaném souboru, změna se v intellisense neprojeví. Za vinu to kladu cacheování. Zatím 100% řešením, zdá se, je soubor zavřít a znovu otevřít. Po přeparsování už by měla být intellisense aktuální.
Uzávěr
Jak už jsem psal na začátku, podpora JavaScriptu ve Visual Studiu pokročila o pořádný kus dopředu, přesto má ale ještě pár much, které by stálo za to vychytat. S ohledem na to, jak Microsoft podporuje vývoj interpretů a kompilátorů pro dynamické jazyky, doufám, že se jejich podpora ve VS ještě zlepší.
Související
debuged by MiSHAK











Komentáře
Martin
17.05 - 1. prosince 2007 | #
Daniel Steigerwald
17.37 - 1. prosince 2007 | #
Tomik
18.23 - 1. prosince 2007 | #
Aleš Roubíček
19.02 - 1. prosince 2007 | #
Tomik
17.16 - 2. prosince 2007 | #
Radek Matěj
11.47 - 3. prosince 2007 | #
Aleš Roubíček
14.04 - 3. prosince 2007 | #
Radek Matěj
12.41 - 4. prosince 2007 | #
Daniel Steigerwald
05.11 - 23. prosince 2007 | #
Radek Matěj
09.20 - 3. ledna 2008 | #
Adam
19.58 - 10. března 2009 | #
Místo pro tvůj názor