obsidian 本身是不开源的,但大多数插件开源,正在看它的思路,官网的 demo 是:
https://github.com/obsidianmd/obsidian-sample-plugin
这个 demo 只有一个源文件 main.ts:(主要是想知道 demo 怎么调用到 obsidian 内部的 loadData())
// main.ts
// 下面的 obsidian 通过 npm i obsidian 安装,
// 但是./node_modules/obsidian/的所有文件都是.d.ts 文件,没有任何函数实现
import { ......, Plugin, ...... } from 'obsidian';
export default class MyPlugin extends Plugin { // demo 插件的主类
......
async loadSettings() {
// demo 里面没有 loadData()的实现,也就是它调用了父类 Plugin::loadData()
this.settings = Object.assign({}, DEFAULT_SETTINGS, await this.loadData());
}
......
}
父类 Plugin 代码在./node_modules/obsidian/obsidian.d.ts:
// obsidian.d.ts
export abstract class Plugin extends Component {
......
loadData(): Promise<any>;
......
}
不管是 Plugin 还是 Component ,都没有 loadData 的实现,只有定义
loadData 应该是在 Obsidian 里面实现的,那么 MyPlugin 是怎么调用到 Obsidian 里面的 loadaData 函数呢?
希望大佬不吝赐教,万分感谢。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.