在设计一个 node 的插件化框架,学习 obsidian 插件但是有一些代码没看懂,请指教

1次阅读

共计 750 个字符,预计需要花费 2 分钟才能阅读完成。

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;
    ......
}

不管是 Plugin 还是 Component,都没有 loadData 的实现,只有定义

loadData 应该是在 Obsidian 里面实现的,那么 MyPlugin 是怎么调用到 Obsidian 里面的 loadaData 函数呢?

希望大佬不吝赐教,万分感谢。

正文完
 0