Psyche هو حل إسقاط للبحث عن الوثائق ، مستوحاة من مستندات Algolia.
تحقق من الوثائق المعززة للمفهوم للحصول على عرض حي مباشر.

تحذير: تم تصميم النفس خصيصًا للبحث عن الوثائق. لا يتم تصميمه للتنفيذ في واجهات أخرى (مثل التجارة الإلكترونية) أو الاستخدام مع مخططات البيانات المخصصة.
يتطلب عميل Psyche فهرس النتائج المولدة مسبقًا للبحث. يجب أن تكون هذه مجموعة من سجلات Result (انظر الأنواع. يتم توفير الفهارس إلى العميل برمجيًا ، ولكن يجب أن تأخذ شكل ملف .json غير المصقول/المصغر.
المؤسسات هي الإضافات/البرامج الوسيطة التي تزحف موقعًا وتنشئ فهرسًا ، إما أثناء عملية الإنشاء أو على نحو أثناء التنافس إذا تم تقديم الموقع ديناميكيًا.
يتم توفير فهرسة لبعض مولدات التوثيق أدناه. إذا لم يتم دعم مولدك المفضل بعد ، فافتح طلب ميزة أو كتابة طلب سحب الخاص بك وفتح طلب سحب.
أضف ما يلي إلى ملف _config.ts الخاص بك:
import psyche from 'https://deno.land/x/psyche/indexers/lume.ts' ;
site . use ( psyche ( ) ) ; يمكن تكوين الفهرس من خلال توفير كائن LumeConfig كوسيطة أول لمكالمة psyche() (انظر أنواعها).
افتراضيا:
/search.json .data.section أو حيث سيتم تجاهل data.draft = true .data.section_order وفرزها بواسطة data.order .data.title .data.section . القسم.<article></article> في صفحة ما وفقًا لـ HTML الدلالي. يتم التعامل مع العناصر الأخرى (على سبيل المثال <blockquote></blockquote> ) كفقرات. هذا يعمل بشكل أفضل مع مخرجات تخفيض.اقرأ بيانات الصفحة و/أو صفحات البيانات المشتركة لوثائق Lume لمعرفة كيفية تعيين هذه الخصائص.
عميل Psyche مكتوب في TypeScript. يمكنك إما استيراده مباشرة إذا تم تجميع أصول موقعك بواسطة 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 (انظر الأنواع. 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 ( ) ; لإضافة مفتاح hotkey إلى القائمة في وسيط البحث ، قم بإضافته إلى مجموعة hotkeys لكائن ClientConfig الخاص بـ Psyche (انظر الأنواع.
بالنسبة إلى مفاتيح Hotkeys المعتمدة على النظام الأساسي ، فإن platformModifier المسماة سيكون معادلاً لمفتاح ⌘ على MacOS أو مفتاح CTRL على منصات أخرى.
للتعامل مع مفاتيح hotkeys ، توفير كائن ClientHotkey (انظر 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 ( ) ;يتم تسجيل التغييرات في هذا المشروع في Changelog.
هذا المشروع مرخص بموجب ترخيص معهد ماساتشوستس للتكنولوجيا.
لدعم التطوير المستقبلي لهذا المشروع ، يرجى النظر في رعاية المؤلف.