Frage

Wie kann man Regionen auch bekannt als das Ausblenden von Code für JavaScript in Visual Studio implementieren?

Wenn es Hunderte von Zeilen in Javascript sind, wird es verständlicher mit Code-Folding mit Regionen wie in vb / C #.

#region My Code

#endregion
War es hilfreich?

Lösung

Blog-Eintrag hier erklärt es und diese MSDN Frage .

Sie haben Visual Studio 2003/2005/2008 Makros verwenden.

Copy + Paste aus dem Blog-Eintrag für Treue willen:

  1. Öffnen Makro-Explorer
  2. Erstellen eines neuen Makro
  3. Name es OutlineRegions
  4. Klicken Sie auf Bearbeiten Makro und fügen Sie den folgenden VB-Code:
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
  1. Speichern Sie das Makro und schließen Sie den Editor
  2. Geben Sie nun die assign Verknüpfung zu dem Makro lassen. Zum Tools-> Optionen-> Umfeld-> Tastatur und die Suche nach Ihrem Makro in „show-Befehle mit“ Textbox
  3. jetzt in Textbox unter „Press Shortcut-Tasten“ können Sie die gewünschte Verknüpfung eingeben. Ich verwende Strg + M + E. Ich weiß nicht, warum - ich habe es gerade noch Zeit eingegeben und verwenden Sie es jetzt:)

Andere Tipps

Microsoft hat nun eine Erweiterung für VS 2010 , das diese Funktionalität bereitstellt:

JScript Editor Extensions

Gute Nachrichten für Entwickler, die mit der neuesten Version von Visual Studio arbeitet

Die Web Essentials- mit dieser Funktion kommen.

Check this out

 image description hier

eingeben

Hinweis: Für VS 2017 Gebrauch JavaScript Regionen: https: //marketplace.visualstudio.com/items?itemName=MadsKristensen.JavaScriptRegions

Das ist ganz einfach!

Markieren Sie den Abschnitt wollen Sie zum Einsturz und

  

Strg + M + H

Und Verwendung '+' Zeichen auf der linken zu erweitern.

Für diejenigen, über die Visual Studio 2012 zu verwenden, besteht die Web Essentials-2012

Für diejenigen, über die Visual Studio 2015 zu verwenden, besteht die Web Essentials-2015,3

Die Verwendung ist genau wie @prasad gefragt

durch einen Abschnitt von Code-Markierung (unabhängig von irgendwelchen logischen Blöcken) und Schlagen CTRL + M + H Sie die Auswahl als eine Region definieren, die zusammenlegbar und expandierbar ist.

Die JSEnhancements Plugin für Visual Studio Adressen schön dieser.

Dank 0A0D für eine große Antwort. Ich habe mit ihm viel Glück hat. Darin Dimitrov auch über die Begrenzung der Komplexität Ihrer JS-Dateien ein gutes Argument macht. Dennoch, ich Gelegenheiten finden, wo Funktionen, um ihre Definitionen kollabieren viel einfacher macht durch eine Datei durchsuchen.

In Bezug auf #region im Allgemeinen diese SO Frage es Abdeckungen ganz gut.

Ich habe einige Änderungen an dem Makro gemacht fortgeschritteneren Code Zusammenbruch zu unterstützen. Mit dieser Methode können Sie es im Code eine Beschreibung nach dem // # Region Stichwort ala C # und zeigt setzen, wie gezeigt:

Beispielcode:

//#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

Aktualisiert 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

Dies ist nun nativ in VS2017:

//#region fold this up

//#endregion

Leerzeichen zwischen // und # spielt keine Rolle.

Ich weiß nicht, welche Version dies wurde in, da ich keine Erwähnung in den Changelogs finden. Ich bin in der Lage es in v15.7.3 zu verwenden.

Auf VS 2012 und VS 2015 installieren WebEssentials Plugin und Sie werden in der Lage, dies zu tun.

http://vswebessentials.com/features/javascript

, wenn Sie mit ReSharper

Brechen die Schritte in diesem Bild

schreiben diese dann in Template-Editor

  //#region $name$
$END$$SELECTION$
  //#endregion $name$

und nennen Sie es, wie in diesem Bild #region eingeben Bild Beschreibung hier

hoffen, dass diese Hilfe Sie

Keine dieser Antworten für mich nicht die Arbeit mit Visual Studio 2017.

Das beste Plugin für VS 2017: JavaScript Regionen

Beispiel 1:

Beispiel 2:

Geprüft und zugelassen:

für Visual Studio 2017.

    //#region Get Deactivation JS
    .
    .
    //#endregion Get Deactivation JS

Dies war nicht früher arbeiten, damit ich Erweiterung heruntergeladen von hier

Region sollten ohne Änderung der Einstellungen arbeiten

//#region Optional Naming
    var x = 5 -0; // Code runs inside #REGION
    /* Unnecessary code must be commented out */
//#endregion

aktiviert, um zusammenzubrechKommentarBereich / ** /

/* Collapse this

*/

Einstellungen -> Suche "Falten" -> Editor: Folding Strategie -> von "Auto" auf "Vertiefung"

.

TAGS: Node.js NodeJS Knoten js Javascript ES5 ECMAScript Kommentar Falten Versteckbereich Visual Studio Code vscode 2018 Version 1.2+ https://code.visualstudio.com/updates/v1_17#_folding-regions

Nicht nur für VS aber fast für alle Editoren.

(function /* RegionName */ () { ... })();

. Achtung: hat Nachteile wie Anwendungsbereich

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top