wie die Regionen / Ausblenden von Code in JavaScript implementieren
-
20-09-2019 - |
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
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:
- Öffnen Makro-Explorer
- Erstellen eines neuen Makro
- Name es
OutlineRegions
- 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
- Speichern Sie das Makro und schließen Sie den Editor
- 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
- 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:
Gute Nachrichten für Entwickler, die mit der neuesten Version von Visual Studio arbeitet
Die Web Essentials- mit dieser Funktion kommen.
eingebenHinweis: 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.
, 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
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