很多感觉实在是太妙了,这里记录下来
主要的几个关键词
- 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
// explorerView.ts
// 监听右侧文件区的变更,更新左侧的文件树
this.disposables.push(this.editorService.onDidActiveEditorChange(() => this.revealActiveFile()));
好处在哪里?
如果过去如何处理的?
有哪些处理方式?
- 监听事件
- redux全局
service和collection管理
- 来源追溯
- 更聚合,更有意义,更好维护
- 定义为一个聚合的service
- 依赖更清晰
- 通过声明的依赖注入,更知道依赖来自哪里。
事件
command的全局命令进行执行