Open lei4519 opened 3 months ago
2024-05-01
啊,性能优化的味道
利用 JS 读取配置文件,懒加载启动插件
卡片笔记法 里面提到笔记的的启动速度很重要
但随着 obsidian 安装的插件越来越多,也越来越不满足我们的要求了,尤其是在手机上!
简单搜索之后发现早已有人发现并解决了问题:Improve Obsidian Startup Time on Older Devices with the FastStart Script 看完之后发现实现原理就是利用 templater 插件可以执行 JS 的能力,初始情况下仅保留必要插件启用,等启动之后再使用 JS 延时启动插件
创建一个模板,设置 templater 的 StartUp templates 选项为此模板,模板内容如下:
StartUp templates
<%* fastStart = async (filename, delayInSecond) => { if (tp.file.exists(filename)) { const f = tp.file.find_tfile(filename); let plugins = (await app.vault.read(f)).split(/\r?\n/).map(l => l.trim()).filter(l => !l.startsWith('//')).filter(l => tp.obsidian.Platform.isMobile ? !l.startsWith('onlyDesktop') : true).map(l => l.replace(/^onlyDesktop\s*&&\s*/, '')); setTimeout(async () => { plugins.forEach(async (p) => await app.plugins.enablePlugin(p)) }, delayInSecond * 1000) } } await fastStart("FastStart-Plugins-FastDelay", 2) await fastStart("FastStart-Plugins-ShortDelay", 10) await fastStart("FastStart-Plugins-LongDelay", 30) %>
如果你会编程,不难发现逻辑是很简单的,就是读取配置文件中的插件列表进行启用
原始源码 再此,我稍微做了些修改,增加了如下功能
//
onlyDesktop &&
其中最下面的三行代码是可以根据自己的需求改动的,括号内的参数:
await fastStart("FastStart-Plugins-FastDelay", 2) await fastStart("FastStart-Plugins-ShortDelay", 10) await fastStart("FastStart-Plugins-LongDelay", 30)
逻辑是这样的,把插件分为 N 类
你可以根据自己的插件情况增加或减少分类,调整不同分类的延迟时间
一旦你确定了自己的分类,就可以建立相应的配置文件了
就是普通的 markdown,只不过内容是插件名称
那怎么知道插件名称呢?
在文件中写入
注意去掉 %\> 中的 \,我如果不写转义符号,内容就会被替换
%\>
\
<% Object.values(app.plugins.manifests).map(p=>p.id).sort((a,b)=>a.localeCompare(b)).join('\n') %\>
然后执行 Templater: replace templates in active file
Templater: replace templates in active file
模板代码就会被转换为你所安装的所有插件的插件名了
然后你只需要将不同的插件名划分到不同分类的文件中即可,写好之后可以重启 obsidian 测试一下
🚀 然后就继续享受本地笔记软件带来的速度体验了 🥰
TL;DR
利用 JS 读取配置文件,懒加载启动插件
启动速度 😅
卡片笔记法 里面提到笔记的的启动速度很重要
但随着 obsidian 安装的插件越来越多,也越来越不满足我们的要求了,尤其是在手机上!
简单搜索之后发现早已有人发现并解决了问题:Improve Obsidian Startup Time on Older Devices with the FastStart Script
看完之后发现实现原理就是利用 templater 插件可以执行 JS 的能力,初始情况下仅保留必要插件启用,等启动之后再使用 JS 延时启动插件
关键步骤
启动时执行 JS
创建一个模板,设置 templater 的
StartUp templates
选项为此模板,模板内容如下:如果你会编程,不难发现逻辑是很简单的,就是读取配置文件中的插件列表进行启用
原始源码 再此,我稍微做了些修改,增加了如下功能
//
表示禁止启用此插件onlyDesktop &&
表示插件仅在桌面端启用插件分类
其中最下面的三行代码是可以根据自己的需求改动的,括号内的参数:
逻辑是这样的,把插件分为 N 类
你可以根据自己的插件情况增加或减少分类,调整不同分类的延迟时间
配置文件
一旦你确定了自己的分类,就可以建立相应的配置文件了
就是普通的 markdown,只不过内容是插件名称
插件名称?
那怎么知道插件名称呢?
在文件中写入
然后执行
Templater: replace templates in active file
模板代码就会被转换为你所安装的所有插件的插件名了
然后你只需要将不同的插件名划分到不同分类的文件中即可,写好之后可以重启 obsidian 测试一下
🚀 然后就继续享受本地笔记软件带来的速度体验了 🥰