Rozszerzanie JavaScript IntelliSense
Funkcja rozszerzania JavaScript IntelliSense umożliwia dostosowywanie wyników technologii IntelliSense w edytorze języka JavaScript dla bibliotek innych firm.Może to zwiększyć doświadczenia programistów, którzy korzystają z tych bibliotek.
Usługa języka JavaScript zapewnia funkcje technologii IntelliSense bibliotek JavaScript innej firmy, które są dodawane do projektu.Większość bibliotek Kończenie instrukcji jest dostarczany automatycznie przez usługę języka.Na poniższej ilustracji przedstawiono przykład Kończenie instrukcji:
Jeśli biblioteka zawiera opisy zmiennych, funkcji i obiektów w standardowych znaczników komentarza JavaScript (/ /), można automatycznie korzystać z funkcji rozszerzeń IntelliSense, które dostarczają opisowe informacje w oknie wyskakującym, który pojawia się po prawej stronie elementów listy zakończenia lub wpisując nawias otwierający w wywołaniu funkcji domyślnie.Komentarze w polu wyskakującego zawiera opis elementu członkowskiego.Poniższy przykład pokazuje wyskakującego okienka Lista zakończenia.
Dalsza poprawa doświadczenia autora, można przekazywać informacje o typie programiści z wyskakującego okienka.Za pomocą skryptu JavaScript można podać informacje typu Komentarze dokumentacji XML (JavaScript) zamiast znaczników komentarzy standardowych.Możesz dodać komentarzy dokumentacji XML przy użyciu znaczników komentarzy triple ukośnik (/ / /) i zdefiniowany zbiór elementów XML.
Alternatywnie można podać informacje o typie za pomocą technologii JavaScript IntelliSense rozszerzalności.Ta funkcja umożliwia dostosowywanie wyników IntelliSense tworząc rozszerzeń języka JavaScript i dodanie ich do kontekstu skryptu.W rozszerzeniu, czyli plik JavaScript, zapisać się do zdarzenia, które są udostępniane przez intellisense obiektu Usługa języka.Rozszerzalność JavaScript IntelliSense jest zalecane rozwiązanie dla bibliotek, jeśli wzór zachowanie w bibliotece uniemożliwia obsługę języka JavaScript zapewniające żądany poziom obsługi technologii IntelliSense, a jeśli alternatywa dla deklaracyjne komentarzy dokumentacji XML jest także potrzebna.Dostosowując wyniki IntelliSense, można utworzyć pierwszą klasą doświadczenia IntelliSense, niezależnie od tego, wzorców zachowań, które mogą ograniczać możliwości domyślny usług językowych.Aby uzyskać więcej informacji, zobacz Uzupełnianie składni dla identyfikatorów.
Dodawanie rozszerzenia do kontekstu skryptu
O przedłużenie IntelliSense ma być wykonane musi zostać dodane do bieżącego kontekstu skryptu.Rozszerzenia mogą być automatycznie dodawane do kontekstu skryptu przez mechanizm automatycznego wykrywania lub można dodać rozszerzenia do kontekstu skryptu ręcznie przy użyciu grupy odniesienia lub Dyrektywa referencyjna.
Mechanizm automatycznego odnajdywania umożliwia usługi języka, aby automatycznie znaleźć rozszerzeń, które należy wykonać Konwencja nazewnictwa plików libraryname. intellisense.js i że znajdują się w tym samym katalogu co biblioteki, do którego stosuje się rozszerzenie.Na przykład prawidłowym rozszerzeniem dla biblioteki jQuery będzie jQuery.intellisense.js.Dla bardziej restrykcyjnych rozszerzenia jQuery można użyć nazw plików, takich jak jQuery-1.7.1.intellisense.js (rozszerzenie określonej wersji) lub jQuery.ui.intellisense.js (rozszerzenie dla biblioteki jQuery o zakresie).Najbardziej restrykcyjne wersji rozszerzenia jest używana, jeśli znajduje się więcej niż jedno rozszerzenie dla danej biblioteki.
Jeśli chcesz użyć rozszerzenia dla wszystkich plików projektu JavaScript, zamiast tego można dodać rozszerzenia z grupą odwołania.Istnieje kilka rodzajów grupy odniesienia, albo takie, które zawierają odwołania niejawna i tych, które zawierają odwołania dedykowany pracownik.Aby dodać rozszerzenie, zazwyczaj trzeba albo dodać ten plik jako grupę niejawne odwołanie niejawna (Windows), niejawna (sieć Web).Niejawna odwołania znajdują się w zakres dla każdego pliku js, otwarty w edytorze kodu.Korzystając z tej metody, trzeba dodać rozszerzenie i plik, który jest uzupełnienie rozszerzenie.
Użycie IntelliSense strona Opcje okno dialogowe, aby dodać rozszerzenie jako grupa odwołania.Dostęp można uzyskać IntelliSense strony, wybierając Narzędzia, Opcje na pasku menu, a następnie określić Edytor tekstu, JavaScript, IntelliSense, odwołania.Aby uzyskać więcej informacji na temat grupy odniesienia, zobacz JavaScript IntelliSense i Opcje, edytor tekstu, JavaScript, IntelliSense.
Jeśli chcesz użyć rozszerzenia dla określonego zestawu plików, należy użyć dyrektywy odniesienie.Przy użyciu tej metody należy odwoływać się do rozszerzenia i plik, który jest uzupełnienie rozszerzenie.Aby uzyskać informacje dotyczące korzystania z dyrektywy odniesienie, zobacz JavaScript IntelliSense.
Obsługa zdarzeń technologii IntelliSense
Funkcja rozszerzalności pozwala dostosować wyniki IntelliSense, subskrybowanie zdarzeń, takich jak statementcompletion zdarzenie usługi języka intellisense obiektu.Proste rozszerzenie, które jest używane przez usługę języka, aby ukryć składniki, które rozpoczynają się od znaku podkreślenia z Kończenie instrukcji można znaleźć w poniższym przykładzie.Ten kod jest zawarty w underscorefilter.js i znajduje się w \ścieżka instalacji programu Visual Studio\JavaScript\References folder.
intellisense.addEventListener('statementcompletion', function (event) {
if (event.targetName === "this") return;
var filterRegex;
if (event.target === undefined || event.target === window)
filterRegex = /^_.*\d{2,}/;
else
filterRegex = /^_.*/;
event.items = event.items.filter(function (item) {
return !filterRegex.test(item.name);
});
});
W powyższym kodzie, sprawdza rozszerzenie Nazwa_obiektu_docelowego właściwość i miejsce docelowe właściwość właściwości statementcompletion obiekt zdarzenia, aby wykluczyć obiektów, takich jak this i windoworaz w celu zapewnienia, że mogą być rozpoznawane na liście ukończonych operacji prawidłową instrukcją.Jeśli na liście ukończonych operacji można zidentyfikować, rozszerzenie aktualizuje Kończenie instrukcji elementy właściwości kolekcji przez filtrowanie elementów członkowskich, które rozpoczynają się od znaku podkreślenia.
Dodatkowe przykłady, Szukaj w \ścieżka instalacji programu Visual Studio\JavaScript\References folder.W tym folderze plik showPlainComments.js zawiera przykłady użycia innych zdarzeń zapewnia obsługę technologii IntelliSense domyślne standardowych znaczników komentarza JavaScript (/ /).Jak underscorefilter.js showPlainComments.js jest już dostępny jako rozszerzenie pracy i widać informacji wynikowych IntelliSense, używając znaczników komentarzy w kodzie dla zmiennych, funkcji i obiektów.Aby uzyskać dodatkowe przykłady, zobacz Przykłady kodu.
Przestroga |
---|
Zmodyfikowanie plików rozszerzeń, dołączone do programu Visual Studio, możesz wyłączyć JavaScript IntelliSense lub funkcja, obsługiwane przez rozszerzenie. |
W kodzie rozszerzenie, można tworzyć programy obsługi dla następujących typów zdarzeń, za pomocą addEventListener:
statementcompletion, która dodaje funkcję obsługi zdarzeń zakończenia instrukcji.Kończenie instrukcji zawiera listę członków dla określonego typu, który pojawia się po wpisaniu znak specjalny, taki jak znak kropki (.) lub listę identyfikatorów, który pojawia się podczas pisania lub po naciśnięciu klawisza CTRL + J.Program obsługi odbiera obiekt zdarzenia typu CompletionEvent, który obsługuje następujące elementy: elementy właściwości, miejsce docelowe właściwość, Nazwa_obiektu_docelowego właściwość, i zakres właściwości.
signaturehelp, która dodaje obsługę programu dla informacje o parametrach IntelliSense.Informacje o parametrach udostępnia informacje o liczbie, nazwiskach i typy parametrów wymaganych przez funkcję.Program obsługi odbiera obiekt zdarzenia typu SignatureHelpEvent, który obsługuje następujące elementy: miejsce docelowe właściwość, parentObject właściwość, Właściwość functionComments, Właściwość functionHelp.
statementcompletionhint, która dodaje obsługę programu dla IntelliSense szybkie informacje.Wyskakujące okienko informacji pokazuje pełnego zgłoszenia dla identyfikatorów w kodzie.Program obsługi odbiera obiekt zdarzenia typu CompletionHintEvent, który obsługuje następujące elementy: Właściwość completionItem, i Właściwość symbolHelp.
Przykłady, które pokazują funkcji IntelliSense, takie jak Kończenie instrukcji, informacje o parametrach i szybkie informacje, zobacz Korzystanie z IntelliSense.
[!UWAGA]
W języku JavaScript szybkie informacje odnosi się do wyskakującego okienka, pojawiający się z prawej strony listy zakończenia.Nie można ręcznie wywołać szybkie informacje.
Technologia IntelliSense obiektu
W poniższej tabeli przedstawiono funkcje, które są dostępne dla intellisense obiektu.intellisense Obiekt jest dostępny tylko w czasie projektowania.
Funkcja |
Opis |
---|---|
addEventListener(type, handler); |
Dodaje Obsługa zdarzeń dla zdarzenia IntelliSense. typejest wartością ciągu.Valid values include statementcompletion, signaturehelp, and statementcompletionhint. handlerjest funkcję obsługi zdarzenia, która odbiera obiekt zdarzenia jednego z następujących typów:
Przykłady, które używają tej funkcji, zobacz Przykłady kodu. |
annotate(obj, doc); |
Określa dokumentacji dla danego obiektu, kopiując komentarzy dokumentacji z jednego obiektu do innego obiektu. objOkreśla obiekt do którego chcesz skopiować w dokumentacji. docOkreśla obiekt, z którego chcesz skopiować w dokumentacji. Na przykład, który pokazuje, jak korzystać z tej funkcji, zobacz Dodawanie adnotacji technologii IntelliSense. |
getFunctionComments(func); |
Zwraca komentarze do podanej funkcji. funcOkreśla funkcję, dla którego komentarze są zwracane. Można ustawić func parametru za pomocą completionItem.value. Zwrócone functionComments obiekt zawiera następujące elementy: above, inside, i paramComment.Aby uzyskać więcej informacji, zobacz omówienie właściwości Właściwość functionComments. getFunctionCommentsmoże być wywołana tylko z jednej z obsługi zdarzeń, które są zarejestrowane przez addEventListener. Na przykład, który pokazuje, jak korzystać z tej funkcji, zobacz temat \ścieżka instalacji programu Visual Studio\JavaScript\References\showPlainComments.js. |
logMessage(msg); |
Wysyła komunikaty diagnostyczne do okna dane wyjściowe. msgto ciąg, który zawiera wiadomość. Na przykład, który pokazuje, jak korzystać z tej funkcji, zobacz Wysyłanie wiadomości do okna dane wyjściowe. |
nullWithCompletionsOf(value); |
Zwraca wartość null specjalne dla których ustalana jest przez przekazany obiekt listy zakończenia value parametru. valueOkreśla listy zakończenia dla zwrócona wartość.valuemogą być dowolnego typu. Wartość zwracana wartość null jest traktowana jako wartość null w czasie projektowania, ale listy zakończenia dla wartości zwracanej jest taka sama, jak listy zakończenia dla value parametru. Jednym z zastosowań tej funkcji jest zapewnienie technologii IntelliSense dla wartości zwracanej, gdy typ zwracany jest przewidywalne w czasie wykonywania, ale wartość zwracana jest null w czasie projektowania. |
redirectDefinition(func, definition); |
Instruuje IntelliSense do funkcji podanej definicji zamiast pierwotną funkcję func, jeśli parametr pomocy lub Przejdź do definicji jest wymagane. funcOkreśla funkcję docelowej. definitionOkreśla funkcję służące zamiast funkcji docelowego informacje o parametrach i Przejdź do definicji. |
setCallContext(func, thisArg); |
Ustawia kontekst wywołań lub zakresu, do podanej funkcji. funcOkreśla funkcję, dla którego należy ustawić zakres. thisArgjest obiektem literału, do której this słowa kluczowego można odwołać się do, który określa nowy zakres dla elementu członkowskiego.Argumenty przekazywane w tym parametrze, można dołączyć na przykład,intellisense.setCallContext(func, { thisArg: "", args: [23,2] }); setCallContextzapewnia zachowanie jest podobne do Function.prototype.bind, z tym, że on używany tylko do obsługi technologii IntelliSense w czasie projektowania.Można użyć setCallContext Aby ustawić zakres funkcji, jeśli musisz symulacji wywołanie kodu, który jest w przeciwnym razie osiągalny, tak, że kiedy wywołujemy funkcję, wywołanie funkcji będzie zawierać właściwy zakres i argumenty. |
undefinedWithCompletionsOf(value); |
Zwraca specjalną wartość undefined, dla których listy zakończenia ustalana jest przez przekazany obiekt value parametru. valueOkreśla listy zakończenia dla zwrócona wartość.valuemogą być dowolnego typu. Niezdefiniowany zwrócić wartość jest traktowana jako niezdefiniowane w czasie projektowania, ale zakończenia lista dla wartości zwracanej jest taka sama, jak listy zakończenia dla value parametru. Jednym z zastosowań tej funkcji jest zapewnienie technologii IntelliSense dla wartości zwracanej, gdy typ zwracany jest przewidywalne w czasie wykonywania, ale wartość zwracana jest niezdefiniowana w czasie projektowania. |
version() |
Zwraca informacje o wersji programu Visual Studio. |
Członków zdarzenia
W poniższych sekcjach opisano elementy, które są dostępne w obiekcie zdarzenia dla następujących zdarzeń: statementcompletion, signaturehelp, i statementcompletionhint.
Właściwość completionItem
Zwraca identyfikator, znane jako elementu zakończenia, dla którego wnioskuje się okienko wyskakujące informacji.Ta właściwość jest dostępna dla statementcompletionhint obiekt zdarzenia i dla elementy właściwości właściwość statementcompletion obiekt zdarzenia.
Zwraca wartość: completionItem obiektu
Poniżej przedstawiono członków completionItem obiekt:
name.Odczyt/zapis, gdy używane w items kolekcji; inaczej, tylko do odczytu.Zwraca wartość typu ciąg, który identyfikuje element zakończenia.
kind.Odczyt/zapis, gdy używane w items kolekcji; inaczej, tylko do odczytu.Zwraca ciąg, który reprezentuje typ elementu zakończenia.Możliwe wartości są metody, pola właściwości, parametr, zmienna i zarezerwowane.
glyph.Odczyt/zapis, gdy używane w items kolekcji; inaczej, tylko do odczytu.Zwraca wartość typu ciąg, który reprezentuje ikona jest wyświetlana na liście zakończenia.Możliwe wartości dla glyph należy użyć następującego formatu: vs:glyphType, gdzie glyphType odnosi się do członków niezależny od języka, w StandardGlyphGroup wyliczenie.Na przykład vs:GlyphGroupMethod jest jedną dopuszczalną wartość dla glyph.Gdy glyph nie jest ustawiona, kind właściwość określa domyślną ikonę.
parentObject.Tylko do odczytu.Zwraca obiekt nadrzędny.
value.Tylko do odczytu.Zwraca obiekt, który reprezentuje wartość elementu zakończenia.
comments.Tylko do odczytu.Zwraca wartość typu ciąg, który zawiera komentarze, które znajdują się powyżej pola lub zmiennej.
scope.Tylko do odczytu.Zwraca zakres elementu zakończenia.Możliwe wartości są globalne, lokalne, parametr i element.
elementy właściwości
Pobiera lub ustawia tablicę instrukcja zakończenia elementów.Każdy element w tablicy jest Właściwość completionItem obiektu.items Właściwość jest dostępna dla statementcompletion obiekt zdarzenia.
Wartość zwrócona: tablica
Właściwość functionComments
Zwraca komentarze dla funkcji.Ta właściwość jest dostępna dla signaturehelp obiekt zdarzenia.
Zwraca wartość: comments obiektu
Poniżej przedstawiono członków comments obiekt:
above.Zwraca powyższych funkcji uwag.
inside.Zwraca komentarze wewnątrz funkcji, zazwyczaj w formacie VSDoc.
paramComments.Zwraca tablicę reprezentującą komentarze dla każdego parametru w funkcji.Elementy członkowskie macierzy obejmują:
name.Zwraca wartość typu Ciąg reprezentującą nazwę parametru.
comment.Zwraca ciąg, który zawiera komentarz parametru.
Właściwość functionHelp
Zwraca wartość pomocy dla funkcji.Ta właściwość jest dostępna dla signaturehelp obiekt zdarzenia.
Zwraca wartość: functionHelp obiektu
Poniżej przedstawiono członków functionHelp obiekt:
functionName.Odczyt/zapis.Zwraca ciąg zawierający nazwę funkcji.
signatures.Odczyt/zapis.Pobiera lub ustawia tablicę sygnatury funkcji.Każdy element w tablicy jest signature obiektu.Niektóre signature właściwości, takie jak locid, odpowiadają wspólnego Komentarze dokumentacji XML (JavaScript) atrybuty.
Członkowie signature obiektu obejmują:
description.Odczyt/zapis.Zwraca wartość typu ciąg, który opisuje funkcję.
locid.Odczyt/zapis.Zwraca identyfikator ciągu, który zawiera lokalizację informacji dotyczących funkcji.
helpKeyword.Odczyt/zapis.Zwraca wartość typu ciąg, który zawiera słowa kluczowego pomocy.
externalFile.Odczyt/zapis.Zwraca wartość typu ciąg reprezentujący plik, który zawiera identyfikator Członkowskich.
externalid.Odczyt/zapis.Zwraca wartość typu ciąg, który reprezentuje identyfikator elementu członkowskiego funkcji.
params.Odczyt/zapis.Pobiera lub ustawia tablicę parametrów dla funkcji.Każdy element w tablicy parametrów jest parameter obiekt, który ma właściwości, które odpowiadają następujące atrybuty <param> (JavaScript) element:
name.Odczyt/zapis.Zwraca wartość typu ciąg, który reprezentuje nazwę parametru.
type.Odczyt/zapis.Zwraca wartość typu ciąg, który reprezentuje typ parametru.
elementType.Odczyt/zapis.Jeśli typem jest Array, zwraca wartość typu Ciąg reprezentującą typ elementów w tablicy.
description.Odczyt/zapis.Zwraca ciąg opisujący parametr.
locid.Odczyt/zapis.Zwraca identyfikator ciągu, który zawiera lokalizację informacji dotyczących funkcji.
optional.Odczyt/zapis.Zwraca ciąg, który wskazuje, czy parametr jest opcjonalny.trueWskazuje, że parametr jest opcjonalny; falseWskazuje, że nie jest.
returnValue.Odczyt/zapis.Pobiera lub ustawia obiekt wartość zwracana z właściwości, które odpowiadają następujące atrybuty <returns> (JavaScript) element:
type.Odczyt/zapis.Zwraca wartość typu ciąg, który reprezentuje typ zwracany.
elementType.Odczyt/zapis.Jeśli typem jest Array, zwraca wartość typu Ciąg reprezentującą typ elementów w tablicy.
description.Odczyt/zapis.Zwraca ciąg opisujący wartości zwracanej.
locid.Odczyt/zapis.Zwraca identyfikator ciągu, który zawiera lokalizację informacji dotyczących funkcji.
helpKeyword.Odczyt/zapis.Zwraca wartość typu ciąg, który zawiera słowa kluczowego pomocy.
externalFile.Odczyt/zapis.Zwraca wartość typu ciąg reprezentujący plik, który zawiera identyfikator Członkowskich.
externalid.Odczyt/zapis.Zwraca wartość typu ciąg, który reprezentuje identyfikator elementu członkowskiego funkcji.
parentObject właściwość
Zwraca obiekt nadrzędny funkcji składowej.Na przykład dla document.getElementByID, parentObject zwraca document obiektu.Ta właściwość jest dostępna dla signaturehelp obiekt zdarzenia.
Wartość zwrócona: obiekt
miejsce docelowe właściwość
Zwraca obiekt, który reprezentuje element po lewej stronie znaku wyzwalacz, który jest kropka (.).Do funkcji target zwraca wartość funkcji, dla którego wnioskuje się informacje o parametrach.Ta właściwość jest dostępna dla statementcompletion i signaturehelp obiektów zdarzeń.
Wartość zwrócona: obiekt
Nazwa_obiektu_docelowego właściwość
Zwraca wartość typu ciąg, który reprezentuje obiekt docelowy.Na przykład dla "to." targetName zwraca "to".Dla "A.B" (gdy kursor znajduje się po "B") targetName zwraca wartość "B".Ta właściwość jest dostępna dla statementcompletion obiekt zdarzenia.
Wartość zwrócona: ciąg
Właściwość symbolHelp
Zwraca element zakończenia, dla którego wnioskuje się okienko wyskakujące informacji.Ta właściwość jest dostępna dla statementcompletionhint obiekt zdarzenia.
Zwraca wartość: symbolHelp obiektu.
Niektóre właściwości symbolHelp obiektu, takie jak locid, odpowiadają wspólnego Komentarze dokumentacji XML (JavaScript) atrybuty.
Poniżej przedstawiono członków symbolHelp obiekt:
name.Odczyt/zapis.Zwraca ciąg zawierający Nazwa identyfikatora.
symbolType.Odczyt/zapis.Zwraca wartość typu ciąg, który reprezentuje typ symbolu.Możliwe wartości obejmują nieznany, wartość logiczna, numer, ciąg, obiektu, funkcji, tablicy, daty i Regex.
symbolDisplayType.Odczyt/zapis.Zwraca ciąg zawierający nazwę typu, aby wyświetlić.If symbolDisplayType isn't set, symbolType is used.
elementType.Odczyt/zapis.Jeśli symbolType jest Array, zwraca wartość typu Ciąg reprezentującą typ elementów w tablicy.
scope.Odczyt/zapis.Zwraca ciąg, który reprezentuje zakres symbolu.Możliwe wartości obejmują globalne, lokalne, parametr, a członek.
description.Odczyt/zapis.Zwraca wartość typu ciąg, który zawiera opis symbolu.
locid.Odczyt/zapis.Zwraca identyfikator ciąg, który zawiera informacje o lokalizacji o symbolu.
helpKeyword.Odczyt/zapis.Zwraca wartość typu ciąg, który zawiera słowa kluczowego pomocy.
externalFile.Odczyt/zapis.Zwraca wartość typu ciąg reprezentujący plik, który zawiera identyfikator Członkowskich.
externalid.Odczyt/zapis.Zwraca wartość typu ciąg, który reprezentuje identyfikator elementu członkowskiego symbolu.
functionHelp.Odczyt/zapis.Zwraca Właściwość functionHelp, który może zawierać informacje po symbolType jest funkcją.
zakres właściwości
Zwraca zakres zakończenia zdarzenia.Możliwe wartości dla zakończenia zakres są globalne i członków.Ta właściwość jest dostępna dla statementcompletion obiekt zdarzenia.
Wartość zwrócona: ciąg
Debugowanie rozszerzeń technologii IntelliSense
Nie można debugować rozszerzenia, ale można użyć Technologia IntelliSense obiektu funkcję wysyłania informacji do okna Visual Studio produkcji.Na przykład, który pokazuje, jak korzystać z tej funkcji, zobacz Wysyłanie wiadomości do okna dane wyjściowe dalszej części tego tematu.Dla logMessage do pracy, co najmniej jedna procedura obsługi zdarzeń musi być zarejestrowany w rozszerzenie.
Przykłady kodu
Ta sekcja zawiera przykłady kodu, które przedstawiają metody korzystania z interfejsów API rozszerzania IntelliSense.Istnieją również inne sposoby użycia tych interfejsów API.Aby uzyskać dodatkowe przykłady, zobacz następujące pliki w \ścieżka instalacji programu Visual Studio\JavaScript\References folder.Te nad przykłady używane przez usługę języka JavaScript.
underscoreFilter.js.Ten kod ukrywa prywatnych elementów członkowskich z technologii IntelliSense.Zawiera obsługę zdarzeń dla statementcompletion zdarzenia.
showPlainComments.js.Ten kod zapewnia obsługę technologii IntelliSense dla standardowych komentarzy.Zawiera obsługę zdarzeń dla signaturehelp i statementcompletionhint zdarzenia.
Dodawanie adnotacji technologii IntelliSense
Poniższa procedura pokazuje, jak zapewnia obsługę technologii IntelliSense w dokumentacji innej biblioteki bez modyfikowania biblioteki bezpośrednio.Aby to zrobić, można użyć intellisense.annotate do rozszerzenia.
Na przykład do pracy potrzebne są następujące pliki JavaScript w projekcie:
demoLib.js, który jest plikiem projektu, który reprezentuje innej biblioteki.
demoLib.intellisense.js, które jest rozszerzenie technologii IntelliSense.Ten plik nie musi być włączone do projektu, ale to musi być w tym samym folderze, co exampleLib.js.
appCode.js, który jest plikiem projektu, który reprezentuje kod aplikacji.
Aby dodać adnotację technologii IntelliSense
Dodaj następujący kod do demoLib.js.
function someFunc(a) { }; var rectangle;
Dodaj następujący kod do demoLib.intellisense.js.
intellisense.annotate(someFunc, function (a) { /// <signature> /// <summary>Description of someFunc</summary> /// <param name="a">Param a</param> /// </signature> }); intellisense.annotate(window, { // This is a comment on a global variable named rectangle. rectangle: undefined });
Jako pierwszy wiersz w appCode.js, należy dodać następującą dyrektywę odniesienia.Ścieżkę używaną w tym polu oznacza, że pliki JavaScript są w tym samym folderze.
/// <reference path="demoLib.js" />
W appCode.js wpisz następujący kod.Zobaczysz komentarzy dokumentacji XML w rozszerzeniu wyświetlane jako informacje o parametrach IntelliSense.
W appCode.js wpisz następujący kod.Podczas pisania, zobaczysz standardowe komentarze do rozszerzenia wyświetlane jako technologia IntelliSense szybkie informacje.
Wysyłanie wiadomości do okna dane wyjściowe
Poniżej przedstawiono procedurę do wysyłania wiadomości do okna dane wyjściowe.Można wysyłać wiadomości do debugowania rozszerzenia IntelliSense.
Na przykład do pracy potrzebne są następujące pliki JavaScript w projekcie:
exampleLib.js, który jest plikiem projektu, który reprezentuje innej biblioteki.
exampleLib.intellisense.js, które jest rozszerzenie technologii IntelliSense.Ten plik nie musi być włączone do projektu, ale to musi być w tym samym folderze, co exampleLib.js.
appCode.js, który jest plikiem projektu, który reprezentuje kod aplikacji.
Aby wysłać wiadomość do okna dane wyjściowe
Dodaj następujący kod do exampleLib.js.
var someVar = { a: 1, b: 'hello' };
Dodaj następujący kod do exampleLib.intellisense.js.
intellisense.addEventListener('statementcompletion', function (e) { // Prints out statement completion info: Either (1) the member // list, if the trigger character was typed, or (2) the // statement completion identifiers. // e.target represents the object left of the trigger character. intellisense.logMessage( e.target ? 'member list requested, target: ' + e.targetName : 'statement completion for current scope requested'); // Prints out all statement completion items. e.items.forEach(function (item) { intellisense.logMessage('[completion item] ' + item.name + ', kind:' + item.kind + ', scope:' + item.scope + ', value:' + item.value); }); });
Jako pierwszy wiersz w appCode.js, należy dodać następującą dyrektywę odniesienia.Ścieżkę używaną w tym polu oznacza, że pliki JavaScript są w tym samym folderze.
/// <reference path="exampleLib.js" />
W oknie dane wyjściowe wybierz Obsługę języka JavaScript w pokazać dane wyjściowe z listy.(Aby wyświetlić okno Output, zaznacz produkcji z menu Widok.)
W appCode.js wpisz następujący kod.Podczas pisania, w oknie dane wyjściowe wyświetlane komunikaty z usługi języka.Do pierwszej wiadomości w oknie dane wyjściowe wskazuje, że wnioskowano Kończenie instrukcji dla bieżącego zakresu.
some
Oto częściowy obraz danych wyjściowych, które powinny być widoczne.
03:16:14.3113: statement completion for current scope requested 03:16:14.3113: [completion item] break, kind:reserved, scope:undefined, value:undefined 03:16:14.3113: [completion item] case, kind:reserved, scope:undefined, value:undefined 03:16:14.3113: [completion item] catch, kind:reserved, scope:undefined, value:undefined …
Wybierz polecenie Wyczyść wszystkie przycisk w oknie dane wyjściowe.
Wpisz następujący kod.Do pierwszej wiadomości w oknie dane wyjściowe wskazuje, że wnioskowano Lista członków.
someVar.
Oto częściowy obraz wyjściowy, powinien być widoczny:
03:17:43.4032: member list requested, target: someVar 03:17:43.4032: [completion item] a, kind:field, scope:member, value:1 03:17:43.4032: [completion item] b, kind:field, scope:member, value:hello 03:17:43.4032: [completion item] constructor, kind:method, scope:member, value: …
Zmienianie ikon technologii IntelliSense
Poniższa procedura pokazuje, jak zmienić ikony, domyślnie wyświetlany przez technologię IntelliSense.Może to być przydatne, gdy użytkownik poda informacje IntelliSense dotyczących pojęć związanych z specyficzne dla biblioteki, takich jak obszary nazw, klasy, interfejsy i wyliczenia.
Aby ikona dostępnych wartości, zobacz StandardGlyphGroup.
Na przykład do pracy potrzebne są następujące pliki JavaScript w projekcie:
exampleLib.js, który jest projektem pliku danej biblioteki represens stronę trzecią.
exampleLib.intellisense.js, które jest rozszerzenie technologii IntelliSense.Ten plik nie musi być włączone do projektu, ale to musi być w tym samym folderze, co exampleLib.js.
appCode.js, który jest plikiem projektu, który reprezentuje kod aplikacji.
Aby zmienić ikony
Dodaj następujący kod do exampleLib.js.
function Namespace(name) { this._isNamespace = true; window[name] = this; }; function Enum(values) { var e = Object.create(values); e._isEnum = true; return e; }; var SomeNamespace = new Namespace('SomeNamespace'); // A constructor function is considered a class. SomeNamespace.SomeClass1 = function () { } SomeNamespace.Enum1 = new Enum({ VALUE1: 0, VALUE2: 1 });
Dodaj następujący kod do exampleLib.intellisense.js.
intellisense.addEventListener('statementcompletion', function (e) { e.items.forEach(function (item) { // Detect a namespace by using the _isNamespace flag. if (item.value && item.value._isNamespace) { item.glyph = 'vs:GlyphGroupNamespace'; } if (item.parentObject && item.parentObject._isNamespace) { // The item is a member of a namespace. // All constructor functions that are part of a namespace // are considered classes. // A constructor function starts with // an uppercase letter by convention. if (typeof item.value == 'function' && (item.name[0].toUpperCase() == item.name[0])) { item.glyph = 'vs:GlyphGroupClass'; } // Detect an enumeration by using the _isEnum flag. if (item.value && item.value._isEnum) { item.glyph = 'vs:GlyphGroupEnum'; } } }); }); intellisense.addEventListener('statementcompletionhint', function (e) { if (e.completionItem.value) { if (e.completionItem.value._isNamespace) { e.symbolHelp.symbolDisplayType = 'Namespace'; } if (e.completionItem.value._isEnum) { e.symbolHelp.symbolDisplayType = 'Enum'; } } });
Jako pierwszy wiersz w appCode.js, należy dodać następującą dyrektywę odniesienia.Ścieżkę używaną w tym polu oznacza, że pliki JavaScript są w tym samym folderze.
/// <reference path="exampleLib.js" />
W appCode.js wpisz następujący kod.Podczas pisania, zobaczysz, że ikony dla obszaru nazw zmieniła się na "{}", ponieważ będzie używany w języku C#.
W appCode.js wpisz następujący kod.Podczas pisania, pojawi się nowa ikona wyliczenie dla członka Enum1, a nowa ikona klasy dla członka SomeClass1.
Unikanie wykonania wpływ na wyniki technologii IntelliSense
Obsługę języka JavaScript uruchamia kod dynamicznie udzielenia informacji, technologii IntelliSense.W efekcie zachowaniem w czasie wykonywania od czasu do czasu mogą zakłócać pożądanych rezultatów.Poniżej przedstawiono procedurę zastąpić wyników technologii IntelliSense podczas wykonania zachowanie może powodować nieprawidłowe IntelliSense.
Na przykład do pracy potrzebne są następujące pliki JavaScript w projekcie:
exampleLib.js, który jest plikiem projektu, który reprezentuje innej biblioteki.
exampleLib.intellisense.js, które jest rozszerzenie technologii IntelliSense.Ten plik nie musi być włączone do projektu, ale to musi być w tym samym folderze, co exampleLib.js.
appCode.js, który jest plikiem projektu, który reprezentuje kod aplikacji.
W celu uniknięcia skutków wykonania na wynikach technologii IntelliSense
Dodaj następujący kod do exampleLib.js.
function after(count, func) { return function () { if (--times < 1) { return func.apply(this, arguments); } }; };
W powyższym kodzie, owinięte Funkcja ignoruje połączenia początkowego, bazując na wartość counti nie zwraca wyników.
Jako pierwszy wiersz w appCode.js, należy dodać następującą dyrektywę odniesienia.Ścieżkę używaną w tym polu oznacza, że pliki JavaScript są w tym samym folderze.
/// <reference path="exampleLib.js" />
W appCode.js wpisz następujący kod.Listy identyfikatorów pojawia się zamiast IntelliSense, ponieważ zawinięty nigdy nie wywołania funkcji, co oznacza, że throttled funkcja nie zwraca żadnych wyników.
Dodaj następujący kod do exampleLib.intellisense.js.Spowoduje to zmianę zachowania projektowania tak, że IntelliSense jest wyświetlana dla funkcji opakowane zgodnie z oczekiwaniami.
window.after = function (count, func) { // Just return func. return func; };
W appCode.js wyniki badań przez wpisanie tego samego kodu, która uprzednio została wpisana.Tym razem IntelliSense zawiera żądane informacje.