logologo
शुरू करें
मार्गदर्शिका
विकास
प्लगइन
API
English
简体中文
日本語
한국어
Deutsch
Français
Español
Português
Русский
Italiano
Türkçe
Українська
Tiếng Việt
Bahasa Indonesia
ไทย
Polski
Nederlands
Čeština
العربية
עברית
हिन्दी
Svenska
शुरू करें
मार्गदर्शिका
विकास
प्लगइन
API
logologo

क्विक स्टार्ट

Plugin डेवलपमेंट अवलोकन
अपना पहला Plugin लिखें
प्रोजेक्ट डायरेक्टरी स्ट्रक्चर

सर्वर-साइड डेवलपमेंट

अवलोकन
Plugin
कलेक्शन डेटा टेबल
डेटाबेस ऑपरेशन
DataSourceManager डेटा सोर्स प्रबंधन
ResourceManager रिसोर्स प्रबंधन
ACL परमिशन कंट्रोल
Middleware
Cache
Event
Context रिक्वेस्ट कॉन्टेक्स्ट
माइग्रेशन अपग्रेड स्क्रिप्ट
Logger
Telemetry
I18n इंटरनेशनलाइजेशन
Command लाइन
CronJobManager शेड्यूल्ड टास्क प्रबंधन
Test

क्लाइंट-साइड डेवलपमेंट

अवलोकन
Plugin
Context
Router
ACL परमिशन कंट्रोल
DataSourceManager डेटा सोर्स प्रबंधन
Resource
Request
Styles & Themes
Logger
I18n इंटरनेशनलाइजेशन
Test

अन्य

Plugin अपग्रेड गाइड
भाषा सूची
डिपेंडेंसी प्रबंधन
बिल्ड
Previous Pageअवलोकन
Next PageContext
TIP

यह दस्तावेज़ AI द्वारा अनुवादित किया गया है। किसी भी अशुद्धि के लिए, कृपया अंग्रेजी संस्करण देखें

#प्लगइन

NocoBase में, क्लाइंट प्लगइन फ्रंटएंड कार्यक्षमता को बढ़ाने और अनुकूलित करने का मुख्य तरीका है। @nocobase/client द्वारा प्रदान की गई Plugin बेस क्लास को इनहेरिट करके, डेवलपर्स विभिन्न जीवनचक्र चरणों में लॉजिक रजिस्टर कर सकते हैं, पेज कंपोनेंट जोड़ सकते हैं, मेनू का विस्तार कर सकते हैं या तीसरे पक्ष की कार्यक्षमता को एकीकृत कर सकते हैं।

#प्लगइन क्लास संरचना

एक सबसे बुनियादी क्लाइंट-साइड प्लगइन संरचना इस प्रकार है:

import { Plugin } from '@nocobase/client';

export class PluginHelloClient extends Plugin {
  async afterAdd() {
    // प्लगइन जोड़ने के बाद निष्पादित होता है
    console.log('Plugin added');
  }

  async beforeLoad() {
    // प्लगइन लोड होने से पहले निष्पादित होता है
    console.log('Before plugin load');
  }

  async load() {
    // प्लगइन लोड होने पर निष्पादित होता है, राउट्स, यूआई कंपोनेंट आदि रजिस्टर करें
    console.log('Plugin loaded');
  }
}

export default PluginHelloClient;

#जीवनचक्र का विवरण

जब ब्राउज़र रीफ़्रेश होता है या एप्लिकेशन इनिशियलाइज़ होता है, तो प्रत्येक प्लगइन क्रमशः निम्नलिखित जीवनचक्र से गुजरता है:

जीवनचक्र विधिनिष्पादन का समयविवरण
afterAdd()प्लगइन को प्लगइन मैनेजर में जोड़ने के तुरंत बाद निष्पादित होता हैइस समय प्लगइन इंस्टेंस बन चुका होता है, लेकिन सभी प्लगइन इनिशियलाइज़ नहीं हुए होते हैं। यह हल्के इनिशियलाइज़ेशन के लिए उपयुक्त है, जैसे कॉन्फ़िगरेशन पढ़ना या बुनियादी इवेंट्स को बाइंड करना।
beforeLoad()सभी प्लगइन्स के load() से पहले निष्पादित होता हैआप सभी सक्षम प्लगइन इंस्टेंस (this.app.pm.get()) को एक्सेस कर सकते हैं। यह उस तैयारी के लॉजिक को निष्पादित करने के लिए उपयुक्त है जो अन्य प्लगइन्स पर निर्भर करता है।
load()प्लगइन लोड होने पर निष्पादित होता हैसभी प्लगइन्स के beforeLoad() के पूरा होने के बाद यह विधि निष्पादित होती है। यह फ्रंटएंड राउट्स, यूआई कंपोनेंट और अन्य मुख्य लॉजिक को रजिस्टर करने के लिए उपयुक्त है।

#निष्पादन क्रम

हर बार जब ब्राउज़र रीफ़्रेश होता है, तो afterAdd() → beforeLoad() → load() निष्पादित होगा।

#प्लगइन कॉन्टेक्स्ट और फ्लोइंजन

NocoBase 2.0 से शुरू होकर, क्लाइंट-साइड एक्सटेंशन एपीआई मुख्य रूप से फ्लोइंजन में केंद्रित हैं। प्लगइन क्लास में, आप this.engine के माध्यम से इंजन इंस्टेंस प्राप्त कर सकते हैं।

// load() विधि में इंजन कॉन्टेक्स्ट को एक्सेस करें
async load() {
  const { app, router, apiClient } = this.engine.context;
  console.log('Current app:', app);
}

अधिक जानकारी के लिए देखें:

  • FlowEngine
  • Context