Alt-er / obsidian-sync-share

Sync and share (publish) your notes in your own private service.
https://share.alter.run/share/alter/0798331c-7d63-4fa7-b312-a600ad62aea7
MIT License
80 stars 1 forks source link

建议:在server端可以上传主题css模板 #20

Open ikelvingo opened 5 months ago

ikelvingo commented 5 months ago

建议在server端可以上传在用主题css文件,或者可以简单复制主题css文件中的部分代码块,这样可以保证发布内容与编辑内容可视化一致。

Alt-er commented 5 months ago

笔记分享页面并不是复用的obsidian本身的markdown渲染引擎, 并不能直接适配原来的css主题文件, 如果要直接兼容ob的css文件可能得重构了

ikelvingo commented 5 months ago

笔记分享页面并不是复用的obsidian本身的markdown渲染引擎, 并不能直接适配原来的css主题文件, 如果要直接兼容ob的css文件可能得重构了

是的,之前我没有描述清楚具体的细节,并不是在发布时上传当前obsidian所使用主题。而是可以在自己部署的server端,上传css样式。 请参考https://github.com/alangrainger/share-note 实现的效果,我揣测作者在服务端已经将所有已经发表的theme都部署了,只需要在publish时传递下主题名称和明暗设置就可以了。

Alt-er commented 5 months ago

我简单看了下这个插件, 他的原理应该是直接获取的ob渲染出来的元素(因为ob本身就一个浏览器), 并上传到服务器上 , 这样做可能会有几个问题:

ob升级后他的解析dom的处理流程可能会出现没有考虑到的情况 , 可能会导致报错或者样式错乱等问题.

直接获取出来的dom序列化后应该是很大的(我没有测试过) , 页面可能会达到几兆到十几兆的大小,目前我的模式只有几百k的大小, 如果后续采用服务端渲染可以达到几十kb的大小

Alt-er commented 5 months ago

我刚刚尝试安装了这个插件, 在我这边使用最新版本的ob是无法使用的(控制台出现错误), 看来和我猜想的一致, 版本升级后可能会有兼容问题, 当然我也只是简单的看了一下, 有可能不是这个原因.

image
ikelvingo commented 5 months ago

我简单看了下这个插件, 他的原理应该是直接获取的ob渲染出来的元素(因为ob本身就一个浏览器), 并上传到服务器上

是的,你说的没错,我也跟进了下,该插件的确是将css作为附件打包上传了。 我提这个建议的本意时希望可以将内容和样式的切割更灵活,尤其是不少插件、主题或者css片段会引起发布页面的兼容性问题。与其作者来做适配和兼容,不如将页面元素的样式都交给预置在服务器的主题样式,且该主题样式和obsidian主题样式配对。这样上传时只需要上传基本的静态页面即可。

Alt-er commented 5 months ago

我个人是不推荐将ob中渲染的页面直接在浏览器中渲染的, 他这个实现方式问题还是挺多的, 除了前面说的还有: 可能导致页面失去交互性, 例如标题折叠功能无法使用. 无法显示公式等. 这些都需要研究ob的代码才能兼容, 工作量相对来说比较大, 容易出问题.

如果只是为了自定义样式, 我可以开放一个主题css文件,用来覆盖默认样式, 但是这个样式的规范和ob是不通用的, 也就是说ob中的主题是没法直接拿过来使用的