随笔分类 - TypeScript
摘要:对VS Code extension进行单元测试时通常会遇到一个问题,代码中所使用的VS Code编辑器的功能都依赖于vscode库,但是我们在单元测试中并没有添加对vscode库的依赖,所以导致运行单元测试时出错。由于vscode库是作为第三方依赖被引入到我们的VS Code extension中
阅读全文
摘要:什么是单元测试? 所谓单元测试,是对软件中单个功能组件进行测试的一种软件测试方式,其目的是确保代码中的每一个基本单元都能正常运行。因此,开发人员在应用程序开发的整个过程(即代码编写过程)中都需要进行单元测试。在进入到软件开发的下一阶段之前,对程序进行单元测试是一个不错的主意。单元测试非常有用,它使用
阅读全文
摘要:上一篇我介绍了如何在VSCode Webview中实现点击链接下载图片或文件,本文介绍如何在默认浏览器中打开一个新的页面。 在浏览器中,如果要实现打开一个新的页面有许多种不同的方法,例如: window.open("https://www.cnblogs.com/jaxu", "_blank");
阅读全文
摘要:众所周知,在一个普通的HTML页面中,如果要实现一个链接点击后下载图片,只需要在页面上放一个<a>标签,然后将属性href的值指向图片的URL或者Base64字符串就可以了。或者按照stackoverflow上提供的方法动态创建<a>标签来完成图片的下载动作。不过原理都是相同的。 但是这个方法在VS
阅读全文
摘要:我们曾经试图遵循良好的编程习惯,在创建和定义方法时尽可能按照“职责单一”和“开放-封闭”原则将那些没有必要暴露出来的方法定义为私有方法,但是在编写测试用例时又往往对这些设计原则嗤之以鼻,因为你会为无法编写测试这些私有方法的测试用例而感到苦恼。 从互联网上找到的许多方法都不是最优解决方案。在本文中,我
阅读全文
摘要:我们在开发Visual Studio Code插件时,经常需要通过Visual Studio Code提供的API来进行一些UI操作,例如打开文档、修改并保存文档内容、关闭文档、打开功能面板等,有些功能可以通过查看Visual Studio Code的官方文档找到对应的API接口和相应的对象,但很多
阅读全文
摘要:首先,本文不是一篇介绍有关TypeScript、JavaScript或其它编程语言数据结构和算法的文章。如果你正在准备一场面试,或者学习某一个课程,互联网上可以找到许多相关的资源,我个人比较推崇hackerrank.com。 本文的主要目的在于帮助你了解并熟知以下两点: 如何用TypeScript编
阅读全文
摘要:我们在用TypeScript编写VSCode Extension应用时,可以通过VSCode API提供的内置Command "vscode.diff"来快速比较两个文档,有关该命令的参数介绍可以查看官方文档。基本用法如下: vscode.commands.executeCommand("vscod
阅读全文
摘要:上一篇:Theia APIs——事件 通过JSON-PRC进行通信 在本节中,我将讲解如何创建后端服务并通过JSON-PRC来连接它。 我将使用debug logging system作为例子来进行讲解。 概述 本示例将用express框架创建一个服务,然后通过websocket连接该服务。 注册服
阅读全文
摘要:上一篇:Theia APIs——Preferences 事件 Theia中的事件或许会让你感到困惑,希望本节能阐述清楚。 来看下面的代码: (来自logger-watcher.ts) @injectable() export class LoggerWatcher { getLoggerClient
阅读全文
摘要:上一篇:Theia APIs——命令和快捷键 Preferences Theia有一个preference service,模块可以通过它来获取preference的值,提供默认的preferences以及监听preference的更改。 Preferences的内容可以保存在workspace根目
阅读全文
摘要:上一篇:使用Theia——创建语言支持 命令和快捷键 Theia可以通过多种不同的方式进行扩展。命令允许packages提供可以被其它包调用的唯一命令,还可以向这些命令添加快捷键和上下文,使得它们只能在某些特定的条件下被调用(如窗口获取焦点、当前选项等)。 在Theia中添加命令 要将命令添加到Th
阅读全文
摘要:上一篇:使用Theia——创建插件 Theia——添加语言支持 Theia中TextMate的支持 使用TextMate语法可以为大部分源文件提供精准的着色修饰,虽然这只是在语法级别上(没有语言本身的深度解析)。语义着色可以由语言服务器提供。 TextMate语法主要有两种格式:.plist和.tm
阅读全文
摘要:上一篇:使用Theia——创建扩展包 创建Theia插件 下面我们来看看如何创建Theia插件。作为示例,我们将注册一个Hello World命令,该命令显示一个“Hello World”通知。本文将指导你完成所有必要的步骤。 Theia的架构 插件与扩展包 Theia是一个可扩展的IDE。你可能听
阅读全文
摘要:上一篇:使用Theia——构建你自己的IDE 创建Theia扩展包 本例中,我们将添加一个菜单项“Say hello”用来显示一个通知“Hello world!”。本文将指导你完成所有必要的步骤。 Theia的架构 Theia应用程序由所谓的扩展包(extensions)构成。一个扩展包提供一组特定
阅读全文
摘要:上一篇:Theia架构 构建你自己的IDE 本指南将教你如何构建你自己的Theia应用。 必要条件 你需要安装node 10版本(译者:事实上最新的node稳定版即可): 以及yarn: 还需要确保已安装python 2.x,可通过python --version来检查。 安装 首先请创建一个空目录
阅读全文
摘要:上一篇:Theia——云端和桌面版的IDE 架构概述 本节描述了Theia的整体架构。 Theia被设计为一个可以在本地运行的桌面应用程序,也可以在浏览器和远程服务器之间工作。为了支持这两种工作方式,Theia运行在两个独立的进程中,它们被称之为前端和后端,相互之间通过WebSockets上的JSO
阅读全文
摘要:Theia是一个利用最新的web技术开发的支持云端和桌面运行的类似IDE的产品,它是一个可扩展的平台,并且全面支持多语言。 目标 建立一个可搭建类似IDE产品的平台 为终端用户提供完整的多语言IDE(不仅仅是智能编辑器) 同时支持云端IDE和桌面版IDE 通过language和debug serve
阅读全文