-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path.cursorrules
101 lines (68 loc) · 3.95 KB
/
.cursorrules
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
## 项目背景
目前我的习惯通常是从网页摘录文章,然后在 OB 中阅读,使用了许多插件都没有比较好的解决方案。因为 Obsidian 是笔记软件,所以对于 md 文件本身没有什么注释的能力。
于是我打算自己写一个插件来满足阅读总结,大致思路如下:
1. 插件可始终显示当前激活的笔记内容。
2. 用户可以在插件窗口对当前笔记进行写入。
---
### **功能需求分析**
#### 1. 插件可始终显示当前激活的笔记内容
- **需求解析**:插件需要监听 Obsidian 的当前笔记变化,并动态更新插件窗口的内容。
- **技术关键**:
- **监听事件**:Obsidian 提供的 API(如 `workspace.on('active-leaf-change', callback)`)允许监听激活笔记的变化。
- **内容获取**:可以通过 Obsidian 的 `activeLeaf.view.getViewData()` 获取当前笔记内容。
#### 2. 用户可以在插件窗口对当前笔记进行写入
- **需求解析**:插件需要支持双向绑定,用户在插件窗口的修改可以同步更新到实际的笔记文件中。
- **技术关键**:
- **内容写入**:通过 Obsidian API 的文件操作功能(如 `vault.modify(file, content)`)将修改后的内容写回到对应文件。
### **技术实现分析**
#### Obsidian 插件开发基础
Obsidian 插件开发基于 TypeScript/JavaScript,拥有完善的插件 API 和社区文档,可以满足需求。
#### 技术可行性
1. **监听激活笔记**
- Obsidian 提供 `workspace` 对象,能监听到用户切换笔记的事件,并获取当前的笔记内容。
2. **创建独立的插件窗口**
- 插件可以创建一个独立的面板(Pane)或者嵌入侧边栏来展示内容,支持自定义样式和交互功能。
3. **实时更新内容**
- 插件可以绑定编辑事件(如 `onInput` 或 `onChange`),实时同步内容到笔记文件。
4. **数据持久化**
- Obsidian 自带文件管理功能,插件调用 API 即可操作 Markdown 文件,无需单独处理存储逻辑。
---
### **技术栈和工具建议**
1. **语言和框架**
- **TypeScript**:Obsidian 插件推荐使用 TypeScript,能提升开发效率和类型安全性。
- **HTML/CSS/JavaScript**:用于设计插件的 UI。
2. **依赖库**
- **Obsidian API**:官方插件 API,用于文件操作和事件监听。
3. **开发工具**
- **Obsidian Developer Mode**:在 Obsidian 的开发者模式下调试插件。
- **VS Code**:用于插件开发,配合 `obsidian-plugin-cli`。
4. **插件框架**
- 使用 Obsidian 插件模板(如 [obsidian-plugin-template](https://github.com/obsidianmd/obsidian-sample-plugin))可以快速搭建插件开发环境。
---
### **开发步骤建议**
1. **项目初始化**
- 克隆 Obsidian 插件模板,配置开发环境。
- 确保能够在 Obsidian 的开发者模式下加载插件。
2. **实现功能模块**
- **监听笔记切换**:实现监听激活笔记变化并动态更新插件窗口内容。
- **创建编辑面板**:在插件窗口中嵌入一个可编辑的组件。
- **同步笔记内容**:绑定事件监听器,实时更新笔记内容到文件。
3. **优化用户体验**
- 增加快捷键支持。
- 提供撤销/重做功能。
- 支持只读和编辑模式切换。
4. **测试与发布**
- 测试插件功能,确保兼容性和稳定性。
- 提交插件到 Obsidian 的社区插件库。
---
### **技术风险与解决方案**
1. **性能问题**
- 若笔记内容较大,实时更新可能引发卡顿。
- **解决方案**:利用防抖/节流机制减少频繁写入。
2. **Markdown 解析**
- 插件需要确保对 Markdown 格式的兼容性。
- **解决方案**:利用现成的 Markdown 解析库(如 Obsidian 内置解析功能)。
## 成功标准
验收标准:
1. 满足以上我说的这种方式,支持我在插件窗口读写笔记即可。
2. 总是以跑通流程为主。