Psyche是灵感来自Algolia的DocSearch的启发,是用于搜索文档的介绍解决方案。
查看现场演示的概念增强器文档。

警告: Psyche是专门用于搜索文档的。它不是用于在其他接口(例如电子商务)中实现的,也不是与自定义数据方案一起使用。
心理客户需要预先生成的结果索引才能搜索。这应该是Result记录的数组(请参阅type.d.ts)。索引以编程方式提供给客户端,但应采用未施加/缩小的.json文件的形式。
索引是在构建过程中,或者在网站动态提供的情况下,可以在构建过程中或直接生成索引的插件/中间件,并生成索引。
下面提供了某些文档生成器的索引器。如果您选择的生成器尚未得到支持,请打开功能请求或编写您自己的功能并打开拉动请求。
将以下内容添加到您的_config.ts文件:
import psyche from 'https://deno.land/x/psyche/indexers/lume.ts' ;
site . use ( psyche ( ) ) ;可以通过将LumeConfig对象作为psyche()呼叫的第一个参数(请参阅type.d.ts)来配置索引器。
默认情况下:
/search.json 。data.section页面。节或data.draft = true将被忽略。data.section_order和data.order分类。data.title访问。data.section访问。<article></article>元素中的标题,代码块,段落和列表根据语义HTML索引。其他元素(例如<blockquote></blockquote> )被视为段落。这与降级输出最有效。阅读Lume文档的页面数据和/或共享数据页面,以查看如何设置这些属性。
心理客户端用打字稿编写。如果您的网站的资产将被EG Esbuild捆绑在一起,或者可以将其直接导入它,或者导入预先转移和缩小的JavaScript构建。
import psyche from 'https://deno.land/x/psyche/client/mod.ts' ;
// or
import psyche from 'https://deno.land/x/psyche/client/psyche.min.mjs' ; psyche默认导出是一个函数,并在提供ClientConfig对象(请参阅type.d.ts)时将返回ClientInstance (请参阅type.d.ts)。
在客户端实例上呼叫.register()将插入组件中的文档并收听Hotkey Presses。然后可以通过调用.open()或按CTRL/⌘ + K来打开组件。
例如
const searchInstance = psyche ( {
theme : { scrollbarStyle : 'square' } ,
index : await fetch ( '/search.json' ) . then ( ( res ) => res . json ( ) ) ,
} ) ;
searchInstance . register ( ) ;
searchInstance . open ( ) ; 要将热键添加到搜索模式中的列表中,请将其添加到Psyche ClientConfig对象的hotkeys数组(请参阅type.d.ts)。
对于依赖平台的热键,命名的导出platformModifier将等于MACOS上的⌘键或其他平台上的CTRL密钥。
要处理Hotkeys,请向命名的导出registerHotkey提供ClientHotkey对象(请参阅type.d.ts)。这是一个KeyboardEvent的部分,并具有一些其他属性:
platformModifier属性等效于MacOS上的metaKey或其他平台上的ctrlKey 。KeyboardEvent作为其第一个参数时,将调用onkeydown属性。KeyboardEvent作为其第一个参数时,将调用onkeyup属性。例如
import psyche , {
registerHotkey ,
platformModifier ,
} from 'https://deno.land/x/psyche/client/psyche.min.mjs' ;
registerHotkey ( {
key : 'l' ,
platformModifier : true ,
shiftKey : true ,
onkeydown : ( event ) => {
event . preventDefault ( ) ;
toggleTheme ( ) ;
} ,
} ) ;
const searchInstance = psyche ( {
hotkeys : [ { kbd : ` ${ platformModifier } + SHIFT + L` , label : 'to toggle theme' } ] ,
} ) ;
searchInstance . register ( ) ;该项目的更改记录在ChangElog中。
该项目已根据MIT许可获得许可。
为了支持该项目的未来发展,请考虑赞助作者。