Vue 3 · Nuxt · GrapesJS

Vue Page Builder GrapesJS के साथ

कस्टम ब्लॉक, घटकों, टेम्प्लेट, उत्तरदायी संपादन और अपने स्वयं के भंडारण और प्रकाशन वर्कफ़्लो के साथ Vue 3 और Nuxt के लिए एक विज़ुअल ड्रैग-एंड-ड्रॉप पेज बिल्डर बनाएं।

Vue 3 & Nuxtदृश्य खींचें और छोड़ेंकस्टम घटकपुनः प्रयोज्य ब्लॉकउत्तरदायी संपादनआपका बैकएंडप्लगइन्स के साथ एक्स्टेंसिबल
app.yourproduct.com/pages/editor
Vue Page Builder

ब्लॉक

  • Hero
  • सुविधाऐं
  • मूल्य निर्धारण
  • प्रशंसापत्र
  • FAQ

आपका पेज

डेस्कटॉप · टैबलेट · मोबाइल
तीन पैनल और एक कैनवास: बाईं ओर एक ब्लॉक लाइब्रेरी, बीच में पृष्ठ, दाईं ओर शैली नियंत्रण, नीचे की ओर डिवाइस की चौड़ाई। यही वह इंटरफ़ेस है जो आपके उपयोगकर्ताओं को मिलता है - और वह हिस्सा जिसे आपको बनाने की आवश्यकता नहीं है।

Vue एकीकरण मार्गदर्शिका देखें

0.23.6

GrapesJS संस्करण यह पृष्ठ इसके विरुद्ध लिखा गया है

100+

प्लगइन्स और टेम्पलेट GJS.Market पर

BSD-3-Clause

संपादक कोर का लाइसेंस

$0

संपादक को स्वयं चलाने की लागत

पहले इसे देखें

एक वास्तविक पेज बिल्डर, इस पृष्ठ पर चल रहा है

यह अपने आप में GrapesJS है, स्क्रीनशॉट नहीं। एक ब्लॉक को खींचें, एक तत्व का चयन करें, इसे फिर से स्टाइल करें, डिवाइस की चौड़ाई स्विच करें। संपादक एक 'init()' कॉल द्वारा बनाया गया है - एक Vue ऐप में जो 'onMounted' में कॉल करता है, और जो कुछ भी आप यहां देखते हैं वह समान व्यवहार करता है।

  • Drag & drop
  • Style Manager
  • Layer Manager
  • Desktop / Tablet / Mobile
  • HTML + CSS export
खरोंच से क्यों नहीं

खरोंच से शुरू किए बिना एक विज़ुअल पेज बिल्डर बनाएं

एक उत्पादन पृष्ठ बिल्डर कुछ Vue घटकों से कहीं अधिक है। यह एक कैनवास, एक ड्रैग-एंड-ड्रॉप सिस्टम, एक घटक मॉडल, एक स्टाइल इंजन, उत्तरदायी संपादन, पूर्ववत इतिहास, परिसंपत्ति प्रबंधन, भंडारण और निर्यात है। यहाँ पूरी सतह है, और प्रत्येक टुकड़े का मालिक कौन है।

  • GrapesJS कोर

    कैनवास का संपादन

    एक पृथक दस्तावेज़ उपयोगकर्ता सीधे संपादित करते हैं, अपनी शैलियों के साथ और स्क्रॉल करते हैं।

  • GrapesJS कोर

    खींचें और छोड़ें

    ड्रॉप लक्ष्य, सम्मिलन बिंदु, पुनः व्यवस्थित करने और नेस्टिंग नियम।

  • GrapesJS कोर

    घटक मॉडल

    टाइप किए गए तत्वों को उनकी अपनी सेटिंग्स, बाधाओं और व्यवहार के साथ।

  • GrapesJS कोर

    चयन और टूलबार

    चयन करने के लिए क्लिक, होवर रूपरेखा, प्रति-तत्व टूलबार और बैज।

  • GrapesJS कोर

    Style Manager

    टाइपोग्राफी, रंग, रिक्ति और लेआउट नियंत्रण चयनकर्ताओं के लिए बाध्य हैं।

  • GrapesJS कोर

    उत्तरदायी संपादन

    डिवाइस की चौड़ाई और ब्रेकपॉइंट-स्कोप शैलियाँ एक ही कैनवास में।

  • GrapesJS कोर

    Layer Manager

    पृष्ठ का एक पेड़ इतनी गहरी संरचनाएं नौगम्य रहती हैं।

  • GrapesJS कोर

    पूर्ववत करें और फिर से करें

    प्रत्येक संपादन में एक कमांड इतिहास, न कि केवल पाठ।

  • GrapesJS कोर

    HTML और CSS निर्यात

    वर्तमान दस्तावेज़ से उत्पन्न मार्कअप और स्टाइलशीट को साफ़ करें।

  • प्लगइन्स

    ब्लॉक लाइब्रेरी

    तैयार किए गए अनुभाग उपयोगकर्ता खींचते हैं। आपका, या स्थापित।

  • प्लगइन्स

    टेम्पलेट्स

    पूरे शुरुआती लेआउट इसलिए कोई भी खाली कैनवास से नहीं मिलता है।

  • प्लगइन्स

    संपत्ति प्रबंधन

    अपलोड, मीडिया लाइब्रेरी और इमेज हैंडलिंग।

  • प्लगइन्स

    रिच टेक्स्ट एडिटिंग

    अंतर्निहित संपादक से परे इनलाइन पाठ स्वरूपण।

  • प्लगइन्स

    बहु-पृष्ठ परियोजनाएं

    एक ही प्रोजेक्ट के अंदर एक से अधिक पृष्ठ।

  • आपका Vue ऐप

    भंडार

    जहां प्रोजेक्ट डेटा लिखा और पढ़ा जाता है। आपका API, आपका डेटाबेस।

  • आपका Vue ऐप

    प्रमाणीकरण और भूमिकाएं

    कौन कौन सा प्रोजेक्ट खोल सकता है, संपादित कर सकता है और प्रकाशित कर सकता है।

  • आपका Vue ऐप

    बहु-किरायेदारी

    एक ग्राहक के पृष्ठों, संपत्तियों और टेम्पलेट्स को दूसरे के पृष्ठों से अलग करना.

  • आपका Vue ऐप

    प्रकाशन और होस्टिंग

    स्वीकृत आउटपुट को अपने बुनियादी ढांचे पर एक लाइव पेज में बदलना।

  • आपका Vue ऐप

    योजनाएं और बिलिंग

    प्रत्येक ग्राहक का क्या अधिकार है, और वे इसके लिए क्या भुगतान करते हैं।

इसका मालिक कौन हैGrapesJS कोरप्लगइन्सआपका Vue ऐप

मध्य कॉलम GJS.Market का बिंदु है: यह वास्तविक क्षमता है जिसे आप शेड्यूल के बजाय स्थापित करते हैं। दाहिने हाथ का कॉलम कभी भी किसी और की समस्या नहीं बनता है - यह आपका उत्पाद है, और यह पृष्ठ हर उस अनुभाग में इसके बारे में स्पष्ट है जो इसे छूता है।

पांच-चरणीय एकीकरण देखें
स्‍थापत्‍यशैली

Vue आपका ढांचा है। GrapesJS आपका संपादक है।

GrapesJS आपके एप्लिकेशन का प्रतिस्थापन नहीं है और न ही होस्ट की गई सेवा है। यह एक संपादन इंजन है जो एक मार्ग के एक तत्व में माउंट होता है। इस आरेख में इसके ऊपर और नीचे सब कुछ आपका रहता है।

  1. आपका Vue/Nuxt आवेदन

    वह सब कुछ जो उत्पाद को आपका बनाता है। GrapesJS की इसमें से किसी के बारे में कोई राय नहीं है।

    • प्रमाणीकरण
    • उपयोगकर्ता
    • रूटिंग
    • बिलिंग
    • व्यापार तर्क
    • APIs
  2. GrapesJS संपादक

    एक घुड़सवार उदाहरण, एक घटक के अंदर, एक मार्ग पर। यह वह परत है जिसे आप नहीं बना रहे हैं।

    • कैंवस
    • ब्लॉक
    • अवयव
    • शैलियों
    • लेयरिंग
    • संपत्ति
  3. आपका बैकएंड

    संपादक आपको दो कलाकृतियाँ और एक मीडिया स्ट्रीम सौंपता है। आगे क्या होता है यह आपके API का निर्णय है।

    • परियोजना JSON
    • HTML + CSS
    • मीडिया
    • भूमिकाएं
  4. आपका डेटाबेस

    आपके द्वारा डिज़ाइन की गई स्कीमा में साधारण पंक्तियाँ। यहां कुछ भी GrapesJS प्रारूप नहीं है जिसे आपको अपनाना है।

    • परियोजनाओं
    • संस्करणों
    • किरायेदार
    • पेज

इसे ऊपर से नीचे पढ़ें: आपका Vue एप्लिकेशन उपयोगकर्ता को प्रमाणित करता है और उन्हें एक संपादक पृष्ठ पर रूट करता है; संपादक प्रोजेक्ट डेटा तैयार करता है; आपका API इसे आपके डेटाबेस में लिखता है। संपादक कभी भी आपके डेटाबेस से बात नहीं करता है, और आपके डेटाबेस को कभी भी संपादक को समझने की आवश्यकता नहीं होती है।

संपादक Vue घटक में कैसे माउंट होता है
आपत्ति

क्या GrapesJS Vue की जगह लेता है?

नहीं। यह पहला प्रश्न है जो अधिकांश Vue डेवलपर्स पूछते हैं, और उत्तर बदल देता है कि बाकी पृष्ठ कैसे पढ़ता है। दो परतें ओवरलैप नहीं होती हैं: एक आपके एप्लिकेशन को चलाती है, दूसरी इसके अंदर एक संपादन सतह चलाती है।

Vue / Nuxt

Vue के लिए जिम्मेदार रहता है

आपका एप्लिकेशन, ठीक वैसे ही जैसे आप इसे आज बनाते हैं।

  • आवेदन UI
  • रूटिंग
  • प्रमाणीकरण
  • व्यापार तर्क
  • राज्य प्रबंधन
  • APIs और डेटा प्राप्त करना
  • बिलिंग और योजनाएं
  • उपयोगकर्ता और अनुमतियाँ
GrapesJS

GrapesJS प्रदान करता है

दृश्य संपादन परत, एक तत्व के अंदर आप इसे देते हैं।

  • दृश्य कैनवास
  • खींचें और छोड़ें
  • ब्लॉक
  • अवयव
  • शैलियों
  • लेयरिंग
  • संपत्ति
  • डिवाइस की चौड़ाई

जब हम यहां हैं तो एक ईमानदार चेतावनी: कैनवास DOM को iframe के अंदर प्रस्तुत करता है, न कि Vue घटकों को माउंट करता है। आपका ऐप Vue है; आपके उपयोगकर्ता जो संपादित करते हैं वह HTML और CSS है जिसे आपका ऐप अपनी पसंद के अनुसार प्रस्तुत करता है।

परिणाम

आप Vue + GrapesJS के साथ क्या बना सकते हैं?

एक ही इंजन, अलग तरह से कॉन्फ़िगर किया गया है। इनमें से प्रत्येक एक वास्तविक उत्पाद आकार है जो इसके शीर्ष पर टीमें भेजती हैं - और प्रत्येक के पास यहां एक पृष्ठ है जो गहराई तक जाता है।

SaaS

SaaS पेज बिल्डर

अपने ग्राहकों को आपके उत्पाद के अंदर पेज बनाने और संपादित करने दें, इसे छोड़े बिना और डेवलपर के बिना।

SaaS बिल्डरों का अन्वेषण करें

वेबसाइटें

वेबसाइट बिल्डर

एक पूर्ण दृश्य वेबसाइट निर्माण अनुभव: बहु-पृष्ठ परियोजनाएं, टेम्पलेट्स, संपत्ति और प्रकाशन।

लैंडिंग-पृष्ठ कोण देखें

विपणन (मार्केटिंग)

लैंडिंग पेज बिल्डर

मार्केटिंग टीमों को आपके बजाय अपने स्वयं के शेड्यूल पर अभियान पृष्ठ लॉन्च करने दें।

लैंडिंग बिल्डरों का अन्वेषण करें

सामग्री

CMS दृश्य संपादक

सामग्री टीमों को आपके पास पहले से मौजूद सामग्री मॉडल पर एक दृश्य संपादन सतह दें।

CMS संपादक देखें

फार्म

फॉर्म बिल्डर

टाइप किए गए फ़ील्ड घटकों से विज़ुअल रूप से फ़ॉर्म लिखें, फिर उन्हें अपने स्वयं के समापन बिंदुओं पर पोस्ट करें।

फ़ॉर्म प्लगइन्स ब्राउज़ करें

ईमेल

ईमेल बिल्डर

ब्राउज़र के बजाय मेल क्लाइंट के लिए निर्मित आउटपुट के साथ, ईमेल टेम्पलेट्स को नेत्रहीन रूप से लिखना और प्रबंधित करना।

ईमेल बिल्डिंग देखें

दस्तावेज़

रिपोर्ट और दस्तावेज़ निर्माता

दस्तावेज़ों, रिपोर्टों और एक-पेजर को नेत्रहीन रूप से बिछाएं, फिर उन्हें अपने बैकएंड से निर्यात या प्रस्तुत करें।

एम्बेडेड संपादक देखें

एजेंसियों

व्हाइट-लेबल बिल्डर

प्रत्येक ग्राहक को एक ब्रांडेड संपादन वातावरण भेजें जो आपके उत्पाद की तरह दिखता है, लाइब्रेरी की तरह नहीं।

व्हाइट-लेबल का अन्वेषण करें
क्षमताओं

विज़ुअल पेज बिल्डर के लिए आपको जो कुछ भी चाहिए

यह वही है जो संपादक आपको पहले दिन देता है, इससे पहले कि एक प्लगइन स्थापित हो। हर एक कॉन्फ़िगर करने योग्य है - पैनल, श्रेणियां, बाधाएं और लेबल सेट करने के लिए सभी आपके हैं।

खींचें और छोड़ें

उपयोगकर्ता अनुभागों और तत्वों को कैनवास में खींचकर लेआउट बनाते हैं, ड्रॉप लक्ष्य, पुनः व्यवस्थित करने और नेस्टिंग के साथ।

अवयव

अपने स्वयं के तत्व प्रकारों को उनकी स्वयं की सेटिंग्स, बाधाओं और व्यवहार के साथ परिभाषित करें, और उन्हें हर प्रोजेक्ट में पुनः उपयोग करें।

ब्लॉक

उपयोगकर्ता पैनल से उपयोग के लिए तैयार अनुभाग खींचते हैं। उन्हें उन श्रेणियों में समूहित करें जो आपके उत्पाद की शब्दावली से मेल खाती हैं।

Style Manager

टाइपोग्राफी, रंग, रिक्ति और लेआउट नियंत्रण. प्रॉपर्टी सेट को प्रतिबंधित करें ताकि उपयोगकर्ता आपके डिज़ाइन सिस्टम से बाहर न निकल सकें.

उत्तरदायी संपादन

डेस्कटॉप, टैबलेट और मोबाइल चौड़ाई के बीच कैनवास स्विच करें और जगह में ब्रेकपॉइंट-स्कोप शैलियों को लिखें।

लेयरिंग

पृष्ठ का एक संरचनात्मक वृक्ष, इसलिए एक गहरा नेस्टेड लेआउट selectable और पुनः व्यवस्थित रहता है।

संपत्ति

छवियों और मीडिया के लिए एक परिसंपत्ति प्रबंधक, जो भी भंडारण या CDN आप पहले से ही उपयोग कर रहे हैं।

टेम्पलेट्स

पुनः प्रयोज्य प्रारंभिक लेआउट, इसलिए एक नया पृष्ठ एक खाली कैनवास के बजाय कुछ के रूप में शुरू होता है।

निर्यातित माल

वर्तमान दस्तावेज़ से HTML और CSS उत्पन्न करें, या प्रोजेक्ट डेटा लें और इसे अपने तरीके से प्रस्तुत करें।

अनुकूलन

अपने उत्पाद के आसपास एक पेज बिल्डर बनाएं

एक सामान्य वेबसाइट बिल्डर और आपके उत्पाद में संबंधित बिल्डर के बीच का अंतर घटक सेट है। अपने सामग्री मॉडल को किसी और के तत्व प्रकारों में मजबूर न करें - अपना खुद का पंजीकरण करें।

  1. Your product
  2. Custom components
  3. Custom blocks
  4. Custom templates
  5. Custom commands
  6. Custom UI

प्रत्येक चरण संपादक उदाहरण पर सामान्य कॉन्फ़िगरेशन है: एक घटक प्रकार, एक ब्लॉक जो इसे सम्मिलित करता है, एक टेम्पलेट जो कई की व्यवस्था करता है, एक कमांड जो उन पर कार्य करता है, और एक पैनल जो इसे उजागर करता है।

बिल्डर/registerProductBlocks.tsts
// builder/registerProductBlocks.ts
import type { Editor } from 'grapesjs';

// A plugin is just a function that receives the editor, so everything below
// works identically in Vue, Nuxt, React or a plain HTML page.
export function registerProductBlocks(editor: Editor): void {
  // A custom component type: your own element, with your own settings.
  editor.DomComponents.addType('pricing-table', {
    isComponent: (el) => el.dataset?.gjsType === 'pricing-table',
    model: {
      defaults: {
        droppable: false,
        traits: [
          { name: 'plan', type: 'select', options: ['free', 'pro', 'team'] },
          { name: 'highlight', type: 'checkbox' },
        ],
      },
    },
  });

  // A block: what the user actually drags in from the panel.
  editor.BlockManager.add('pricing-table', {
    label: 'Pricing',
    category: 'Sections',
    content: { type: 'pricing-table' },
  });
}
  • एक घटक प्रकार परिभाषित करता है कि एक तत्व क्या है: यह क्या स्वीकार करता है, यह क्या मना करता है, और यह किन सेटिंग्स को उजागर करता है।
  • एक ब्लॉक वह है जो उपयोगकर्ता पैनल में देखते हैं - एक ही प्रकार अलग-अलग प्रीसेट के साथ कई ब्लॉकों का समर्थन कर सकता है।
  • लक्षण सेटिंग साइडबार बन जाते हैं, इसलिए आपके उपयोगकर्ता मार्कअप संपादित करने के बजाय तत्वों को कॉन्फ़िगर करते हैं।
  • 'droppable: गलत' और मिलान बाधाएं हैं कि आप एक डिज़ाइन किए गए घटक को अलग होने से कैसे बचाते हैं।
  • Commands आपको अपने स्वयं के कार्यों को संलग्न करने देता है - प्रकाशित करें, किसी अन्य किरायेदार को डुप्लिकेट करें, समीक्षा का अनुरोध करें।
  • इनमें से कोई भी Vue-विशिष्ट नहीं है: एक प्लगइन एक फ़ंक्शन है जो संपादक को प्राप्त करता है, इसलिए यह Nuxt, React या सादे HTML में भी काम करता है।

अपने उत्पाद को एक सामान्य वेबसाइट बिल्डर में मजबूर न करें। संपादक को अपने स्वयं के सामग्री मॉडल और डिज़ाइन सिस्टम के आसपास अनुकूलित करें।

शासन

अपने डिज़ाइन सिस्टम को नियंत्रण में रखें

एक अप्रतिबंधित कैनवास ऐसे पृष्ठ बनाता है जो उस उत्पाद को शर्मिंदा करते हैं जिसमें वे रहते हैं। संपादक दोनों दिशाओं में कॉन्फ़िगर करने योग्य है - उपयोगी सेटिंग अधिकतम स्वतंत्रता नहीं है, यह बाध्य स्वतंत्रता है।

उपयोगकर्ताओं को क्या करने में सक्षम होना चाहिए

  • किसी भी क्रम में अनुमोदित ब्लॉकों से पृष्ठों को इकट्ठा करें
  • अपनी खुद की कॉपी लिखें और संपादित करें
  • संपत्ति पुस्तकालय से छवियों की अदला-बदली करें
  • परिभाषित लेआउट प्रकारों के बीच चयन करें
  • डिवाइस की चौड़ाई के हिसाब से सामग्री समायोजित करना
  • एक टेम्पलेट से शुरू करें और उससे अलग हो जाएं

संपादक को क्या स्थिर रखना चाहिए

  • टाइपोग्राफी स्केल और फ़ॉन्ट परिवार
  • ब्रांड पैलेट, एक बीनने वाले के बजाय नामित रंगों के रूप में उजागर किया गया
  • मनमाने पिक्सेल मानों के बजाय रिक्ति चरण
  • कौन से घटक किसके अंदर घोंसला बना सकते हैं
  • जो किसी दी गई भूमिका या योजना को ब्लॉक करता है वह भी देख सकता है
  • संरचनात्मक अनुभाग एक टेम्पलेट गारंटी देता है

उपयोगकर्ताओं को अपने उत्पाद के डिज़ाइन सिस्टम को तोड़ने की अनुमति दिए बिना रचनात्मक स्वतंत्रता दें।

सामग्री

उपयोगकर्ताओं को खाली कैनवास से प्रारंभ न करें

पेज बिल्डर का उपयोग किया जाता है या नहीं, इसका सबसे बड़ा ड्राइवर पहली यात्रा पर ब्लॉक पैनल में इंतजार कर रहा है। उन अनुभागों का निर्माण करें जिनकी आपके उत्पाद को वास्तव में आवश्यकता है, या एक पुस्तकालय स्थापित करें और उसका नाम बदलें।

  • Hero

    शीर्षक, सहायक पंक्ति और एक प्राथमिक कार्रवाई।

  • फ़ीचर ग्रिड

    क्षमताओं या लाभों का एक दोहराया जाने वाला ग्रिड।

  • मूल्य निर्धारण

    सुविधाओं और कार्रवाई के लिए कॉल के साथ स्तंभों की योजना बनाएं।

  • प्रशंसापत्र

    एट्रिब्यूशन के साथ उद्धरण, एक पंक्ति या हिंडोला में।

  • FAQ

    प्रश्न और उत्तर जोड़े, विस्तार योग्य या सपाट।

  • संपर्क करें

    अपने स्वयं के समापन बिंदु पर पोस्ट करने वाला एक प्रपत्र अनुभाग।

  • CTA पट्टी

    एक स्पष्ट कार्रवाई के साथ एक पूर्ण-चौड़ाई वाला बैंड।

  • पाद लेख

    नेविगेशन कॉलम, कानूनी लिंक और ब्रांड मार्क.

दृढ़ता

परियोजनाओं को अपने स्वयं के बैकएंड में सहेजें

GrapesJS कुछ भी होस्ट नहीं करता है और डेटाबेस नहीं चुनता है। आप दो तरीकों के साथ एक स्टोरेज एडाप्टर पंजीकृत करते हैं - लोड और स्टोर - और दोनों आपके API से बात करते हैं। आपके बुनियादी ढांचे को कुछ भी नहीं छोड़ता है।

  1. Visual editor
  2. Project JSON
  3. Your API
  4. Your backend
  5. Your database

संपादक केवल 'load()' और 'store()' के बारे में जानता है। जहां वे कॉल समाप्त होते हैं - Postgres, MySQL, मोंगो, S3, एक हेडलेस CMS - एक ऐसा निर्णय है जिसमें संपादक कभी भाग नहीं लेता है।

components/PageBuilder.vue — भंडारण एडाप्टरts
const editor = grapesjs.init({
  container: host.value!,
  storageManager: {
    type: 'app-api',
    autosave: true,
    stepsBeforeSave: 10,
  },
  // Registered as a plugin so the adapter exists before the first load().
  plugins: [
    (ed) => {
      ed.Storage.add('app-api', {
        async load() {
          const res = await fetch(`/api/projects/${props.projectId}`);
          if (!res.ok) throw new Error(`Load failed: ${res.status}`);
          return await res.json();
        },
        async store(project) {
          const res = await fetch(`/api/projects/${props.projectId}`, {
            method: 'PUT',
            headers: { 'Content-Type': 'application/json' },
            body: JSON.stringify(project),
          });
          if (!res.ok) throw new Error(`Save failed: ${res.status}`);
        },
      });
    },
  ],
});
  • एडेप्टर को एक प्लगइन के रूप में पंजीकृत करें ताकि संपादक द्वारा अपना पहला लोड करने से पहले यह मौजूद रहे।
  • 'autosave' बैचों के साथ 'stepsBeforeSave' प्रति कीस्ट्रोक एक फायरिंग के बजाय लिखता है।
  • प्रोजेक्ट JSON को सत्य के स्रोत के रूप में संग्रहीत करें; यह वही है जो संपादक पुनः लोड करता है।
  • संस्करणों को सामान्य पंक्तियों के रूप में रखें — संशोधन इतिहास एक स्कीमा निर्णय है, संपादक सुविधा नहीं.
  • सर्वर पर प्रत्येक लोड और स्टोर को अधिकृत करें। अनुरोध में प्रोजेक्ट आईडी एक दावा है, अनुमति नहीं।
  • संपादक के भंडारण कार्यक्रमों को सुनकर अपने स्वयं के Vue UI में सतह को बचाएं।

आप अपने डेटा और अपने बैकएंड को नियंत्रित करते हैं। संपादक आपके ऐप के किसी भी अन्य भाग की तरह आपके API का ग्राहक है।

डेटा मॉडल

आपको क्या स्टोर करना चाहिए?

संपादक से दो कलाकृतियाँ निकलती हैं और वे विनिमेय नहीं होती हैं। गलत को संग्रहीत करना वह गलती है जो छह महीने बाद पृष्ठों को असंपादित करने योग्य बना देती है।

परियोजना JSON — सत्य का स्रोत

पूर्ण संपादन योग्य दस्तावेज़: घटक, शैलियाँ, संपत्ति, पृष्ठ। इसे वापस 'load()' पर फीड करें और उपयोगकर्ता ठीक वहीं से शुरू हो जाता है जहां उन्होंने छोड़ा था। यह वह पंक्ति है जिसे आपको कभी नहीं खोना चाहिए।

HTML + CSS — आउटपुट

वर्तमान दस्तावेज़ का प्रतिपादन, मांग पर उत्पादित। इसे राज्य के रूप में मानने के बजाय प्रत्येक प्रकाशन पर पुनः उत्पन्न करें; इसे संपादन योग्य परियोजना में वापस नहीं बदला जा सकता है।

दोनों को अलग-अलग कारणों से रखें

JSON वह है जो संपादक पढ़ता है। HTML वह है जो आपके आगंतुक पढ़ते हैं। केवल दूसरे को संग्रहीत करना एकतरफा दरवाजा है - पृष्ठ हमेशा के लिए प्रस्तुत करता है और इसे फिर कभी संपादित नहीं किया जा सकता है।

दोनों कलाकृतियों को प्रकाशित करने पर सहेजनाts
// The source of truth. Store it; the editor reloads from it.
const projectData = editor.getProjectData();

// The output. Regenerate it every time you publish.
const html = editor.getHtml();
const css = editor.getCss();

await $fetch(`/api/projects/${projectId}/publish`, {
  method: 'POST',
  body: { projectData, html, css },
});

// Authorize the request and sanitize `html` on the server —
// never in the component that produced it.

फिर से संपादित करने के लिए

  1. Project JSON
  2. load()
  3. Editable again

प्रकाशित करने के लिए

  1. getHtml() + getCss()
  2. Sanitize
  3. Serve

संपादन के लिए प्रोजेक्ट डेटा संग्रहीत करें। जब आपको प्रकाशन योग्य आउटपुट की आवश्यकता हो तो HTML और CSS उत्पन्न करें।

वितरण

दृश्य संपादन से लेकर उत्पादन तक

लेखन और प्रकाशन अलग-अलग काम हैं। GrapesJS उस समय समाप्त होता है जब कोई उपयोगकर्ता किसी पृष्ठ से खुश होता है; उसके बाद सब कुछ आपका वर्कफ़्लो है, आपके बुनियादी ढांचे पर।

  1. Create
  2. Edit
  3. Save
  4. Review
  5. Publish
  6. Live page

समीक्षा, अनुमोदन या शेड्यूलिंग डालें जहां भी आपके उत्पाद की आवश्यकता है - संपादक के पास सहेजें और लाइव के बीच के चरणों के बारे में कोई राय नहीं है।

प्रकाशित आउटपुट कहां जा सकता है

  • अपने स्वयं के API में एक REST समापन बिंदु
  • एक बिना सिर वाला CMS जिसे आप पहले से ही चलाते हैं
  • स्थैतिक फ़ाइलें, प्रकाशित करने पर निर्मित और परिनियोजित
  • एक कस्टम बैकएंड जो अनुरोध पर पृष्ठों को प्रस्तुत करता है
  • उपरोक्त में से किसी के सामने एक CDN
  • आपकी मौजूदा परिनियोजन पाइपलाइन, अपरिवर्तित

GrapesJS संलेखन को संभालता है। आपका बुनियादी ढांचा प्रकाशन को संभालता है - संपादक के साथ कोई होस्टिंग नहीं है, और यह पृष्ठ अन्यथा दिखावा नहीं करेगा।

SaaS वास्तुकला

एक बहु-किरायेदार Vue पेज बिल्डर बनाएं

प्रत्येक ग्राहक को अपने स्वयं के पृष्ठ, अपनी संपत्ति, अपने स्वयं के टेम्पलेट और अपना स्वयं का ब्रांड मिलता है। वह अलगाव आपके डेटा मॉडल और आपके API की संपत्ति है - संपादक को बस सही प्रोजेक्ट सौंपा जाता है।

Your Vue SaaS

  • संगठन ए

    • Pages
    • Assets
    • Templates
    • Brand
  • संगठन बी

    • Pages
    • Assets
    • Templates
    • Brand
  • संगठन सी

    • Pages
    • Assets
    • Templates
    • Brand

आपका Vue ऐप और बैकएंड क्या लागू करते हैं

  • प्रत्येक परियोजना, संपत्ति और टेम्पलेट पंक्ति पर एक टैनेंट आईडी
  • प्रत्येक लोड, स्टोर और प्रकाशित कॉल पर सर्वर-साइड प्राधिकरण
  • प्रति-किरायेदार संपत्ति संग्रहण, इसलिए एक ग्राहक के अपलोड कभी भी दूसरे में सूचीबद्ध नहीं होते हैं
  • टैनेंट-स्कोप्ड टेम्पलेट और ब्लॉक सेट
  • संपादक बनाए जाने पर प्रति-टैनेंट ब्रांडिंग लागू होती है
  • एक किरायेदार के अंदर भूमिकाएँ: कौन संपादित कर सकता है, कौन अनुमोदन कर सकता है, जो प्रकाशित कर सकता है

बहु-किरायेदारी GrapesJS सुविधा नहीं है। संपादक में कुछ भी इसे लागू नहीं करता है, और एक पेज बिल्डर जो सही किरायेदार चुनने के लिए क्लाइंट पर निर्भर करता है, वह बहु-किरायेदार नहीं है - यह UI सम्मेलन के साथ एक साझा डेटाबेस है।

SaaS पेज बिल्डर पेज का अन्वेषण करें
ब्रांडिंग

अपने Vue संपादक को अपने उत्पाद में बदलें

इंटरफ़ेस में कुछ भी लाइब्रेरी की तरह नहीं दिखना चाहिए। पैनल, आइकन, शब्दांकन और वर्कफ़्लो सभी कॉन्फ़िगरेशन हैं - अधिकांश शिप किए गए GrapesJS बिल्डर्स GrapesJS के रूप में पहचानने योग्य नहीं हैं।

  • कस्टम लोगो और रंग योजना
  • कस्टम पैनल और टूलबार
  • प्रति ग्राहक कस्टम ब्लॉक और टेम्पलेट
  • पूरे UI में कस्टम शब्दावली
  • भूमिकाएँ जो संपादक द्वारा उजागर की जाने वाली चीज़ों को बदलती हैं
  • आपके सर्वर पर लागू अनुमतियाँ, UI में परिलक्षित होती हैं
पारिस्थितिकी तंत्र

प्लगइन्स के साथ अपने Vue पेज बिल्डर का विस्तार करें

एक प्लगइन एक फ़ंक्शन है जो संपादक इंस्टेंस प्राप्त करता है। यही कारण है कि इनमें से किसी का भी अलग Vue संस्करण नहीं है। एक ही पैकेज Vue घटक, एक Nuxt पृष्ठ, एक React ऐप या एक सादे HTML फ़ाइल में काम करता है, क्योंकि उनमें से कोई भी वह नहीं है जिससे यह जुड़ता है।
  1. GrapesJS core
  2. Vue / Nuxt integration
  3. Blocks
  4. Templates
  5. Storage
  6. Assets
  7. Pages
  8. Forms
  9. Export
  10. AI & advanced features

जो मौजूद नहीं है उसके बारे में स्पष्ट होने के लिए: GrapesJS के लिए कोई आधिकारिक Vue आवरण नहीं है और Vue-विशिष्ट प्लगइन GJS.Market नहीं है। आप 'grapesjs.init()' को 'onMounted' से स्वयं कॉल करते हैं, जो पांच पंक्तियाँ हैं, और कैटलॉग में प्रत्येक प्लगइन तब अपरिवर्तित काम करता है।

शीर्ष से शुरू करें और केवल उन परतों को जोड़ें जिन तक आपका उत्पाद वास्तव में पहुंचता है। अधिकांश बिल्डर कभी भी नीचे के आधे हिस्से से कुछ भी स्थापित नहीं करते हैं।

बाज़ार

प्लगइन्स जो उन हिस्सों को हल करते हैं जिन्हें आप अन्यथा शेड्यूल करेंगे

GJS.Market से वास्तविक लिस्टिंग, उनके द्वारा हटाई गई समस्या के आधार पर समूहीकृत। उनमें से हर एक उसी संपादक उदाहरण में स्थापित होता है जो आपका Vue घटक बनाता है।

ब्लॉक और टेम्पलेट

समस्या: पहले रन पर एक खाली ब्लॉक पैनल। वे क्या जोड़ते हैं: तैयार अनुभाग, टेम्पलेट प्रबंधन और बहु-पृष्ठ परियोजनाएं। उनकी आवश्यकता किसे है: कोई भी जिसके उपयोगकर्ता डेवलपर नहीं हैं।

इस श्रेणी को ब्राउज़ करें
खरीदारी की सूची

अपना Vue पेज बिल्डर स्टैक बनाएं

वही कैटलॉग, आपके द्वारा बनाए जा रहे उत्पाद द्वारा काटा जाता है। उस स्टैक को स्थापित करें जो आपके मामले से मेल खाता हो और बाकी को अनदेखा करें - लोड किए गए प्रत्येक प्लगइन के साथ एक संपादक धीमा और उपयोग करने में कठिन है, बेहतर नहीं।

दिखाई गई कीमतें वर्तमान GJS.Market लिस्टिंग कीमतें हैं; मुफ्त प्लगइन्स चिह्नित हैं।

कैटलॉग

हर श्रेणी, क्रम में आपको उनकी आवश्यकता होगी

यदि ऊपर दिया गया स्टैक आपके उत्पाद से मेल नहीं खाता है, तो इसके बजाय यहां से शुरू करें। ये कैटलॉग अनुभाग हैं, मोटे तौर पर एक बिल्डर के रूप में उनमें बढ़ता है।

सब कुछ ब्राउज़ करें
खरीदें बनाम निर्माण

प्लगइन्स के साथ हर सुविधा को स्वयं बनाम विस्तारित करें

कोई भी कॉलम मुफ्त नहीं है। सवाल केवल यह है कि आपकी टीम को अपना समय किसमें बिताना चाहिए।

विचारइसे घर में बनाएंGJS.Market से स्थापित करें
क्षमता प्राप्त करनाआपके रोडमैप पर विकास का समयस्थापित करें और कॉन्फ़िगर करें
इसे काम करते रहनाआप इसे हमेशा के लिए बनाए रखेंएक प्रकाशित पैकेज के रूप में बनाए रखा
पुनः उपयोगकेवल आंतरिक कोडएक समाधान अन्य उत्पाद पहले से ही चल रहे हैं
कार्यक्षेत्रआप हर सुविधा का निर्माण स्वयं करते हैंकेवल वही जोड़ें जो आपके उत्पाद की आवश्यकता है
लागत कहां गिरती हैइंजीनियरिंग समयएक लिस्टिंग मूल्य, एक बार
आपकी टीम किस पर काम करती हैEditor बुनियादी ढांचाआपका उत्पाद

इस तालिका में उद्देश्य पर कोई लागत या समय के आंकड़े दिखाई नहीं देते हैं - हम आपकी टीम को नहीं जानते हैं, और यहां किसी भी संख्या का आविष्कार किया जाएगा।

वास्तविक तुलना

स्क्रैच बनाम GrapesJS से Vue पेज बिल्डर बनाएं

पंक्ति दर पंक्ति, आप स्वयं क्या लिख रहे होंगे और क्या पहले से मौजूद है। "एक्स्टेंसिबल" का अर्थ है कि इंजन हुक प्रदान करता है और आप व्यवहार की आपूर्ति करते हैं - आमतौर पर कुछ पंक्तियाँ, कभी-कभी एक प्लगइन।

योग्‍यताखरोंच सेGrapesJS
कैनवास का संपादननिर्माणशामिल
खींचें और छोड़ेंनिर्माणशामिल
Component मॉडलनिर्माणशामिल
ब्लॉकनिर्माणएक्स्टेंसिबल
Style Managerनिर्माणशामिल
उत्तरदायी संपादननिर्माणशामिल
परत का पेड़निर्माणशामिल
पूर्ववत करें और फिर से करेंनिर्माणशामिल
संपत्तिनिर्माणएक्स्टेंसिबल
टेम्पलेट्सनिर्माणएक्स्टेंसिबल
भंडारनिर्माणएक्स्टेंसिबल
HTML/CSS निर्यातनिर्माणशामिल
Vue कैनवास में घटकनिर्माणशामिल नहीं है - कैनवास DOM प्रस्तुत करता है
बहु-किरायेदारी, भूमिकाएँ, प्रकाशननिर्माणशामिल नहीं है - आपका आवेदन

शामिल = कोर के साथ जहाज। एक्स्टेंसिबल = एक प्रलेखित एक्सटेंशन बिंदु, प्लस प्लगइन्स जहां वे मौजूद हैं।
GrapesJS 0.23.6 पर 2026-09-02 के खिलाफ सत्यापित।

अपना Vue उत्पाद बनाएं। विज़ुअल एडिटर का पुनर्निर्माण न करें।

एकीकरण

GrapesJS को Vue 3 के साथ एकीकृत करें

पांच चरण, एक घटक। कोई आधिकारिक Vue आवरण नहीं है और आपको इसकी आवश्यकता नहीं है: GrapesJS एक सादे तत्व में प्रस्तुत होता है, इसलिए एकमात्र Vue-विशिष्ट प्रश्न यह है कि कौन सा जीवनचक्र हुक 'init()' कहता है। grapesjs 0.23.6 स्थापित करें, घटक बनाएं, माउंट पर प्रारंभ करें, अपने प्लगइन्स पास करें, अनमाउंट पर नष्ट करें।

  1. GrapesJS स्थापित करें
  2. संपादक घटक बनाएँ
  3. माउंट पर इनिशियलाइज़ करें
  4. प्लगइन्स कॉन्फ़िगर करें
  5. अनमाउंट पर नष्ट करें
npm install grapesjs
components/PageBuilder.vuevue
<!-- components/PageBuilder.vue -->
<template>
  <div ref="host" class="page-builder" />
</template>

<script setup lang="ts">
import { onBeforeUnmount, onMounted, ref, shallowRef } from 'vue';
import grapesjs, { type Editor } from 'grapesjs';
import 'grapesjs/dist/css/grapes.min.css';

// shallowRef, not ref: the editor is a large non-reactive instance and
// deep-proxying it costs performance for nothing.
const editor = shallowRef<Editor | null>(null);
const host = ref<HTMLElement | null>(null);

onMounted(() => {
  editor.value = grapesjs.init({
    container: host.value!,
    height: '100%',
    fromElement: false,
    storageManager: false,
    plugins: [],          // GJS.Market plugins go here
    blockManager: { blocks: [] },
  });
});

onBeforeUnmount(() => {
  editor.value?.destroy();
  editor.value = null;
});
</script>
  • 'shallowRef', 'रेफरी' नहीं: संपादक एक बड़ी गैर-प्रतिक्रियाशील वस्तु है और डीप-प्रॉक्सी करने से कुछ भी नहीं के लिए प्रदर्शन खर्च होता है।
  • 'onMounted' कभी भी सर्वर पर नहीं चलता है, जो इसे बिना किसी अतिरिक्त मशीनरी के Nuxt में सुरक्षित बनाता है।
  • अनमाउंट मैटर्स पर 'destroy()' - एक मार्ग परिवर्तन जो एक संपादक को अपने श्रोताओं और उसके iframe को लीक कर देता है।
  • 'storageManager: गलत' जब आप चीजों को वायरिंग कर रहे हों, तो API तैयार होने पर अपने एडाप्टर में स्वैप करें।
  • संपादक स्टाइलशीट को एक बार आयात करें; यह पैनलों को स्टाइल करता है, आपके एप्लिकेशन को नहीं।
  • इस बिंदु से पहले सब कुछ - घटनाएं, रैपर, कंपोजेबल फॉर्म - एकीकरण गाइड पर है।
संपूर्ण Vue एकीकरण मार्गदर्शिका पढ़ें
Nuxt

Vue 3 + Nuxt

GrapesJS को एक ब्राउज़र DOM की आवश्यकता है। Nuxt के सर्वर रेंडर के तहत कोई 'दस्तावेज़' नहीं है, इसलिए क्लाइंट पर संपादक बनाना होगा - जो 'onMounted' पहले से ही गारंटी देता है। '<ClientOnly>' बेल्ट-एंड-ब्रेसिज़ संस्करण है, और यह वह जगह है जहां फ़ॉलबैक मार्कअप रहता है।

  1. Nuxt SSR
  2. <ClientOnly>
  3. grapesjs.init()
  4. Browser DOM

सर्वर संपादक के चारों ओर सब कुछ प्रस्तुत करता है; ब्राउज़र में घटक माउंट होने के बाद संपादक स्वयं दिखाई देता है।

pages/editor.vuevue
<!-- pages/editor.vue -->
<template>
  <ClientOnly>
    <PageBuilder :project-id="route.params.id" />

    <template #fallback>
      <p class="editor-placeholder">Loading the editor…</p>
    </template>
  </ClientOnly>
</template>

<script setup lang="ts">
const route = useRoute();
</script>

पुनः पेश किया गया, माना नहीं गया

रनटाइम
Node 20, no DOM
GrapesJS
0.23.6
मॉड्यूल आयात करना
import('grapesjs') → resolves
init() कॉलिंग
grapesjs.init() → ReferenceError: document is not defined

Node पर बिना DOM सादे 2026-09-02 में चलाएं। अंतर मायने रखता है: आयात सुरक्षित है, इसलिए बंडल सर्वर-सुरक्षित रखने के लिए आपको डायनेमिक आयात की आवश्यकता नहीं है - आपको ब्राउज़र में होने के लिए इनिट कॉल की आवश्यकता है।

  • जब आप संपादक के स्थान पर सर्वर-रेंडर फ़ॉलबैक चाहते हैं तो '<ClientOnly>' का उपयोग करें।
  • '.client.vue' प्रत्यय Nuxt का एक पूरे घटक के लिए एक ही बात कहने का अपना तरीका है।
  • SSR इस पृष्ठ का दिलचस्प हिस्सा नहीं है - यह एक सीमा है, और यह दो-पंक्ति है।
  • संपादक मार्ग के बाहर सब कुछ सर्वर पर ठीक वैसा ही प्रस्तुत होता है जैसा आज होता है।
इनसे बचें

Vue पेज बिल्डर बनाते समय 4 गलतियों से बचना चाहिए

इनमें से प्रत्येक शुरुआत में सही हो सकता है और ग्राहकों के संपादक में आने के बाद इसे ठीक करना महंगा है।

  • गलती

    SSR के दौरान आरंभ करना

    सर्वर पर चलने वाले कहीं भी 'init()' को कॉल करना फेंकता है, क्योंकि कैनवास को प्रस्तुत करने के लिए कोई 'दस्तावेज़' नहीं है।

    इसके बजाय क्या करें

    संपादक को केवल 'onMounted' में बनाएं, और यदि आप सर्वर-रेंडर फ़ॉलबैक चाहते हैं तो मार्ग को '<ClientOnly>' में लपेटें।

  • गलती

    केवल HTML की बचत

    रेंडर किए गए आउटपुट को वापस संपादन योग्य दस्तावेज़ में नहीं बदला जा सकता है। इस तरह से सहेजा गया प्रत्येक पृष्ठ प्रकाशित होते ही फ्रीज हो जाता है।

    इसके बजाय क्या करें

    प्रोजेक्ट JSON को सत्य के स्रोत के रूप में संग्रहीत करें और जब भी आप प्रकाशित करें तो HTML और CSS को पुनर्जीवित करें।

  • गलती

    उपयोगकर्ताओं को असीमित खाली कैनवास देना

    कुल स्वतंत्रता ऐसे पृष्ठ तैयार करता है जो आपके डिज़ाइन सिस्टम को तोड़ते हैं, और पैनल में कुछ भी नहीं होने के साथ पहली बार चलने का अनुभव कोई पृष्ठ नहीं बनाता है।

    इसके बजाय क्या करें

    क्यूरेटेड ब्लॉक और टेम्प्लेट शिप करें, और उन स्टाइल गुणों को बाधित करें जिन तक उपयोगकर्ता पहुंच सकते हैं।

  • गलती

    हर प्लगइन को स्थापित करना

    प्रत्येक प्लगइन पैनल, बंडल वजन और एक सतह जोड़ता है जिसे आपके उपयोगकर्ताओं को समझना होगा। एक भीड़ भरे संपादक का उपयोग करना कठिन है, अधिक सक्षम नहीं।

    इसके बजाय क्या करें

    अपने उत्पाद के आकार के लिए स्टैक से शुरू करें और एक प्लगइन जोड़ें जब कोई वास्तविक आवश्यकता दिखाई दे।

लॉन्च से पहले

Vue पेज बिल्डर के लिए उत्पादन चेकलिस्ट

वे चीजें जो एक कार्यशील डेमो को किसी ऐसी चीज़ से अलग करती हैं जिसे आप भुगतान करने वाले ग्राहकों के सामने रख सकते हैं।

संपादक

जीवनचक्र और विन्यास

उदाहरण हर मार्ग परिवर्तन में सही ढंग से व्यवहार करता है।

  • 'init()' प्रति माउंट एक बार चलता है, सर्वर पर कभी नहीं
  • 'destroy()' अनमाउंट और मार्ग परिवर्तन पर चलता है
  • प्लगइन्स पहले 'load()' से पहले पंजीकृत होते हैं
  • कस्टम घटक और ब्लॉक एक ही स्थान पर पंजीकृत हैं
  • संपादक स्टाइलशीट ठीक एक बार लोड की जाती है
डाटा

परियोजना डेटा

उपयोगकर्ता द्वारा टाइप किया गया कुछ भी खो नहीं सकता है।

  • प्रोजेक्ट JSON सत्य का संग्रहीत स्रोत है
  • समझदार बैचिंग के साथ ऑटोसेव चालू है
  • संस्करणों को बनाए रखा जाता है इसलिए एक खराब संपादन पुनर्प्राप्त करने योग्य है
  • प्रोजेक्ट से अलग HTML और CSS लिखें प्रकाशित करें
  • लोड विफलताएं एक त्रुटि के रूप में सामने आती हैं, कभी भी खाली कैनवास के रूप में नहीं
यूएक्स

संपादन अनुभव

एक गैर-डेवलपर बिना सहायता के एक अच्छा पेज तैयार कर सकता है।

  • आपके उपयोगकर्ताओं द्वारा पहचानी जाने वाली श्रेणियों में क्यूरेट किए गए ब्लॉक
  • प्रति पृष्ठ प्रकार में कम से कम एक टेम्पलेट
  • सेव स्टेट आपके अपने UI में दिखाई देता है
  • डिवाइस की चौड़ाई पहुंच योग्य और स्पष्ट है
  • खाली राज्य बताते हैं कि आगे क्या करना है

पहले रन का अनुभव फीचर गिनती से अधिक गोद लेने का फैसला करता है।

प्रतिभूति

सर्वर-साइड प्रवर्तन

हर नियम लागू होता है जहां ग्राहक उस तक नहीं पहुंच सकता।

  • प्रत्येक संपादक मार्ग पर प्रमाणीकरण
  • प्रत्येक लोड, स्टोर और प्रकाशित कॉल पर प्राधिकरण
  • प्रकार और आकार, सर्वर-साइड के आधार पर सत्यापन अपलोड करें
  • प्रकाशित HTML परोसने से पहले साफ किया गया
  • सर्वर पर किरायेदार अलगाव की जाँच की गई, अनुरोध से अनुमान नहीं लगाया गया
प्रकाशन-व्‍यवसाय

पेज लाइव करना

स्वीकृत ड्राफ़्ट से लाइव URL तक का पथ निर्धारित किया गया है.

  • एक पूर्वावलोकन जो प्रकाशित आउटपुट से मेल खाता है
  • एक स्पष्ट प्रकाशन क्रिया, सहेजें से अलग
  • समीक्षा या अनुमोदन जहां आपकी प्रक्रिया की आवश्यकता है
  • प्रकाशन के बाद कैश अमान्यता
  • पिछले संस्करण के लिए एक रोलबैक पथ
प्रदर्शन

प्रदर्शन के विचार

संपादक एक भारी निर्भरता है और यह ठीक एक मार्ग पर है। एक बिल्डर में अधिकांश प्रदर्शन समस्याएं इसे लोड करने से आती हैं जहां इसकी आवश्यकता नहीं होती है।

  • संपादक को केवल उन मार्गों पर लोड करें जो वास्तव में संपादित करते हैं, आपके एप्लिकेशन शेल में नहीं।
  • स्टार्टअप पर सब कुछ पंजीकृत करने के बजाय आलसी-लोड भारी प्लगइन्स और पैनल।
  • संपादक के उदाहरण को गहरी प्रतिक्रियाशीलता से दूर रखें - इस तरह की वस्तुओं के लिए 'shallowRef' मौजूद है।
  • हर बदलाव पर संपादक की स्थिति को Vue रेफरी में मिरर न करें; उन घटनाओं को सुनें जिन्हें आप वास्तव में प्रस्तुत करते हैं।
  • परिसंपत्ति प्रबंधक को हजारों पंक्तियों को सौंपने के बजाय बड़े परिसंपत्ति पुस्तकालयों को पृष्ठांकित करें या आलस्य से लोड करें।
  • अपने उत्पाद का उपयोग करने वाले प्लगइन्स स्थापित करें; हर अतिरिक्त एक की कीमत बंडल आकार और पैनल स्थान है।
प्रतिभूति

सुरक्षा के मनन

एक पेज बिल्डर उपयोगकर्ताओं से मनमाने ढंग से सामग्री स्वीकार करता है और इसे अन्य लोगों द्वारा देखे जाने वाले पृष्ठों में बदल देता है। प्रत्येक इनपुट को अविश्वसनीय और प्रत्येक क्लाइंट-साइड नियम को सजावटी के रूप में मानें।

  • सर्वर पर प्रत्येक प्रोजेक्ट लोड, स्टोर और प्रकाशित को अधिकृत करें।
  • क्वेरी में टैनेंट अलगाव लागू करें, न कि उस घटक में जिसने इसे जारी किया है।
  • अपलोड को आपके स्टोरेज तक पहुंचने से पहले टाइप और साइज़ के आधार पर सत्यापित करें.
  • किसी को परोसने से पहले HTML प्रकाशित सैनिटाइज करें।
  • उस API को प्रमाणित करें जिसके लिए संपादक किसी अन्य समापन बिंदु की तरह बात करता है।
  • प्रकाशित समापन बिंदुओं को अलग से सुरक्षित करें — प्रकाशन एक विशेषाधिकार प्राप्त कार्रवाई है.
  • सर्वर पर अनुमतियों को फिर से जांचें, भले ही UI ने पहले से ही बटन छिपा दिया हो।

कभी भी केवल क्लाइंट-साइड अनुमतियों पर भरोसा न करें।

यह कौन करता है

Vue पेज बिल्डर कौन बनाता है?

विभिन्न उत्पाद, एक वास्तुकला। यदि आप यहां अपनी टीम को पहचानते हैं, तो इस पृष्ठ का बाकी हिस्सा आपके लिए लिखा गया है।

SaaS कंपनियां

किसी मौजूदा उत्पाद में विज़ुअल संपादन जोड़ना ताकि ग्राहक सामग्री परिवर्तनों के लिए टिकट दाखिल करना बंद कर दें.

एजेंसियों

प्रति क्लाइंट एक कस्टम संपादन अनुभव का निर्माण, एक कोडबेस पर वे बनाए रखते हैं।

CMS प्लेटफॉर्म

ग्राहकों को सामग्री पर दृश्य संपादन देना प्लेटफ़ॉर्म पहले से ही मॉडल है।

विपणन मंच

अभियान टीमों को लूप में किसी डेवलपर के बिना पृष्ठ लॉन्च करने की अनुमति देना.

Enterprise टीमें

भूमिकाओं, समीक्षा और अनुमोदन के साथ नियंत्रित आंतरिक संपादन वर्कफ़्लो बनाना।

प्रश्न

Vue पेज बिल्डर FAQ

Vue पेज बिल्डर क्या है?

Vue एप्लिकेशन के अंदर एक विज़ुअल एडिटर जो किसी को मार्कअप लिखने के बजाय कैनवास पर अनुभागों को खींचकर एक पृष्ठ को इकट्ठा करने और स्टाइल करने देता है। Vue ऐप मार्गों, उपयोगकर्ताओं और डेटा की आपूर्ति करता है; संपादक कैनवास की आपूर्ति करता है।

क्या मैं GrapesJS का उपयोग Vue 3 के साथ कर सकता हूँ?

हाँ। GrapesJS एक सादे DOM तत्व में बदल जाता है, इसलिए आप इसे 'onMounted' के अंदर बनाते हैं और इसे 'onBeforeUnmount' में नष्ट कर देते हैं। इसमें कोई रैपर लाइब्रेरी शामिल नहीं है।

क्या मैं GrapesJS के साथ Nuxt का उपयोग कर सकता हूँ?

हाँ। संपादक क्लाइंट पर बनाया गया है; 'onMounted' पहले से ही इसकी गारंटी देता है, और '<ClientOnly>' आपको इसके चारों ओर सर्वर-रेंडर फ़ॉलबैक देता है।

क्या GrapesJS Nuxt SSR के साथ काम करता है?

मॉड्यूल आयात करना सर्वर पर सुरक्षित है - केवल 'init()' के लिए DOM की आवश्यकता होती है। तो आसपास का पृष्ठ सर्वर-रेंडर सामान्य रूप से होता है और ब्राउज़र में घटक माउंट होने के बाद संपादक दिखाई देता है।

क्या GrapesJS एक Vue पेज बिल्डर है?

यह एक फ्रेमवर्क-अज्ञेयवादी संपादन इंजन है, न कि Vue लाइब्रेरी। यह एक Vue पेज बिल्डर बन जाता है जब आप इसे Vue घटक में माउंट करते हैं और इसे अपने स्वयं के भंडारण और प्रकाशन से जोड़ते हैं।

मैं GrapesJS को Vue के साथ कैसे एकीकृत करूं?

पैकेज स्थापित करें, एक कंटेनर तत्व के साथ एक घटक जोड़ें, अपने प्लगइन्स और ब्लॉक के साथ 'grapesjs.init()' में 'onMounted' पर कॉल करें, और अनमाउंट पर 'destroy()' पर कॉल करें। पूरी गाइड में इवेंट, कंपोजेबल और रैपर शामिल हैं।

क्या मैं Composition API का उपयोग कर सकता हूँ?

हां, और यह स्वाभाविक फिट है - जीवनचक्र हुक ठीक वहीं हैं जहां सृजन और आंसू हैं। उदाहरण को 'रेफरी' के बजाय 'shallowRef' में रखें।

क्या Vue के लिए कोई आधिकारिक GrapesJS रैपर है?

नहीं। एक आधिकारिक React आवरण है, लेकिन Vue के लिए कुछ भी नहीं है; npm पर पैकेज Vue 2 को लक्षित करता है और 2022 से अपडेट नहीं किया गया है। 'init()' को स्वयं कॉल करना लगभग पाँच पंक्तियाँ हैं और अनुरक्षित कोड पर निर्भर होने से बचता है।

क्या मैं कस्टम ब्लॉक बना सकता हूँ?

हाँ। Blocks संपादक के Block Manager पर आपके स्वयं के मार्कअप, लेबल और श्रेणी के साथ पंजीकृत हैं, और आप उन्हें समूहित कर सकते हैं हालांकि आपके उत्पाद की शब्दावली काम करती है।

क्या मैं कस्टम घटक बना सकता हूँ?

हाँ। अपने स्वयं के घटक प्रकारों को उनकी स्वयं की सेटिंग्स, बाधाओं और व्यवहार के साथ परिभाषित करें, फिर उन्हें ब्लॉक के रूप में उजागर करें। इस तरह एक बिल्डर सामान्य दिखना बंद कर देता है।

क्या Vue घटक कैनवास के अंदर प्रस्तुत होते हैं?

नहीं। कैनवास एक पृथक दस्तावेज़ है जो सादा DOM प्रस्तुत करता है, इसलिए यह HTML और CSS घटकों को माउंट करने के बजाय Vue को संपादित करता है। आपका आवेदन Vue है; संपादित पृष्ठ मार्कअप है जो आपका ऐप अपनी पसंद के अनुसार प्रस्तुत कर सकता है।

क्या मैं पुनः प्रयोज्य टेम्पलेट बना सकता हूँ?

हाँ। पूरे लेआउट को शुरुआती बिंदुओं के रूप में सहेजें, या तो अपने स्वयं के भंडारण के माध्यम से या कैटलॉग से टेम्पलेट प्रबंधन प्लगइन के साथ।

क्या मैं परियोजनाओं को अपने बैकएंड में सहेज सकता हूं?

हाँ, और यही इच्छित डिज़ाइन है। आप 'लोड' और 'स्टोर' विधियों के साथ एक स्टोरेज एडेप्टर पंजीकृत करते हैं जो आपके API को कॉल करते हैं - संपादक कभी भी आपके डेटाबेस से सीधे बात नहीं करता है।

क्या मुझे प्रोजेक्ट JSON या HTML स्टोर करना चाहिए?

प्रोजेक्ट JSON को स्टोर करें: यह सत्य का संपादन योग्य स्रोत है जिसे संपादक पुनः लोड करता है। प्रकाशित करते समय HTML और CSS उत्पन्न करें। केवल HTML संग्रहीत करने से पृष्ठ स्थायी रूप से असंपादित हो जाता है।

क्या मैं Vue के साथ SaaS पेज बिल्डर बना सकता हूँ?

हाँ। आपका Vue ऐप खातों, योजनाओं और रूटिंग को संभालता है; संपादक संलेखन संभालता है; आपका API परियोजनाओं को संभालता है। यह संयोजन एक उत्पाद के रूप में बेचे जाने वाले बिल्डर के लिए सामान्य आकार है।

क्या मैं एक बहु-किरायेदार पेज बिल्डर बना सकता हूं?

हां, लेकिन किरायेदारी आपके आवेदन और आपके डेटाबेस में रहती है, संपादक में नहीं। किरायेदार द्वारा प्रत्येक परियोजना, संपत्ति और टेम्पलेट को स्कोप करें और इसे सर्वर-साइड लागू करें।

क्या मैं एक व्हाइट-लेबल पेज बिल्डर बना सकता हूं?

हाँ। लोगो, रंग, पैनल, शब्दावली और उपलब्ध ब्लॉक सभी कॉन्फ़िगरेशन हैं, इसलिए प्रत्येक ग्राहक को एक ऐसा वातावरण दिया जा सकता है जो आपके उत्पाद जैसा दिखता है।

क्या मैं Vue के साथ लैंडिंग पेज बिल्डर बना सकता हूँ?

हाँ - यह सबसे आम पहला संस्करण है। मार्केटिंग अनुभागों का एक छोटा सा सेट तैयार करें, टेम्पलेट जोड़ें, और मार्केटिंग टीम को अपनी मौजूदा पाइपलाइन के माध्यम से प्रकाशित करने दें।

क्या मैं Vue के साथ सीएमएस संपादक बना सकता हूं?

हाँ. ऐसे घटक प्रकार पंजीकृत करें जो आपके सामग्री मॉडल को प्रतिबिंबित करते हैं, ताकि संपादक फ़्री-फ़ॉर्म मार्कअप के बजाय आपके निकायों के साथ विज़ुअल रूप से कार्य करें.

क्या मैं प्लगइन्स के साथ संपादक का विस्तार कर सकता हूं?

हाँ। एक प्लगइन एक फ़ंक्शन है जो संपादक इंस्टेंस प्राप्त करता है, इसलिए संपूर्ण GJS.Market कैटलॉग Vue ऐप में अपरिवर्तित काम करता है - देखने के लिए कोई Vue-विशिष्ट संस्करण नहीं है।

क्या मैं GrapesJS का व्यावसायिक रूप से उपयोग कर सकता हूँ?

हाँ। कोर BSD-3-Clause लाइसेंस प्राप्त है, जो आपके द्वारा बेचे जाने वाले उत्पाद के अंदर सहित व्यावसायिक उपयोग की अनुमति देता है। आपके द्वारा इंस्टॉल किए गए किसी भी प्लगइन के व्यक्तिगत लाइसेंस की जाँच करें।

क्या आपको अपना Vue पेज बिल्डर बनाने में सहायता चाहिए?

GrapesJS को Vue या Nuxt के साथ एकीकृत करने, कस्टम ब्लॉक और घटक बनाने, अपने बैकएंड को जोड़ने या उत्पादन-तैयार संपादन वर्कफ़्लो बनाने में सहायता चाहिए? हम वह काम करते हैं।

उन टीमों के लिए जो संपादक के बुनियादी ढांचे के बजाय उत्पाद को शिप करना पसंद करेंगे।

यहां से शुरू करें

खरोंच से शुरू किए बिना अपना Vue पेज बिल्डर बनाएं

अपने एप्लिकेशन के लिए Vue और विज़ुअल संपादन अनुभव के लिए GrapesJS का उपयोग करें। अपने स्वयं के घटक, ब्लॉक, टेम्पलेट, भंडारण और प्रकाशन वर्कफ़्लो जोड़ें - फिर बिल्डर को GJS.Market प्लगइन्स के साथ विस्तारित करें जब आपको अधिक की आवश्यकता हो।

डेवलपर्स

शुरू हो जाओ

पांच चरण और एक घटक। पैकेज इंस्टॉल करें और आज दोपहर अपने Vue ऐप में एक संपादक चलाएं।

शुरू हो जाओ
उत्पाद टीम

प्लगइन्स ब्राउज़ करें

ब्लॉक, टेम्प्लेट, भंडारण, संपत्ति और निर्यात - उन क्षमताओं को स्थापित करें जिन्हें आप अन्यथा रोडमैप पर रखेंगे।

प्लगइन्स ब्राउज़ करें
कंपनियां

कार्यान्वयन सहायता प्राप्त करें

एकीकरण, कस्टम घटक, बैकएंड वायरिंग और एक उत्पादन संपादन वर्कफ़्लो, आपकी टीम के साथ बनाया गया है।

हमसे बात करो

आपका Vue ऐप। आपका संपादक। आपका उत्पाद।