Psyche เป็นโซลูชันแบบเลื่อนลงสำหรับการค้นหาเอกสารซึ่งได้รับแรงบันดาลใจจากเอกสารการค้นหาของ Algolia
ตรวจสอบเอกสารประกอบความคิดสำหรับการสาธิตสด

คำเตือน: Psyche ถูกสร้างขึ้นโดยเฉพาะสำหรับการค้นหาเอกสาร มันไม่ได้ถูกสร้างขึ้นสำหรับการใช้งานในอินเทอร์เฟซอื่น ๆ (เช่นอีคอมเมิร์ซ) หรือใช้กับแผนการข้อมูลที่กำหนดเอง
ไคลเอนต์ Psyche ต้องการดัชนีผลลัพธ์ที่สร้างไว้ล่วงหน้าเพื่อค้นหา นี่ควรเป็นอาร์เรย์ของบันทึก Result (ดู types.d.ts) ดัชนีมีให้กับลูกค้าโดยทางโปรแกรม แต่ควรใช้รูปแบบของไฟล์. .json ที่ไม่ได้ฟอร์ม/minified
ดัชนีคือปลั๊กอิน/มิดเดิลแวร์ที่รวบรวมข้อมูลไซต์และสร้างดัชนีไม่ว่าจะเป็นในระหว่างกระบวนการสร้างหรือการบินหากไซต์เสิร์ฟแบบไดนามิก
ดัชนีสำหรับเครื่องกำเนิดเอกสารบางตัวมีให้ด้านล่าง หากยังไม่รองรับเครื่องกำเนิดไฟฟ้าของคุณให้เปิดคำขอคุณลักษณะหรือเขียนของคุณเองและเปิดคำขอดึง
เพิ่มสิ่งต่อไปนี้ในไฟล์ _config.ts ของคุณ:
import psyche from 'https://deno.land/x/psyche/indexers/lume.ts' ;
site . use ( psyche ( ) ) ; ตัวทำดัชนีสามารถกำหนดค่าได้โดยการจัดหาวัตถุ LumeConfig เป็นอาร์กิวเมนต์แรกของการโทร psyche() (ดู types.d.ts)
โดยค่าเริ่มต้น:
/search.jsondata.section หรือที่ data.draft = true จะถูกละเว้นdata.section_order & เรียงตาม data.orderdata.titledata.section<article></article> ในหน้าจะถูกจัดทำดัชนีตามความหมาย HTML องค์ประกอบอื่น ๆ (เช่น <blockquote></blockquote> ) ได้รับการปฏิบัติเป็นย่อหน้า สิ่งนี้ใช้งานได้ดีที่สุดกับเอาต์พุต Markdownอ่านข้อมูลหน้าและ/หรือหน้าข้อมูลที่ใช้ร่วมกันของเอกสารของ Lume เพื่อดูวิธีการตั้งค่าคุณสมบัติเหล่านี้
ไคลเอ็นต์ Psyche เขียนด้วย TypeScript คุณสามารถนำเข้าโดยตรงหากสินทรัพย์ของไซต์ของคุณจะถูกรวมเข้าด้วยกันเช่น Esbuild หรือนำเข้า JavaScript Build และ Minified 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 (ดู types.d.ts) จะส่งคืน ClientInstance (ดู types.d.ts)
การโทร .register() บนอินสแตนซ์ไคลเอ็นต์จะแทรกส่วนประกอบลงในเอกสารและฟังการกด Hotkey ส่วนประกอบสามารถเปิดได้โดยการโทร .open() หรือโดยการกด CTRL/⌘ + K
เช่น
const searchInstance = psyche ( {
theme : { scrollbarStyle : 'square' } ,
index : await fetch ( '/search.json' ) . then ( ( res ) => res . json ( ) ) ,
} ) ;
searchInstance . register ( ) ;
searchInstance . open ( ) ; หากต้องการเพิ่มฮอตคีย์ลงในรายการในการค้นหาโมดัลให้เพิ่มลงในอาร์เรย์ hotkeys ของวัตถุ ClientConfig ของ Psyche (ดู Types.d.ts)
สำหรับคีย์ที่ขึ้นอยู่กับแพลตฟอร์มตัวส่งออก platformModifier ที่มีชื่อจะเทียบเท่ากับคีย์ ⌘ บน MacOS หรือคีย์ CTRL บนแพลตฟอร์มอื่น ๆ
ในการจัดการสายลัดจัดเตรียมวัตถุ ClientHotkey (ดู types.d.ts) ไปยังชื่อ Export registerHotkey ที่มีชื่อ นี่คือ KeyboardEvent บางส่วนที่มีคุณสมบัติเพิ่มเติมสองสาม:
platformModifier เทียบเท่ากับ metaKey บน macOS หรือ ctrlKey บนแพลตฟอร์มอื่น ๆonkeydown จะถูกเรียกเมื่อการรวมคีย์ถูกกดลงผ่าน KeyboardEvent ที่ถูกทริกเกอร์เป็นอาร์กิวเมนต์แรกonkeyup จะถูกเรียกเมื่อการรวมคีย์ถูกปล่อยออกมาผ่าน KeyboardEvent ที่ถูกทริกเกอร์เป็นอาร์กิวเมนต์แรกเช่น
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 ( ) ;การเปลี่ยนแปลงโครงการนี้จะถูกบันทึกไว้ในการเปลี่ยนแปลง
โครงการนี้ได้รับใบอนุญาตภายใต้ใบอนุญาต MIT
เพื่อสนับสนุนการพัฒนาในอนาคตของโครงการนี้โปรดพิจารณาสนับสนุนผู้เขียน