很多感觉实在是太妙了,这里记录下来

主要的几个关键词

  • service
  • command

1 service依赖注入

我把service称之为全局变量,因为在任何地方都可以访问到。

service全局变量 + collection管理(事件 + list + 状态 + 方法)

  • 事件监听
    • 供外部来进行监听其状态变化。
    • editorService.onDidActiveEditorChange
  • list
    • 对当下列表的存储。
    • 不过一般都是private或readonly。
  • 状态
    • 即当前的一些状态
    • listService.lastFocusedList
  • 方法
    • 对外提供的列表操作方法。
    • 如打开文件,

vscode中很多都是有状态的,激活的文件,左侧focus的列表

看看几个重要的service

  • editorService
    • onDidActiveEditorChange
    • openEditor
  • listService
    • lastFocusedList
    • register
  • editorGroupsService
    • onDidAddGroup()
    • groups
    • activateGroup()
  • WorkspaceService
  • IConfigurationService
    • onDidChangeConfiguration
    • getConfigurationData
  1. // explorerView.ts
  2. // 监听右侧文件区的变更,更新左侧的文件树
  3. this.disposables.push(this.editorService.onDidActiveEditorChange(() => this.revealActiveFile()));

好处在哪里?

如果过去如何处理的?

有哪些处理方式?

  • 监听事件
  • redux全局

service和collection管理

  • 来源追溯

  • 更聚合,更有意义,更好维护
    • 定义为一个聚合的service
  • 依赖更清晰
    • 通过声明的依赖注入,更知道依赖来自哪里。

事件

  • 事件的name不好维护。不知道事件来源。
  • 依赖不清晰
    • 不知道监听的command来自哪里

      2 command全局命令

command的全局命令进行执行

3