让Visual Studio 也支持JS代码折叠

简介: 有两种方法,第一种是设置宏,第二种是软件。 1:宏   - - - 前言      Visual Studio的代码折叠功能非常好用,#region #endregion 这个词连搜狗的词库里面都出现了(不含'#'号),可见使用频率很高,但是他不支...

有两种方法,第一种是设置宏,第二种是软件。

1:宏

 
-
-
-
前言

      Visual Studio的代码折叠功能非常好用,#region #endregion 这个词连搜狗的词库里面都出现了(不含'#'号),可见使用频率很高,但是他不支持js的代码折叠 : ( 最近Ext用得比较多,一写就是上百行JS代码,非常不方便,想着自己写个扩展或插件什么的,意外搜到了下面的文章,已经用宏来实现了,本文可以理解为该文的简单译本,注意宏代码部分我有所改动 : )

文章

      1.      Using #region Directive With JavaScript Files in Visual Studio

环境

      Microsoft Visual Studio 2008

正文

      1.      打开宏资源管理器:视图 -> 其他窗口 -> 宏资源管理器
  
让Visual Studio 也支持JS代码折叠 [ #region | #endregion ]_18275

      2.      创建一个新模块

让Visual Studio 也支持JS代码折叠 [ #region | #endregion ]_18276

  3.  编辑宏:  选中模块 -> 右键编辑
 1 Option Strict Off
 2 Option Explicit Off
 3 
 4 Imports System
 5 Imports EnvDTE
 6 Imports EnvDTE80
 7 Imports System.Diagnostics
 8 Imports System.Collections
 9 
10 Public Module JsMacros
11 
12     Sub OutlineRegions()
13         Dim selection As EnvDTE.TextSelection = DTE.ActiveDocument.Selection
14 
15         Const REGION_START As String = "//#region"
16         Const REGION_END As String = "//#endregion"
17 
18         selection.SelectAll()
19         '农民伯伯 --- 自动为"//#endregion"结束的代码添加最后一行,不然出错
20         If selection.Text.EndsWith(REGION_END) Then
21             selection.EndOfLine()
22             selection.NewLine()
23             selection.SelectAll()
24         End If
25 
26 
27         Dim text As String = selection.Text
28         selection.StartOfDocument(True)
29 
30         Dim startIndex As Integer
31         Dim endIndex As Integer
32         Dim lastIndex As Integer = 0
33         Dim startRegions As Stack = New Stack()
34 
35         Do
36             startIndex = text.IndexOf(REGION_START, lastIndex)
37             endIndex = text.IndexOf(REGION_END, lastIndex)
38 
39             If startIndex = -1 AndAlso endIndex = -1 Then
40                 Exit Do
41             End If
42 
43             If startIndex <> -1 AndAlso startIndex < endIndex Then
44                 startRegions.Push(startIndex)
45                 lastIndex = startIndex + 1
46             Else
47                 ' Outline region 
48                 selection.MoveToLineAndOffset(CalcLineNumber(text, CInt(startRegions.Pop())), 1)
49                 selection.MoveToLineAndOffset(CalcLineNumber(text, endIndex) + 1, 1, True)
50                 selection.OutlineSection()
51 
52                 lastIndex = endIndex + 1
53             End If
54         Loop
55 
56         selection.StartOfDocument()
57     End Sub
58 
59     Private Function CalcLineNumber(ByVal text As String, ByVal index As Integer)
60         Dim lineNumber As Integer = 1
61         Dim i As Integer = 0
62 
63         While i < index
64             If text.Chars(i) = vbCr Then
65                 lineNumber += 1
66                 i += 1
67             End If
68 
69             i += 1
70         End While
71 
72         Return lineNumber
73     End Function
74 
75 End Module

 

 
保存即可。这里可以省去新建宏的步骤,他会根据代码自动给你生成一个宏的。

  注意我加的代码段,如果不加,并且你的JS最后一行为#endregion,宏将报错,显示“值不在预期的范围内”。

  4.  设置快捷键
  
让Visual Studio 也支持JS代码折叠 [ #region | #endregion ]_18277

  4.1  工具 -> 选项 - > 环境 -> 键盘

  4.2  在显示命令包含下面的文本框中输入宏名outli,不用输全,下面能显示你新建的宏

  4.3  点一下 按快捷键 下面的文本框, 然后自定义快捷键组合,我定义的是Ctrl+M,Ctrl+J,点分配(别忘了!),点确定。

  5.效果

  5.1  输入代码:
//aasdsadsad

//#region
//#endregion

  5.2  快捷键Ctrl+M,Ctrl+J启动宏,能看到系统的右下角显示可爱的小方块在转动,js编辑框显示效果如下:
    
让Visual Studio 也支持JS代码折叠 [ #region | #endregion ]_18278

   5.3  之后就可以用快捷键Ctrl+M,Ctrl+L来[展开/折叠]代码了,注意关闭之后重新打开需要再启动一次宏,展开效果如下:
   
让Visual Studio 也支持JS代码折叠 [ #region | #endregion ]_18279

结束

 
2:软件
 SmartOutline

                  2.2.1  下载 http://submain.com/download/smartoutline/ 输入邮箱地址点下载即可。

                  2.2.2      安装插件 SmartOutline_v1.1.msi ,下一步下一步就行。工具栏会出现SmallOutline,可能需要重启VS。

                  2.2.3      编写测试代码,依次按步骤:

                  2.2.3.1      选中要折叠的函数,出现如下提示
        
让Visual Studio 也支持JS代码折叠续 [ ScriptOutline | SmallOutline ]_18282


                        2.2.3.2      点击提示或输入组合快捷键 Alt+S、Alt+C ,弹出如下对话框,输入JS代码折叠后显示的注释名
        
让Visual Studio 也支持JS代码折叠续 [ ScriptOutline | SmallOutline ]_18283


                        2.2.3.3      最终效果
       
让Visual Studio 也支持JS代码折叠续 [ ScriptOutline | SmallOutline ]_18284


 
目录
相关文章
|
JavaScript 前端开发 安全
【逆向】Python 调用 JS 代码实战:使用 pyexecjs 与 Node.js 无缝衔接
本文介绍了如何使用 Python 的轻量级库 `pyexecjs` 调用 JavaScript 代码,并结合 Node.js 实现完整的执行流程。内容涵盖环境搭建、基本使用、常见问题解决方案及爬虫逆向分析中的实战技巧,帮助开发者在 Python 中高效处理 JS 逻辑。
|
JavaScript 前端开发 算法
流量分发代码实战|学会用JS控制用户访问路径
流量分发工具(Traffic Distributor),又称跳转器或负载均衡器,可通过JavaScript按预设规则将用户随机引导至不同网站,适用于SEO优化、广告投放、A/B测试等场景。本文分享一段不到百行的JS代码,实现智能、隐蔽的流量控制,并附完整示例与算法解析。
506 1
|
存储 JavaScript 前端开发
在NodeJS中使用npm包进行JS代码的混淆加密
总的来说,使用“javascript-obfuscator”包可以帮助我们在Node.js中轻松地混淆JavaScript代码。通过合理的配置,我们可以使混淆后的代码更难以理解,从而提高代码的保密性。
1588 9
|
前端开发 JavaScript
【Javascript系列】Terser除了压缩代码之外,还有优化代码的功能
Terser 是一款广泛应用于前端开发的 JavaScript 解析器和压缩工具,常被视为 Uglify-es 的替代品。它不仅能高效压缩代码体积,还能优化代码逻辑,提升可靠性。例如,在调试中发现,Terser 压缩后的代码对删除功能确认框逻辑进行了优化。常用参数包括 `compress`(启用压缩)、`mangle`(变量名混淆)和 `output`(输出配置)。更多高级用法可参考官方文档。
1175 11
|
JavaScript
JS代码的一些常用优化写法
JS代码的一些常用优化写法
280 0
|
JavaScript 前端开发 算法
JavaScript 中通过Array.sort() 实现多字段排序、排序稳定性、随机排序洗牌算法、优化排序性能,JS中排序算法的使用详解(附实际应用代码)
Array.sort() 是一个功能强大的方法,通过自定义的比较函数,可以处理各种复杂的排序逻辑。无论是简单的数字排序,还是多字段、嵌套对象、分组排序等高级应用,Array.sort() 都能胜任。同时,通过性能优化技巧(如映射排序)和结合其他数组方法(如 reduce),Array.sort() 可以用来实现高效的数据处理逻辑。 只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
|
JavaScript 前端开发 API
JavaScript中通过array.map()实现数据转换、创建派生数组、异步数据流处理、复杂API请求、DOM操作、搜索和过滤等,array.map()的使用详解(附实际应用代码)
array.map()可以用来数据转换、创建派生数组、应用函数、链式调用、异步数据流处理、复杂API请求梳理、提供DOM操作、用来搜索和过滤等,比for好用太多了,主要是写法简单,并且非常直观,并且能提升代码的可读性,也就提升了Long Term代码的可维护性。 只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
|
移动开发 运维 供应链
通过array.some()实现权限检查、表单验证、库存管理、内容审查和数据处理;js数组元素检查的方法,some()的使用详解,array.some与array.every的区别(附实际应用代码)
array.some()可以用来权限检查、表单验证、库存管理、内容审查和数据处理等数据校验工作,核心在于利用其短路机制,速度更快,节约性能。 博客不应该只有代码和解决方案,重点应该在于给出解决方案的同时分享思维模式,只有思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
|
供应链 JavaScript 前端开发
通过array.every()实现数据验证、权限检查和一致性检查;js数组元素检查的方法,every()的使用详解,array.some与array.every的区别(附实际应用代码)
array.every()可以用来数据验证、权限检查、一致性检查等数据校验工作,核心在于利用其短路机制,速度更快,节约性能。 博客不应该只有代码和解决方案,重点应该在于给出解决方案的同时分享思维模式,只有思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
|
数据采集 JavaScript 前端开发
JavaScript中通过array.filter()实现数组的数据筛选、数据清洗和链式调用,JS中数组过滤器的使用详解(附实际应用代码)
用array.filter()来实现数据筛选、数据清洗和链式调用,相对于for循环更加清晰,语义化强,能显著提升代码的可读性和可维护性。博客不应该只有代码和解决方案,重点应该在于给出解决方案的同时分享思维模式,只有思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~