insertar - llamar javascript desde html
cómo implementar colapso de regiones/código en javascript (12)
¡Eso es fácil!
Marque la sección que desea colapsar y,
Ctrl + M + H
Y para expandir use la marca ''+'' a su izquierda.
¿Cómo se pueden implementar regiones alias del colapso del código para JavaScript en Visual Studio?
Si hay cientos de líneas en javascript, será más comprensible utilizando el plegado de código con regiones como en vb / C #.
#region My Code
#endregion
Al marcar una sección de código (independientemente de cualquier bloque lógico) y presionar CTRL + M + H, definirá la selección como una región que es plegable y ampliable.
Buenas noticias para los desarrolladores que están trabajando con la última versión de Visual Studio
Los Web Essentials vienen con esta característica.
Nota: Para VS 2017 use JavaScript Regions: https://marketplace.visualstudio.com/items?itemName=MadsKristensen.JavaScriptRegions
El plugin JSEnhancements para Visual Studio aborda esto muy bien.
En VS 2012 y VS 2015 instale el complemento WebEssentials y podrá hacerlo.
Gracias a 0A0D por una gran respuesta. He tenido buena suerte con eso. Darin Dimitrov también hace una buena discusión sobre la limitación de la complejidad de sus archivos JS. Aún así, encuentro ocasiones en las que colapsar las funciones según sus definiciones hace que navegar por un archivo sea mucho más fácil.
Con respecto a #region en general, esta pregunta SO lo cubre bastante bien.
He hecho algunas modificaciones en Macro para soportar un colapso de código más avanzado. Este método le permite poner una descripción después de la // palabra clave de la región ala C # y lo muestra en el código como se muestra a continuación:
Código de ejemplo:
//#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
Macro actualizada:
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
Microsoft ahora tiene una extensión para VS 2010 que proporciona esta funcionalidad:
Ninguna de estas respuestas no funcionó para mí con visual studio 2017.
El mejor complemento para VS 2017: https://marketplace.visualstudio.com/items?itemName=MadsKristensen.JavaScriptRegions
Ejemplo 1:
Ejemplo 2:
Probado y aprobado:
No solo para VS, sino también para casi todos los editores.
(function /* RegionName */ () { ... })();
Advertencia: tiene desventajas tales como alcance.
Para aquellos a punto de usar Visual Studio 2012, existe la Web Essentials 2012
Para aquellos a punto de usar Visual Studio 2015, existe Web Essentials 2015.3
El uso es exactamente como @prasad preguntó
si estás usando Resharper
sigue los pasos en esta foto
luego escribe esto en el editor de plantillas
//#region $name$
$END$$SELECTION$
//#endregion $name$
y #region
nombre #region
como en esta imagen
espero que esto te ayude
La entrada del blog aquí lo explica y esta pregunta de MSDN .
Tienes que usar las macros de Visual Studio 2003/2005/2008.
Copiar + Pegar desde la entrada del blog por fidelidad:
- Abre Macro Explorer
- Crear una nueva macro
-
OutlineRegions
- Haga clic en Editar macro y pegue el siguiente código VB:
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
- Guarde la macro y cierre el editor
- Ahora asignemos un atajo a la macro. Vaya a Herramientas-> Opciones-> Entorno-> Teclado y busque su macro en el cuadro de texto "mostrar comandos que contienen"
- ahora en el cuadro de texto bajo "Presionar teclas de atajo" puede ingresar el atajo deseado. Yo uso Ctrl + M + E. No sé por qué, acabo de ingresarlo por primera vez y usarlo ahora :)