前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >如何提升vscode扩展的速度

如何提升vscode扩展的速度

作者头像
程序那些事儿
发布于 2023-03-07 05:24:58
发布于 2023-03-07 05:24:58
3.7K00
代码可运行
举报
文章被收录于专栏:程序那些事儿程序那些事儿
运行总次数:0
代码可运行

VS Code最受用户喜爱的就是它丰富的扩展。有成千上万的VS Code扩展可供选择。它们可以帮我们实现想要的一切,包括高亮语法显示我们喜欢的语言,格式化代码,为主题着色,方便地调试等等。

您是否曾经注意到在启动VS Code时某些扩展需要一些时间来初始化?是什么导致这种延迟?

你能为这个做什么?实际上很多。和我在一起,看看如何帮助您最喜欢的扩展程序快速加载!

一种可能的原因是文件数或扩展名的大小。某些扩展中有太多功能,以至于随着时间的推移它们会变慢。

缓慢的原因?

当我们为网络构建应用程序时,我们用JavaScript,CSS和HTML编写了数十个或数百个文件。我们不希望通过网络将1000个文件发送到浏览器,因为这可能是等待的不好体验。当我们编写代码时,它也没有针对浏览器进行尽可能多的优化。现代工具通过将文件压缩为单个(或一小组)文件来帮助我们解决此问题。一种流行的工具是WebPack。

如果使用命令“开发人员:显示正在运行的扩展”,您将在VS Code实例中看到已激活扩展的列表。您还将在右侧看到每个扩展激活所需的时间(以毫秒为单位)。

这是找出哪些启动速度可能较慢的好方法。请注意,我的VS Code实例下面的列表显示了一些已安装的扩展及其激活时间。显然,某些负载比其他负载需要更长的时间,因为它们的负载更多。

如果一个扩展花太长时间,我们该怎么办?(也许是1000ms?)

使扩展更快

最近,VS Code团队发布了使用WebPack捆绑扩展文件的功能。

本文涵盖了所有内容,并且可以在打包扩展时提供帮助。

我发现我的Peacock扩展程序在包中放入了48个文件。我做了一些调整,并减少了很多。

首先,我在.vscodeignore文件中添加了一些文件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# Files I excluded
azure-pipelines.yml
ISSUE_TEMPLATE.md
PULL_REQUEST_TEMPLATE.md
vsc-extension-quickstart.md
node_modules/**/test/**

# After webpack, we have more to ignore
node_modules
out/
src/
tsconfig.json
webpack.config.json

然后,我为扩展创建了一个新分支。使用WebPack更新我的项目。

我的目标是使所有这些仍然有效:

  • 包装 npm run package
  • 发布 npm run publish
  • 本地和CI测试 npm run test
  • 用F5调试 launch.json
  • F5使用以下命令调试测试 launch.json

该方法使我既可以使用webpack tsc进行编译,也可以进行测试和调试。

这是我的项目https://github.com/johnpapa/vscode-peacock

更改了我的主文件 package.json

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 "main": "./dist/extension",
代码语言:javascript
代码运行次数:0
运行
复制

我的npm脚本 package.json

代码语言:javascript
代码运行次数:0
运行
复制
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  "scripts": {
    "package": "npx vsce package",
    "publish": "npx vsce publish",

    "vscode:prepublish": "webpack --mode production",
    "compile": "webpack --mode none",
    "watch": "webpack --mode none --watch",

    "postinstall": "node node_modules/vscode/bin/install",
    "just-test": "node node_modules/vscode/bin/test",
    "test-compile": "tsc -p ./ && npm run compile",
    "test": "npm run test-compile && node node_modules/vscode/bin/test"
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制

  },

launch.json用于调试运行时和测试的配置:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
"configurations": [
    {
      "name": "Run Extension",
      "type": "extensionHost",
      "request": "launch",
      "runtimeExecutable": "${execPath}",
      "args": ["--extensionDevelopmentPath=${workspaceFolder}"],
      "outFiles": ["${workspaceFolder}/dist/**/*.js"],
      "preLaunchTask": "npm: test-compile"
    },
    {
      "name": "Extension Tests",
      "type": "extensionHost",
      "request": "launch",
      "runtimeExecutable": "${execPath}",
      "args": [
        "${workspaceFolder}/testworkspace",
        "--disable-extensions",
        "--extensionDevelopmentPath=${workspaceFolder}",
        "--extensionTestsPath=${workspaceFolder}/out/test"
      ],
      "outFiles": ["${workspaceFolder}/out/test/**/*.js"],
      "preLaunchTask": "npm: test-compile"
代码语言:javascript
代码运行次数:0
运行
复制

一个Visual Studio Code扩展,可以巧妙地更改工作区的工作区颜色。当您有多个VS Code实例并且想要快速识别出哪个实例时,这是理想的选择。

vscode-peacock

  1. 在Visual Studio Code中打开“ 扩展”侧边栏面板。View → Extensions
  2. 搜索 Peacock
  3. 点击安装
  4. 单击重新加载(如果需要)

特征

可以在命令面板中找到命令。寻找以开头的命令Peacock:

  • 将“ 受影响的元素 ”的颜色(请参阅peacock.affect*“ 设置”部分)更改为
    • 用户定义的颜色
    • 随机的颜色
    • 配置的原色
  • 从您喜欢的颜色中选择一种用户定义的颜色
  • 使用“ 保存收藏夹颜色 ” 保存用户定义的颜色
  • 通过使受影响的元素变暗或变浅来调整它们的颜色,以在它们之间提供微妙的视觉对比
  • 将颜色保存到.vscode/settings.json文件中的工作区

它会产生什么样的影响?

这是一个很大的问题,我们绝对应该问一个问题。毕竟,我的意思是要进行任何代码更改都必须具有一定的价值。我能够获得许可(感谢VS Code团队和Erich Gamma)来共享您可能使用的两个扩展的一些性能统计信息(非官方测试)。

这两个扩展都具有相当多的逻辑,并且可以做一些令人印象深刻且有用的事情。

Azure帐户

在Azure的客户扩展的大小和文件数量大幅度下降......像“圣钼”到“不坏”!

热激活是一个术语,表示扩展已激活的时间(如果该扩展先前已安装(不是第一次))。在此扩展中,该数量减少了一半。一点也不差!

  • 下载大小(.vsix):6.2M至840K。
  • 打包文件:4300至11
  • 热启动时间:676ms至338ms

使用docker

使用docker收到明显的温暖激活改进下2秒。但是关键方面是冷激活时间。冷激活是指扩展在刚安装时激活所需的时间。

  • 热启动时间:3.5s至<2s
  • 冷启动时间(第一次安装后):20s至2s

提示

使用webpack捆绑扩展会影响几件事。这就是测试所有这些超级重要的原因。

  • 调试器中本地运行扩展(并测试您是否可以遇到断点)
  • 打包扩展并从菜单加载(从VSIX加载)
  • 使用调试器运行测试(测试可以达到断点)
  • 从运行您的测试脚本 npm test

完成后,您可以再次检查激活时间。

没有自己的扩展

没关系,但是,如果您喜欢扩展,请考虑在其存储库上创建拉取请求(PR)以启用Webpack捆绑!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-05-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序那些事儿 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
复制粘贴插件——clipboard.js的使用
将文本复制到剪贴板应该不难。它不应该需要几十个步骤来配置或加载数百 KB。但最重要的是,它不应该依赖于 Flash 或任何臃肿的框架。 这就是 clipboard.js 存在的原因。
SingYi
2022/07/13
3.2K0
JavaScript中的execCommand
execCommand方法是执行一个对当前文档,当前选择或者给出范围的命令。处理Html数据时常用 如下格式:document.execCommand(sCommand[,交互方式, 动态参数]) ,其中:sCommand为指令参数(如下例中的”2D-Position”),交互方式参数如果是true的话将显示对话框,如果为false的话,则不显示对话框(下例中的”false”即表示不显示对话框),动态参数一 般为一可用值或属性值(如下例中的”true”)。 document.execCommand("2D-
SpiritLing
2018/04/16
1.4K0
原生 JS 实现复制功能
<input id="target" type="text" > <button onclick="onCopyClick()">复制</button> <script type="text/javascript"> function copyToClipboard (text) { if (!document.createRange || !window.getSelection || !document.execCommand) { return false; }
lonelydawn
2021/10/19
7.9K0
一个被 157317 个项目引用的 JS 开源库
Clipboard.js 实现了原生 JavaScript (无 Flash)的浏览器内容复制到系统剪贴板的功能。
程序员老鱼
2022/12/02
7550
JS 实现点击按钮复制一段文字
JS 要获取某段文字最好是触发,onselect 事件,这个就能获得选中的内容。
酒馆丁老师
2020/09/08
11.3K0
JS 实现点击按钮复制一段文字
利用clipboard.js复制粘贴JS插件实现页面特定文本按钮复制
我们在设计网站的时候,有些效果需要不断的提高用户体验。比如我们在页面中的微信号、电话号码、优惠码等信息,最好不要用户直接复制。如果能直接点击按钮直接复制效果还是比较好体验的。这里我们可以使用clipboard.js复制粘贴JS插件实现。
老蒋
2021/12/27
7.1K0
Clipboard.js实现复制[通俗易懂]
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/154538.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/06
1.8K0
JavaScript 中的复制粘贴操作
在日常业务开发,比如复制后增加版权信息,点击复制,等场景中需要进行复制粘贴的操作,以下是几种实现方案。
FEWY
2021/09/08
2.4K0
clipboard.js:最轻便的复制页面内容到剪切板的JS
最近在做一个项目的时候,需要实现一个功能就是点击一个按钮,将内容复制到剪贴板。传统的复制页面内容到剪切板主要方法是通过 Flash,但是在现代浏览器中,Flash 逐渐没落,慢慢被淘汰,搜索了一圈,发现 clipboard.js 是目前实现该功能最轻便的工具。
Denis
2023/04/14
2.7K0
前端H5怎么简单的实现复制text内容的操作
首先说明一下写这个的原因,现在不管是什么类型的网站,不管你访问的是什么类型的网址,进去以后你想要保存一些东西很简单,直接右键选择复制就可以了,这个是Windows自带的功能(快捷键 ctrl+c/ctrl+v,不做赘述),那么windows提供了那么好的功能,我们为什么还要做一个复制的操作呢?很简单有的时候访问网站的人不会这个操作,但是认识字,你可以给他提供一个复制的按钮,然后复制text输入的内容就可以了,这个他是会操作的,ok废话不说,简单的说明一些怎么实现。
何处锦绣不灰堆
2020/05/29
1.2K0
前端H5怎么简单的实现复制text内容的操作
Hexo优化 --- 添加复制功能
前言 Hexo Next 主题自带的代码块功能,没有复制功能,很不方便。 经过一番查找后,在主题的 Issues 中找到了解决方案,这里记录下。 下载 需要下载 clipboard.js 主页 Github 提供下载 clipboard.min.js 将下载的文件存到如下目录:(相对目录为工程目录,没有目录则创建) 1 .\themes\next\source\lib\zclip\clipboard.min.js 导入 新建文件 custom.js ,目录如下:(相对目录为工程目录) 1 \th
一份执着✘
2018/06/04
3.5K2
js复制插件clipboard全平台兼容
前面转载过一个篇简单《通过js实现复制到剪贴板功能》,但是兼容性不是很理想,有幸今天找到一个全平台通用的js,适用于Chrome 42+、Firefox 41+ 、Edge 12+、IE 9+、Opera 29+、Opera 29+等平台 手机上也测试过可以使用的 使用教程: 先引用js <script src="clipboard.min.js"></script> 下面是html <a id="copyValue" data-clipboard-target='#copyV
Youngxj
2018/06/06
3.2K0
学习js在线html(富文本)编辑器
你要的是所见即所得HTML编辑器,简单来说需要几个基本步骤: 1,需要一个可以编辑同时又可显效果的编辑框。textarea不行,它只能用来输入纯文本,不能显示颜色、斜体之类的文字样式,就像记事本。 你可以使用iframe来实现,修改iframe的designMode属性使其可以被编辑。 <iframe id="myEditer" width="100%" height="150px"></iframe> <script>myEditer.document.designMode = 'on';</scri
deepcc
2018/05/16
20.1K0
JavaScript操作剪贴板
在网页中一般是不允许访问剪贴板内容的,因为这样存在着很大的安全隐患。在IE和FireFox中剪贴板的访问是可控的,但是在Opera、Chrome、Safari浏览器中是不允许访问的,这样就产生了浏览器兼容的问题。
恋喵大鲤鱼
2018/08/03
3.1K0
Clipboard.js实现复制文本到剪贴板功能[通俗易懂]
Clipboard.js是一个轻量级的实现复制文本到剪贴板功能的JavaScript插件,该插件可以将输入框,文本域,DOM节点元素中的文本内容复制到剪贴板中。
全栈程序员站长
2022/09/15
2.4K0
开源一款剪贴板跨设备共享工具
昨天遇到了一个很棘手的问题:我的手机剪贴板需要同步到另外的两台设备上。遗憾的是手机上并没有安装相同的通讯软件。用网上免费的剪贴板共享工具吧,方便是方便,但是觉得还是不安全,关键是不能实现特定的需求。我很享受DIY的过程,于是思索一下,我觉得我可以自己做出来,还能做到局域网下的剪贴板跨设备共享,毕竟我也曾有过成功的案例:开源一个局域网文件共享工具。于是说干就干。
shigen
2024/03/31
3110
图形编辑器开发:实现图形的复制粘贴
如果只支持粘贴到当前编辑器下,方案很简单:只需要监听 Ctrl + C 键盘事件深拷贝一份选中图形对象,然后再监听 Ctrl + V 事件,将拷贝出来的对象添加到图形树的末尾。
前端西瓜哥
2023/08/18
3780
图形编辑器开发:实现图形的复制粘贴
网页实现把文本复制到粘贴板
思路整理 有一个按钮可以触发以下逻辑: 将生成的文本自动复制到剪切板上 结果要有友好提示 复制成功后可以粘贴到任何地方 一开始我以为有通用的接口,一番调研之后发现有以下几种东东: document.execCommand("copy")这个用于在要复制的文本处于被选中状态时使用 window.clipboardData.setData("Text", clipBoardContent)为挂载在window上的API 据说兼容性不好 结合ZeroClipboard.js这个插件实现兼容性比较好的复制粘贴,通过
卡少
2018/05/16
2.3K0
js实现网站无感复制,用户访问网站自动复制内容到剪贴板。
有时候,我们希望用户访问我们网站就自动复制指定内容到用户剪贴板。 比如支付宝赞赏码什么的..... 但是这样的不好的地方就是会对用户的体验有影响,每次用户访问就会复制一次。
吃猫的鱼Code
2023/02/02
2.3K0
在“CSND”和“掘金”复制文章内容的时候,会额外出现一段版权信息。这是如何做到的?
不知道大家平时使用“CSDN”和“掘金”的频率高不高。如果你经常使用的话,你就会遇到这样一个问题:
程序员牛肉
2024/09/26
2780
在“CSND”和“掘金”复制文章内容的时候,会额外出现一段版权信息。这是如何做到的?
推荐阅读
相关推荐
复制粘贴插件——clipboard.js的使用
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档