插件地址:

https://marketplace.visualstudio.com/items?itemName=bugbreeder.vscode-readhub
原文链接:

https://github.com/alex-yh99/vscode-readhub/blob/master/docs/develop-note.md

一、关于插件

在 VSCode 中快捷查阅科技动态、开发者资讯等 Readhub 内容,有效利用日常工作碎片时间,功能包含:

  • 展示 Readhub 各板块资讯及摘要信息

  • 支持 PC 本地浏览器访问资讯内容源站

  • 支持快速预览资讯全文

如对 JetBrains IDE(如 IntelliJ IDEA) 中使用 ReadHub 插件感兴趣,请访问 ReadHub IntelliJ Plugin

二、VSCode 体验

随着 VSCode 生态的日益繁荣,作为 IntelliJ 粉终于坐不住了,以围观的姿态开始试用,慢慢到如今高呼真香。花了周末学习写了下插件,稍微记录一下开发过程。

最初作为文本编辑器写 Markdown,慢慢熟悉几个快捷键之后,开始用来做开发工具。用作开发的历程比预想顺利,记忆了一个类似 IntelliJ 的 Search Everywhere 的快捷键,并装上 VIM 插件感觉就够了。如果用户是个沉迷打磨工具的 Power User,插件市场有大把的玩具还可以拿来折腾。

VSCode 作为开发工具上,由于入职新厂时的全栈化转型,开始学写 React / Redux,这个过程切实体会到了 VSCode 的便利,各种示例项目 Git 签出之后 npm i && code .,就能直接看代码了。初学者之路,往往只是想看 API 用法示例,又不希望在 GitHub 页面上走读代码文本,VSCode 此时的轻量优势就体现出来了:打开项目不需要复杂的工程导入配置,基本够用的 Code IntelliSense,且首次加载的建索引过程很快。

IntelliJ 的索引耗时,Java 程序员苦之久矣,社区有个 Nyan Progress bar 的插件,就是把进度条换成一只喵,为瞪眼等着索引建完的程序员减减压。因此 VSCode 的轻量特性,非常利于学习 + 试错的低代码场景,即随意打开 / 关闭多个项目,频繁地在项目间切换焦点(当然 IntelliJ 也有 Power-Save 模式,调 VM 参数也能做到类似的秒速启动,但还是要承认两者的竞争优势不同)

三、插件开发

动手写插件,主要是出于进一步了解 VSCode 扩展性和 API Framework 的考虑。选择资讯阅读插件场景,一方面场景比较经典,不论 Android、WebUI 框架的学习示例项目中,除了写 Hello World、ToDo List,就是写一个 ListView 了。另一方面比较喜欢无码科技出品的 ReadHub,之前也在 IntelliJ 上做了一个 ReadHub 插件,这次迁移到 VSCode 很多接口调用等等逻辑也就直接从 Kotlin 硬翻译到 TypeScript 了。

插件技术体系涉及到插件生命周期管理、UI 定制、网络请求、配置持久化等等,基本参考几篇官方文档和示例项目,就能写出大概了,代码详见 vscode-readhub

  • 项目脚手架

    https://code.visualstudio.com/api/get-started/your-first-extension

  • VSCode UI 组件介绍及扩展点

    https://code.visualstudio.com/api/extension-capabilities/extending-workbench

  • TreeView 详细介绍,包括事件注册、数据绑定

    https://code.visualstudio.com/api/extension-guides/tree-view

  • Command 定义

    https://code.visualstudio.com/api/extension-guides/command

  • Configuration API

    https://code.visualstudio.com/api/references/contribution-points#contributes.configuration

  • 测试

    https://code.visualstudio.com/api/working-with-extensions/testing-extension

四、开发备忘

1. 语言方面

TypeScript 现学现用,不过由于 Google / SO 上问题和解答都很多,基本没有太多阻塞的问题;一些零散的点记录:

  1. TypeScript 枚举类,如何添加方法以及自定义构造函数?似乎只能定义一个类,然后用静态成员变量代替枚举类型

    // Invalidenum Category {TOPIC('topic'), NEWS('news')constructor(nameKey: string) {    }}
    
    // Workaroundclass Category {public static TOPIC = new Category("topic");public static NEWS = new Category("news");constructor(public nameKey: string = "") { }}
  2. StrickNullChecks 可以让 IDE 更好做空检查,不过没有类似 Kotlin 的 Safe calls (?.),代码出现了不少强制非空断言 (!.),比如 a?.b?.c 如果不想啰嗦 a && a.b && a.b.c || undefined 只好冒险写 a!.b!.c. 在 JSON 反序列化中和写测试用例时碰到。这里有个 Proposal,目前在 Stage3

  3. 联合类型(Union Types)private myDate: Date | undefined 在 Nullable 变量的类型声明比较方便

  4. TypeScript 类型断言只是编译时的,没有运行时类型检查;所以 Type casting 之后访问对象属性时,还要检查一下

2. 框架感受

  1. VSCode 的 UI 扩展能力实在是太有限,或者说太克制了。比如一个 TreeView,无法定制 Renderer,这导致基本上所有插件使用 TreeView 做出来的视图都差不多一个样

  2. WebView 很便利,至少比使用 JavaFX WebView 和 Swing 组件交互简单很多;复杂插件交互可以考虑用 WebView 实现

  3. 涉及并发或重度计算的场景,可能需要剥离出插件逻辑来实现了;目前看到 VSC Extension 主要关注的是 UI 和 Language 层面的扩展,复杂的任务集成型场景可能受限于框架能力

五、Azure DevOps 尝试

试了一下 Azure Pipelines 做 CI,体验也是很顺畅,Azure 注册直接用 GitHub Account,创建 Organization 并导入 GitHub 工程。如果包含了 .azure-pipelines.yml 可以智能识别模板,并且有 YAML Live Editor 直接编辑及触发 Job.\

CI 效率不错,Azure DevOps 的页面设计个人还是比较喜欢的,视觉链路非常清晰,不像很多面向开发者的产品把一堆有的没的都展示出来。


六、题外

有 Azure DevOps + GitHub 的加持,VSCode Online 似乎有着一统未来云端编程界面的趋势。目前看起来能打的只有 JetBrains + Google 的组合了,什么时候 JetBrains 能丢弃 TeamCity、Upsource 等明显掉队且追赶无望的 PaaS 业务,把 IntelliJ Platform 搬到到云端,同时和 GCP 深度合作、把整个 JVM 生态的开发工具链云化,估计才能有跟微软一较高下的可能吧。

JetBrains 起家于2000年左右给 JBuilder 做插件,彼时叫 IntelliJ Renamer,那时候「重构」Refactor 一词刚被 Martin Fowler 提出没多久,还算是个 Buzzword,跟今天程序员言必称 FaaS、Serverless 化一样。JBuilder 是 Borland 搞的 Java IDE,今天的高龄程序员们在校用的 Turbo C++ 同是这家公司出品的。

之后风云变幻,Borland 掉队,传奇人物 Anders Hejlsberg 转投微软主导了 C# 和今天的 TypeScript(P.S. 推荐图书《Borland 传奇》);整个历史进程 JetBrains 是亲历者,而今天有点历史重演的感觉。

VS Code 摸鱼插件开发小记相关推荐

  1. 打工人必备:这10款VS Code摸鱼神器还没安装?

    现在使用VsCode编码的人越来越多,凭借着免费,开源,轻量,跨平台的特点收货了一大批忠实粉丝. 以其可支持扩展程序(通过安装扩展程序,VS Code 可以支持更多新的语言.界面主题.测试器,以及更多 ...

  2. VSCode摸鱼教程---我们的口号是什么:摸鱼摸鱼!!!

    VS Code摸鱼教程-我们的口号是什么:摸鱼摸鱼!!! 1.VSCode百度百科 Visual Studio Code(简称"VS Code")是Microsoft在2015年4 ...

  3. VS Code 高效“摸鱼”插件推荐

    点击上方"编程派",选择设为"设为星标" 优质文章,第一时间送达! 最近用 VS Code 的次数比较多,发现真的是生产力以及"高效摸鱼"神 ...

  4. 最爽摸鱼听音乐——使用VS Code解锁网易云灰色歌曲(VSC Netease Music+UnblockNeteaseMusic)

    瞎扯 有没有遇到过不能安装网易云客户端的情况? 有没有遇到过使用网易云无法播放变灰歌曲的情况? 作为一个极客,有没有觉得用VS Code听歌超酷? 下面就介绍一下最爽摸鱼听音乐的方案:VSC Nete ...

  5. 摸鱼神器!VS Code 变身小霸王游戏机!

    今天,要给大家介绍一款摸鱼神器,把 VS Code 变身小霸王游戏机! 1.下载安装 直接访问下列链接: https://marketplace.visualstudio.com/items?item ...

  6. 摸鱼神器-VS Code秒变身小霸王游戏机

    虽互不曾谋面,但希望能和您成为笔尖下的朋友 以读书,技术,生活为主,偶尔撒点鸡汤 不作,不敷衍,意在真诚吐露,用心分享 点击左上方,可关注本刊 标星公众号(ID:itclanCoder) 如果不知道如 ...

  7. 炸裂!VSCode 摸鱼神器!!!

    来源:玩转Github本文约1600字,建议阅读5分钟 除了开发插件外,有哪些可以上班摸鱼的插件呢?这里给大家写一个渔夫指南,汇总一些在VSCode中可以"摸鱼"的好玩插件! 现在 ...

  8. 用 Python 一键分析你的上网行为, 看是在认真工作还是摸鱼

    简介 想看看你最近一年都在干嘛?看看你平时上网是在摸鱼还是认真工作?想写年度汇报总结,但是苦于没有数据?现在,它来了. 这是一个能让你了解自己的浏览历史的Chrome浏览历史记录分析程序,当然了,他仅 ...

  9. datagridview滚动条自动滚动_掘金上摸鱼的新发现,无限滚动(infinitescroll)

    前言 上班摸鱼,下班摸鱼,一直摸一直爽.在一次调试的过程中,我按下了F12刚好是掘金的页面,然后把代码输入到控制台之后,顺手滚动了几下右侧的滚动条,发现个问题如下图所示: ‍‍‍‍‍‍‍‍‍‍掘金官网 ...

最新文章

  1. Linux网络相关知识
  2. UART0串口编程(四):UART0串口编程之在UC/OS—II中遭遇的危机
  3. 五指CMS发布,主打高性能
  4. html5 - history 历史管理
  5. 1018. 可被 5 整除的二进制前缀
  6. 校园网打开IEEE 显示未登录
  7. 时间序列分析实验报告总结_时间序列分析实验报告
  8. 老师给我推荐的经典管理书籍
  9. docker网络配置和4G网卡关系 小白笔记
  10. MATLAB 内积外积混合积
  11. IDEA SVN 提交时提示failed: is out of date
  12. excel表格末尾添加一行_七夕表白,用Excel试试!抖音爆红,一晚点赞破百万
  13. ArcGIS10.2版本正确的ArcGIS_Editor_OSM下载与安装
  14. CSS层叠样式表(Cascading Style Sheets)
  15. java mf文件怎么打开_安卓手机如何打开.MF文件?
  16. 姨搜侯松:信贷场景全流程数据风控体系
  17. 热评云厂商:蓝汛4.0亿元,如何扭转乾坤看转型与创新
  18. python文件读写原理的一些理解:r,r+,w,w+,a,a+,以及seek()方法
  19. 爆乱媒评——雄性传媒,大与小的技巧——凤凰卫视VS央视评点(1)
  20. AllWinner T113 wifi tools交叉编译

热门文章

  1. vista任务栏透明_在Windows XP中获取Vista任务栏缩略图预览
  2. 询问HTG:白噪声屏幕保护程序,有效的文件命名以及从密码泄露中恢复
  3. 形容计算机老师风采的句子,关于老师的句子
  4. mysql ldf文件太大_Linux_数据库清除日志文件(LDF文件过大),清除日志: 复制代码 代码如 - phpStudy...
  5. KVOController代码分析和踩坑
  6. 【初探移动前端开发03】jQuery Mobile(上)
  7. Windows 11 新版 22593 发布:文件资源管理器全新主页,开始菜单图标优化
  8. 新功能抢先看!Windows 11 2022 版全新 ISO 镜像来了+下载
  9. 编程语言也环保?C语言领跑,Python、Perl垫底
  10. WPF实现一个彩虹按钮