Obsidan插件开发

1 Obidian 开发

Obsidian 基于 Electron 框架开发,其前端主要使用了 HTML、CSS 和 JavaScript,而后端使用了 Node.js。Node.js 是基于 Chrome V8 引擎的 JavaScript 运行环境,使 JavaScript 能在服务器端运行。

在开发 Obsidian 插件时,将涉及 JavaScript 和 Node.js 的相关知识。如:使用 Node.js 提供的模块和 API 来进行文件操作、访问系统资源、处理网络请求等。

2 开发环境

我的开发环境为:VSCode + Node Docker+ Copilot。这样既不影响我的宿主机环境,开发也比较舒服,还可以利用辅助编码工具。

如果想开发 Obsidian 插件,就需要安装 Node.js 环境。Node.js 提供了 JavaScript 运行环境和许多内置模块;同时,安装 Node.js 也会安装 npm,用来管理插件项目的依赖项。

因为之前安装过 node 镜像,这次就直接使用了:

$ docker run --name obdev --rm -v /exports:/exports -it node:16-alpine sh
$ npm -v # 8.19.4

3 最简单示例

3.1 创建插件

三方插件至少需要:main.js 、manifest.json 和 styles.css 三个文件。

官方推荐从最简单的示例代码开始,略做修改即可实现自己的插件:

# git clone https://github.com/obsidianmd/obsidian-sample-plugin
# cd obsidian-sample-plugin
# npm install
# npm run dev # 开启热编译模式,修改时自动编译此时编译出 main.js
将上述三个文件复制到plugins目录# cd obroot/.obsidian/plugins/
# mkdir obsidian-sample-plugin
# cp x/main.js x/manifest.json x/styles.css obsidian-sample-plugin/也可选择把代码放在 .obsidian/plugins下,则不需要复制,调试更方便

此后重启 Obsidian,在已安装的第三方插件列表中,将看到“Sample Plugin”。只需启用它即可。

在示例代码中,可以看到一些 TypeScript 脚本。Node.js 不直接运行 TypeScript 文件。通过编译器将 TypeScript 文件编译为 JavaScript 文件后运行。可以在 package.json 文件中看到 tsc 的编译过程。

TypeScript 是 JavaScript 的一个超集(一个集合包含另一个集合的所有元素,还包含额外的元素),TypeScript 包含了 JavaScript 的所有特性和语法,同时还添加了静态类型系统等新功能。另外,还可以使用 React,VUE,或者 Svelte 来实现插件。****

3.2 主要文件说明

  • main.js # 编译后的程序
  • styles.css # 样式
  • manifest.json # 插件信息
  • main.ts # 程序入口 typescript
  • package.json # 配置管理文件

3.3 修改插件

3.3.1 manifest.json

  • 修改唯一标识 id
  • 修改插件名 name

3.4 重新加载插件

由于已在编译环境中设置了 npm run dev 来进行热编译,所以一旦程序修改保存,就会立即编译成 js。

在 Obsidian 的设置中,你可以通过禁用再启用该插件来重新加载它,以使用修改的功能;需要注意的是:每次禁用再启用设置都会丢失原有设置。

4 常用功能

以下是我们经常使用的一些插件功能:

  • 使用 Ctrl+P 命令快速调用功能
  • 弹出对话框界面
  • 定时执行特定任务,如同步,上传和下载
  • 在特定位置显示更多信息或界面,如图标、提示、选项卡和侧边栏
  • 修改文档内容
  • 读写和显示设置信息

5 使用体会

我使用了 VSCode+Copilot,这样就不再需要搜索各种代码用法,只需提供简单文本描述来自动生成代码,真的是只要会一点 JavaScript 语法就行。

可能你觉得我说得有点夸张,但一旦环境搭建好,编程就和写作文差不多。目前看来,陌生的技术已经不再是难题,90% 的时间都会用于业务逻辑的处理。

6 参考资源

6.1 api 详解

https://github.com/obsidianmd/obsidian-api

该项目详细阐述了如何编写各特定文件。

6.2 中文文档

https://luhaifeng666.github.io/obsidian-plugin-docs-zh/

强烈推荐这个中文文档,它包含了 Obsidian 插件常用的控件方法,并配有示例,只需复制即可使用。此外,这个帮助文档本身也是一个开源项目,之前大家可以参与编辑和提交。

6.3 官方文档

Obsidan插件开发

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/863107.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

qt 用宏控制静态接口的统一

1.概要 /** * 单件宏实验 * 创建一个可以生成单件的宏 * 起因:想让有些控件单件,但是c不支持静态的继承(c#支持) * 那么如果保证这些接口的统一呢,用宏 */ 2.代码 2.1 a.h #ifndef A_H #define A_H#include &…

分布式kettle调度管理平台简介

介绍 Kettle(也称为Pentaho Data Integration)是一款开源的ETL(Extract, Transform, Load)工具,由Pentaho(现为Hitachi Vantara)开发和维护。它提供了一套强大的数据集成和转换功能&#xff0c…

【C++】类、静态、枚举、重载、多态、继承、重写、虚函数

五、类 面向对象编程是一个巨大的编程范式。C中的类class就是基于对象的程序设计。 我们可以用类来定义一个新的类型,这些新类型就可以像内置类型一样使用。 内置类型颗粒度太太小,现实需求又非常复杂,这就需要我们把内置类型适度的进行拼搭…

源码学习:文件描述符

在进程描述学习中,扯到了max_fds,接着就联想到了日常运维中常见的ulimit参数、sysctl内核参数,原来以为max_fds与这些个关联性比较强,但经过一早上折腾以后,发现其实还是有一些差距的。但是在学习过程中,却…

【C++】数组、字符串

六、数组、字符串 讨论数组离不开指针,指针基本上就是数组的一切的基础,数组和指针的相关内容参考我的C系列博文:【C语言学习笔记】四、指针_通过变量名访问内存单元中的数据缺点-CSDN博客【C语言学习笔记】三、数组-CSDN博客 1、数组就是&…

RxJava快速入门

简单来说RxJava是一个实现响应式编程的类库。 那什么是响应式编程? 响应式编程的核心思想是"数据流是第一等公民”,程序的逻辑建立在数据流的变化之上。 响应式编程的几个核心概念: (1)数据流:在响应式编程中&…

数据结构03 链表的基本操作【C++数组模拟实现】

前言:本节内容主要了解链表的基本概念及特点,以及能够通过数组模拟学会链表的几种基本操作,下一节我们将通过STL模板完成链表操作,可以通过专栏进入查看下一节哦~ 目录 单链表及其特点 完整链表构成 完整链表简述 创建单链表 …

京东云备案流程图_云主机快速ICP备案_京东云服务器备案问题解答

京东云ICP备案流程,备案包括网站和APP备案,以及备案问题解答FAQ,阿腾云以京东云网站域名备案流程为例,先填写主办单位信息,选择网站备案或APP备案,申请授权码并验证,填写并上传主办单位详细信息…

【论文解读】Video Coding with Cross-Component Sample Offset

论文下载地址:Video Coding with Cross-Component Sample Offset 时间:2024 年 作者:Han Gao、Xin Zhao、Tianqi Liu和Shan Liu 级别:《IEEE Transactions on Image Processing》 机构:Tencent America 摘要 研究背景:传统的图像和视频压缩技术主要探索空间、时间和主观…

Python入门-基本数据类型-数字类型的操作

1.数字运算符 数字运算符是一些特殊的符号,主要用于数字之间的运算。根据功能可以将数字运算符分为算 术运算符、赋值运算符等。 1.1算术运算符 Python的算术运算符有“”“-”“*”“/”“%”“**”和“//”,这些都是双目运算符,用于对两…

光伏仿真软件是什么?都有哪些功能?

光伏仿真软件,作为现代光伏系统设计的重要工具,正日益受到设计师、工程师和决策者的青睐。它结合了物理学、工程学和计算机科学的原理,以数字化方式模拟光伏系统的运行,帮助用户预测和优化系统的性能。本文将详细探讨光伏仿真软件…

IntelliJ IDEA介绍

IntelliJ IDEA 是由 JetBrains 开发的一个集成开发环境 (IDE),专门为 Java 开发设计,同时也支持多种其他编程语言和框架。IntelliJ IDEA 以其智能代码分析、强大的重构功能以及丰富的插件生态系统而闻名,是许多开发者的首选 IDE。 IntelliJ IDEA介绍 IntelliJ IDEA 的主要…

发布一个Yii2扩展把debug信息存储到MongoDB中

这里写自定义目录标题 Yii 2 Debug For MongoDB目录结构安装依赖安装说明配置说明 Yii 2 Debug For MongoDB 本项目为yii2-debug的扩展,使用MongoDB对debug数据进行存储。如果使用Yii2进行多个应用的开发的话,把debug信息汇聚到一起可以方便查阅。 http…

[Go 微服务] go-micro + consul 的使用

文章目录 1.go-micro 介绍2.go-micro 的主要功能3.go-micro 安装4.go-micro 的使用4.1 创建服务端4.2 配置服务端 consul4.3 生成客户端 5.goodsinfo 服务5.1 服务端开发5.2 客户端开发 1.go-micro 介绍 Go Micro是一个简化分布式开发 的微服务生态系统,该系统为开…

Java学习【IO流:深入理解与应用(上)】

Java学习【IO流:深入理解与应用(上)】 🍃1.IO流体系结构🍃2.FileOutputStream🍁2.1FileOutputStream写数据的三种方式🍁2.2换行和续写 🍃3.FileInputStream🍁3.1每次读取…

软考高项备考经验分享

高项备考经验分享 在备考被论文卡两次后,这次终于通过了高项,分不是很高,比较幸运,对这次考试做个总结与分享,希望对同学们有所帮助。 1、备考时间 首先备考时间上不建议拉的太长,每天坚持看书3~6个月时…

《编译原理》阅读笔记:p25-p32

《编译原理》学习第 5 天,p25-p32总结,总计 8 页。 一、技术总结 1.lexical lexical这个单词后续会经常用到,所以首先要搞懂它的英文意思,不然看到中文的“词法,语法,文法”这三个词的时候就会懵了——l…

异常实践1

只针对不正常的情况才使用异常 异常只应该被用于不正常的条件,它们永远不应该被用于正常的控制流。《阿里手册》中:【强制】Java 类库中定义的可以通过预检查方式规避的RuntimeException异常不应该通过catch 的方式来处理,比如:Nu…

Java实现 现场评委给参赛选手打分的过程

通过评委的积极参与和公正评分,可以提高评选活动的公信力和可信度。 透明性:参赛者和观众应该清楚了解评审标准和评分过程,以便能够理解评委的评判依据。 可靠性:评委评分应该具有一致性和可靠性,不受主观因素或随机误差的影响。 编写程序,Java代码实现&#xff1…

计算机组成原理:海明校验

在上图中,对绿色的7比特数据进行海明校验,需要添加紫色的4比特校验位,总共是蓝色的11比特。紫色的校验位pi分布于蓝色的hi的1, 2, 4, 8, 16, 32, 64位,是2i-1位。绿色的数据位bi分布于剩下的位。 在下图中,b1位于h3&a…