مقدمة كيفية تنفيذ المناطق/انهيار الكود في javascript




مقدمة عن javascript (10)

كيف يمكنك تنفيذ المناطق الملقب شفرة انهيار لجافا سكريبت في Visual Studio؟

إذا كانت هناك مئات الأسطر في جافا سكريبت ، فسيكون ذلك أكثر قابلية للفهم باستخدام طي الكود مع المناطق كما هو الحال في vb / C #.

#region My Code

#endregion



بفضل 0A0D للحصول على إجابة رائعة. لقد حظيت جيدًا بها. كما يقدم دارين ديميتروف حجة جيدة حول الحد من تعقيد ملفات JS الخاصة بك. ومع ذلك ، فإنني أجد مناسبات حيث تؤدي وظائف الانهيار إلى تعريفاتها إلى جعل التصفح عبر الملف أسهل بكثير.

بخصوص #region بشكل عام ، يغطي هذا السؤال SO بشكل جيد.

لقد قمت بإجراء بعض التعديلات على الماكرو لدعم انهيار التعليمات البرمجية المتقدمة. تتيح لك هذه الطريقة وضع وصف بعد الكلمة الرئيسية // # region ala C # وعرضها في الشفرة كما هو موضح:

كود المثال:

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

ماكرو محدث:

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


بالنسبة لأولئك الذين يستخدمون الاستوديو المرئي 2012 ، يوجد Web Essentials 2012

لأولئك الذين على وشك استخدام الاستوديو المرئي 2015 ، هناك أساسيات الويب 2015.3

الاستخدام هو بالضبط مثل @ prasad سأل


هذا سهل!

حدد القسم الذي تريد تصغيره ،

السيطرة + M + H

ولتوسيع استخدام علامة "+" على يساره.




ليس فقط ل VS ولكن تقريبا لجميع المحررين.

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

تحذير: له عيوب مثل النطاق.


يشرح إدخال المدونة هنا هذا السؤال وسؤال MSDN .

يجب عليك استخدام Visual Studio 2003/2005/2008 وحدات الماكرو.

نسخ + لصق من مدخل المدونة من أجل الإخلاص:

  1. افتح مستكشف الماكرو
  2. قم بإنشاء ماكرو جديد
  3. OutlineRegions
  4. انقر فوق تحرير ماكرو وقم بلصق التعليمة البرمجية 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
  1. احفظ الماكرو وأغلق المحرر
  2. الآن دعونا تعيين اختصار إلى الماكرو. انتقل إلى أدوات-> خيارات-> بيئة-> لوحة المفاتيح وابحث عن الماكرو الخاص بك في مربع النص "إظهار الأوامر التي تحتوي على"
  3. الآن في مربع النص تحت "اضغط على مفاتيح الاختصار" يمكنك إدخال الاختصار المطلوب. أنا استخدم Ctrl + M + E. أنا لا أعرف لماذا - أنا فقط دخلت ذلك لأول مرة واستخدامها الآن :)




code-regions