实际上noob是原本naive主题的插件和服务模块.
但是naive本身除了这两个模块之外,其实也没有添加什么样式文件或者css代码.
再加上思源支持多工作空间同时开启后naive需要做一些适配才能够支持多个空间的聚合发布等等功能.
干脆把它重写一遍算了.
这是一个思源笔记的"大型"代码片段(虽然你倒不一定要把它安装在代码片段文件夹里).
主要功能是对你的笔记中的代码片段进行管理|分发等等.
同时也为一些特殊的代码片段(服务和插件)提供了一些简单的接口和依赖支持.
核心插件pluginsInNote(还没有重构完毕)能够将笔记内代码作为插件安装,方便通过社区发帖的方式来交流和分发思源的扩展代码。
核心服务noob-service-complier依赖vite、esbuild、esmsh为所有的插件以及笔记内代码片段提供依赖支持。
核心服务noob-service-publishe将思源笔记内容作为博客发布到局域网(当然也可以是公网),支持与思源本身样式基本一致的大纲、文档树、关系图、以及导航栏。
通过noob可以直接以bare import的形式引入相关依赖(某个包第一次引入时可能需要一定的编译时间),例如:
import vue from 'vue@2.7.11'
import react from 'react'
import {creatApp} from 'vue'
import {creatApp} from 'vue?keepname'
这样的代码可以直接使用.
可以直接在插件中支持使用less、scss等。
自带的vite服务提供了这样的能力,如果在引入某个你认为应该支持的包的时候遇到了问题,欢迎提出新的issue。
不过,对于编程经验比较丰富的选手,可能直接采用其他方式开发代码片段会比等待我修复更快.......
一键将完成的代码编译到普通的代码片段,方便在其他地方(没有electron环境时)使用以及分享。
支持将笔记做为插件运行,方便通过复制黏贴代码的方式进行功能分享。
插件代码可以通过import {name} from 'notes/id' 或者 requireNote(id) 的方式引入笔记内代码。
noob核心的vite服务和esmsh服务在原版基础上有一些细微的修改,请不要手动升级这些依赖.
内置esmsh不能通过127.0.0.1之外的ip访问,其他ip对它的访问只能通过本地服务的转发,这是基于安全性的考虑.
之后会支持通过fix配置使用本地文件替代内置esmsh不能正确编译的包,
noobInstaller是一个小安装工具.
可以通过它自动拉取noob核心代码并安装.
方法是将noobInstaller放置于主题文件夹内,然后通过import的方式进行引入.
需要将noobinstaller放置到主题文件目录.
并且在theme.js中通过import('./noobcore/index.js')引入。
noob可以安装在你电脑上的任何位置(默认为用户家目录),你可以手动安装noob,但是这种方式下需要修改引导脚本,将corePath指向正确的地址.
noob的插件应该以noob-plugin-<插件名字>的形式作为包名,便于大家直接通过npmjs.org搜索插件和查看插件的说明等。
除了内置的插件订阅表能够直接访问之外,搜索插件需要能够连接npmjs.com
有非常严重隐患或者恶意的代码包将会被列入noob-bazzar包中,noob并不会阻止用户加载这些插件包,仅仅作为提醒使用。
noob默认用户知道自己安装的所有内容能够用来做什么。
如果这不够明确的话,这些内容的能力包括:
-
删除你的笔记或者向你的笔记中添加你并不知情也并不一定喜爱的内容.
-
删除你设备上的其他文件(这包括一些系统文件),或者添加一些其他文件.
-
将你的笔记内容或者设备上的其他内容发送给你没有授权可以获取它们的人.
-
浪费你的精力在挑选一些看起来很花哨的功能上而放弃了对你来说真正重要的东西.
作者没有能力审核来自社区提交的插件源代码仓库内容,所以你要谨记这些内容可能造成的后果,在运行其他人分发给你的代码之前, 一定记得这代表着你对他某种程度上的信任。
noob不会自动启用新安装的插件或者服务,你必须手动启用它们。
因为它包含了vite和esm.sh等,还有为了支持.vue、.svelte等框架编译所需要的代码。
看上面那一条,最大的时候naive的完整包包含了picgo、nodered、rubick核心等,体积比思源本体还要大,不太适合上架。
noob的功能也比较复杂,拆分成多个挂件或者主题之类上架也曾经考虑过,但是在这样拆分的工作量和收益之间比较之后,我决定还是继续让它作为一个代码包发布算了。
而且作者的水平不是太好,不管是之前的naive还是现在的noob都不太适合推广给大量用户使用。