Jak zaimplementować regiony zwane zwijaniem kodu dla JavaScript w programie Visual Studio?
Jeśli w javascript są setki wierszy, będzie to bardziej zrozumiałe przy użyciu zawijania kodu z regionami, jak w vb / C #.
#region My Code
#endregion
Jak zaimplementować regiony zwane zwijaniem kodu dla JavaScript w programie Visual Studio?
Jeśli w javascript są setki wierszy, będzie to bardziej zrozumiałe przy użyciu zawijania kodu z regionami, jak w vb / C #.
#region My Code
#endregion
Odpowiedzi:
Wpis na blogu wyjaśnia to i to pytanie MSDN .
Musisz używać makr Visual Studio 2003/2005/2008.
Kopiuj + wklej z wpisu na blogu dla zachowania wierności:
OutlineRegions
Option Strict Off Option Explicit Off Imports System Imports EnvDTE Imports EnvDTE80 Imports System.Diagnostics Imports System.Collections Public Module JsMacros Sub OutlineRegions() Dim selection As EnvDTE.TextSelection = DTE.ActiveDocument.Selection Const REGION_START As String = "//#region" Const REGION_END As String = "//#endregion" selection.SelectAll() Dim text As String = selection.Text selection.StartOfDocument(True) Dim startIndex As Integer Dim endIndex As Integer Dim lastIndex As Integer = 0 Dim startRegions As Stack = New Stack() Do startIndex = text.IndexOf(REGION_START, lastIndex) endIndex = text.IndexOf(REGION_END, lastIndex) If startIndex = -1 AndAlso endIndex = -1 Then Exit Do End If If startIndex <> -1 AndAlso startIndex < endIndex Then startRegions.Push(startIndex) lastIndex = startIndex + 1 Else ' Outline region ... selection.MoveToLineAndOffset(CalcLineNumber(text, CInt(startRegions.Pop())), 1) selection.MoveToLineAndOffset(CalcLineNumber(text, endIndex) + 1, 1, True) selection.OutlineSection() lastIndex = endIndex + 1 End If Loop selection.StartOfDocument() End Sub Private Function CalcLineNumber(ByVal text As String, ByVal index As Integer) Dim lineNumber As Integer = 1 Dim i As Integer = 0 While i < index If text.Chars(i) = vbCr Then lineNumber += 1 i += 1 End If i += 1 End While Return lineNumber End Function End Module
źródło
Dobra wiadomość dla programistów pracujących z najnowszą wersją programu Visual Studio
Pakiet Web Essentials będzie dostępny z tą funkcją.
Sprawdź to
Uwaga: dla VS 2017 użyj regionów JavaScript: https://marketplace.visualstudio.com/items?itemName=MadsKristensen.JavaScriptRegions
źródło
Firma Microsoft ma teraz rozszerzenie programu VS 2010, które zapewnia następujące funkcje:
Rozszerzenia edytora JScript
źródło
To łatwe!
Zaznacz sekcję, którą chcesz zwinąć i
Aby rozwinąć, użyj znaku „+” po jego lewej stronie.
źródło
Dla tych, którzy mają zamiar używać Visual Studio 2012, istnieje Web Essentials 2012
Dla tych, którzy mają zamiar używać Visual Studio 2015, istnieje Web Essentials 2015.3
Użycie jest dokładnie takie, jak pytał @prasad
źródło
Zaznaczając sekcję kodu (niezależnie od jakichkolwiek bloków logicznych) i naciskając CTRL + M + H, zdefiniujesz zaznaczenie jako region, który można zwijać i rozszerzać.
źródło
W JSEnhancements plugin dla adresów Visual Studio to ładnie.
źródło
Dzięki 0A0D za świetną odpowiedź. Miałem z tym szczęście. Darin Dimitrov również przedstawia dobry argument na temat ograniczania złożoności plików JS. Mimo to zdarzają się sytuacje, w których zwijanie funkcji do ich definicji znacznie ułatwia przeglądanie pliku.
Jeśli chodzi o ogólny # region, to pytanie SO obejmuje to całkiem dobrze.
Dokonałem kilku modyfikacji w makrze, aby obsługiwać bardziej zaawansowane zwijanie kodu. Ta metoda umożliwia umieszczenie opisu po słowie kluczowym // # region ala C # i wyświetlenie go w kodzie, jak pokazano:
Przykładowy kod:
//#region InputHandler var InputHandler = { inputMode: 'simple', //simple or advanced //#region filterKeys filterKeys: function(e) { var doSomething = true; if (doSomething) { alert('something'); } }, //#endregion filterKeys //#region handleInput handleInput: function(input, specialKeys) { //blah blah blah } //#endregion handleInput }; //#endregion InputHandler
Zaktualizowane makro:
Option Explicit On Option Strict On Imports System Imports EnvDTE Imports EnvDTE80 Imports EnvDTE90 Imports System.Diagnostics Imports System.Collections.Generic Public Module JsMacros Sub OutlineRegions() Dim selection As EnvDTE.TextSelection = CType(DTE.ActiveDocument.Selection, EnvDTE.TextSelection) Const REGION_START As String = "//#region" Const REGION_END As String = "//#endregion" selection.SelectAll() Dim text As String = selection.Text selection.StartOfDocument(True) Dim startIndex As Integer Dim endIndex As Integer Dim lastIndex As Integer = 0 Dim startRegions As New Stack(Of Integer) Do startIndex = text.IndexOf(REGION_START, lastIndex) endIndex = text.IndexOf(REGION_END, lastIndex) If startIndex = -1 AndAlso endIndex = -1 Then Exit Do End If If startIndex <> -1 AndAlso startIndex < endIndex Then startRegions.Push(startIndex) lastIndex = startIndex + 1 Else ' Outline region ... Dim tempStartIndex As Integer = CInt(startRegions.Pop()) selection.MoveToLineAndOffset(CalcLineNumber(text, tempStartIndex), CalcLineOffset(text, tempStartIndex)) selection.MoveToLineAndOffset(CalcLineNumber(text, endIndex) + 1, 1, True) selection.OutlineSection() lastIndex = endIndex + 1 End If Loop selection.StartOfDocument() End Sub Private Function CalcLineNumber(ByVal text As String, ByVal index As Integer) As Integer Dim lineNumber As Integer = 1 Dim i As Integer = 0 While i < index If text.Chars(i) = vbLf Then lineNumber += 1 i += 1 End If If text.Chars(i) = vbCr Then lineNumber += 1 i += 1 If text.Chars(i) = vbLf Then i += 1 'Swallow the next vbLf End If End If i += 1 End While Return lineNumber End Function Private Function CalcLineOffset(ByVal text As String, ByVal index As Integer) As Integer Dim offset As Integer = 1 Dim i As Integer = index - 1 'Count backwards from //#region to the previous line counting the white spaces Dim whiteSpaces = 1 While i >= 0 Dim chr As Char = text.Chars(i) If chr = vbCr Or chr = vbLf Then whiteSpaces = offset Exit While End If i -= 1 offset += 1 End While 'Count forwards from //#region to the end of the region line i = index offset = 0 Do Dim chr As Char = text.Chars(i) If chr = vbCr Or chr = vbLf Then Return whiteSpaces + offset End If offset += 1 i += 1 Loop Return whiteSpaces End Function End Module
źródło
To jest teraz natywnie w VS2017:
//#region fold this up //#endregion
Spacja między // a # nie ma znaczenia.
Nie wiem, w jakiej wersji to zostało dodane, ponieważ nie mogę znaleźć żadnej wzmianki o tym w dziennikach zmian. Mogę go używać w wersji 15.7.3.
źródło
Na VS 2012 i VS 2015 zainstaluj wtyczkę WebEssentials i będziesz w stanie to zrobić.
http://vswebessentials.com/features/javascript
źródło
W przypadku programu Visual Studio 2017.
//#region Get Deactivation JS . . //#endregion Get Deactivation JS
To nie pracował wcześniej więc pobrałem rozszerzenie z tutaj
Nazwa rozszerzenia (regiony JavaScript) Autor: Mads Kristensen
źródło
Działa jak urok w PhpStorm
//#region My Region 1 ... //#endregion //#region My Region 2 ... //#endregion
źródło
W przypadku VS 2019 powinno to działać bez instalowania czegokolwiek:
//#region MyRegion1 foo() { } //#endregion //#region MyRegion2 bar() { } //#endregion
źródło
jeśli używasz Resharper
odłóż kroki na tym zdjęciu
następnie zapisz to w edytorze szablonów
//#region $name$ $END$$SELECTION$ //#endregion $name$
i nazwij to
#region
jak na tym obrazkumam nadzieję, że to ci pomoże
źródło
Żadna z tych odpowiedzi nie zadziałała w moim przypadku w Visual Studio 2017.
Najlepsza wtyczka dla VS 2017: Regiony JavaScript
Przykład 1:
Przykład 2:
Przetestowane i zatwierdzone:
źródło
Region powinien działać bez zmiany ustawień
//#region Optional Naming var x = 5 -0; // Code runs inside #REGION /* Unnecessary code must be commented out */ //#endregion
Aby włączyć zwijany obszar komentarza / ** /
/* Collapse this */
Ustawienia -> Wyszukaj „składanie” -> Edytor: Strategia składania -> Od „auto” do „wcięcia”.
TAGI: Node.js Nodejs Node js Javascript ES5 ECMAScript komentarz składany ukryty region Visual studio code vscode 2018 wersja 1.2+ https://code.visualstudio.com/updates/v1_17#_folding-regions
źródło
Nie tylko dla VS, ale prawie dla wszystkich redaktorów.
(function /* RegionName */ () { ... })();
Ostrzeżenie: ma wady, takie jak zasięg.
źródło