Angular पेज बिल्डर

Angular पेज बिल्डर के साथ GrapesJS

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

दृश्य खींचें और छोड़ेंकस्टम घटकपुनः प्रयोज्य ब्लॉकउत्तरदायी संपादनआपका बैकएंडप्लगइन्स के साथ एक्स्टेंसिबल

26k+

GitHub सितारे

1.4M+

npm डाउनलोड/माह

100+

GJS.Market पर प्लगइन्स

$0

लाइसेंस शुल्क, हमेशा

इसे काम करते हुए देखें

यह वही है जो आपके उपयोगकर्ता देखेंगे

तीन वास्तविक GrapesJS संपादक, केवल तभी लोड होते हैं जब आप उनसे पूछते हैं। इनमें से कोई भी डेमो Angular एप्लिकेशन नहीं है - और यही बात है। GrapesJS एक कंटेनर तत्व में प्रस्तुत होता है जो इसके स्वामित्व में है, इसलिए संपादन सतह वही दिखती है और व्यवहार करती है जो भी ढांचा इसके चारों ओर पृष्ठ को होस्ट करता है।

एक नए टैब में खोलें

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

grapesjs.com/demo.htmlनिःशुल्क

grapesjs.com से एक लाइव तृतीय-पक्ष संपादक लोड करता है।

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

स्क्रैच से संपादक का निर्माण किए बिना दृश्य पृष्ठ बनाएं

पेज बिल्डर बनाने में कुछ Angular घटकों से कहीं अधिक समय लगता है। एक उत्पादन-तैयार विज़ुअल एडिटर को इनमें से हर एक की आवश्यकता होती है, इससे पहले कि कोई भी इसके साथ एक पेज शिप कर सके:

  • खींचें और छोड़ें
  • कैंवस
  • अवयव
  • ब्लॉक
  • लेयरिंग
  • शैलियों
  • उत्तरदायी संपादन
  • संपत्ति प्रबंधन
  • टेम्पलेट्स
  • परियोजना भंडारण
  • निर्यातित माल
  • प्रकाशन-व्‍यवसाय

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

GrapesJS कोर BSD-3-Clause लाइसेंस, संस्करण 0.23.6 के तहत खुला स्रोत है, जिसमें किसी भी पैमाने पर कोई लाइसेंस शुल्क नहीं है।

अन्वेषण करें GrapesJS
बक्सों का इस्तेमाल करें

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

एक ही इंजन, छह अलग-अलग उत्पादों की ओर इशारा करता है। उनके बीच जो परिवर्तन होता है वह है आपका सामग्री मॉडल, आपके ब्लॉक और आपका प्रकाशन लक्ष्य - संपादक नहीं।

Angular CMS

सामग्री टीमों को एक फॉर्म भरने और लेआउट के जीवित रहने की उम्मीद करने के बजाय अपने CMS के अंदर पृष्ठों को दृश्य रूप से संपादित करने दें।

हेडलेस CMS संपादक

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

अभियान पृष्ठों के लिए मार्केटिंग को एक विज़ुअल संपादक दें, ताकि एक नया लैंडिंग पृष्ठ डेवलपर टिकट बनना बंद हो जाए.

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

फॉर्म बिल्डर

उपयोगकर्ताओं को अपने स्वयं के फ़ील्ड घटकों से कस्टम प्रपत्रों को इकट्ठा करने दें, सत्यापन नियमों के साथ आपका एप्लिकेशन पहले से ही समझता है।

प्रपत्र घटक

ईमेल बिल्डर

टेबल-आधारित मार्कअप ईमेल क्लाइंट के साथ दृश्य रूप से ईमेल टेम्पलेट बनाएं और प्रबंधित करें।

ईमेल टेम्पलेट बिल्डर

रिपोर्ट डिजाइनर

विज़ुअल रिपोर्ट और दस्तावेज़ लेआउट बनाएं जो आपका बैकएंड रेंडर समय पर डेटा से भर जाता है।

व्हाइट-लेबल SaaS

प्रत्येक ग्राहक को अपना स्वयं का ब्रांडेड संपादन वातावरण दें जो आपके उत्पाद के हिस्से की तरह दिखता है, न कि बोल्ट-ऑन टूल का।

व्हाइट-लेबल पेज बिल्डर
स्‍थापत्‍यशैली

Angular पेज बिल्डर कैसे काम करता है

संपादक आपके एप्लिकेशन के अंदर एक मार्ग है, इसके लिए प्रतिस्थापन नहीं। संपादन परत के ऊपर सब कुछ ठीक वहीं रहता है जहां Angular टीमें पहले से ही इसे रखती हैं।

  1. Angular आवेदन

    वह सब कुछ जो आपके उत्पाद को आपका बनाता है, अपरिवर्तित है।

    • प्रमाणीकरण
    • उपयोगकर्ता
    • बिलिंग
    • रूटिंग
    • व्यापार तर्क
  2. विज़ुअल पेज बिल्डर

    एक आलसी-भारित मार्ग, एक घटक जो कंटेनर का मालिक है, और एक सेवा जो संपादक उदाहरण का मालिक है।

    • संपादक मार्ग
    • संपादक घटक
    • संपादक सेवा
  3. GrapesJS

    दृश्य संपादन इंजन, आपके घटक द्वारा प्रदान किए जाने वाले कंटेनर के अंदर चल रहा है।

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

    जहां प्रोजेक्ट डेटा, अपलोड और प्रकाशित आउटपुट वास्तव में रहते हैं।

    • आपका API
    • आपका डेटाबेस
    • फ़ाइल भंडारण

Angular आपके एप्लिकेशन का मालिक है। GrapesJS दृश्य संपादन परत को शक्ति प्रदान करता है।

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

Angular एकीकरण मार्गदर्शिका पढ़ें
क्षमताओं

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

आठ उप-प्रणालियाँ जो इंजन के साथ आती हैं। प्रत्येक एक API है जिसे आप कॉन्फ़िगर करते हैं, न कि एक ब्लैक बॉक्स जिसे आप स्वीकार करते हैं।

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

उपयोगकर्ता घटकों को कैनवास पर खींचकर, उन्हें पुनः व्यवस्थित करके और जहां आप इसकी अनुमति देते हैं वहां उन्हें नेस्ट करके पृष्ठ बनाते हैं।

अवयव

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

ब्लॉक

उपयोगकर्ताओं को कच्चे HTML तत्वों की सूची के बजाय पैलेट में पूर्वनिर्धारित अनुभाग और लेआउट दें।

शैली प्रबंधक

उपयोगकर्ताओं को आपके द्वारा चुने गए और बाधित संपत्ति पैनलों के माध्यम से टाइपोग्राफी, रिक्ति, रंग और लेआउट को अनुकूलित करने दें।

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

किसी पृष्ठ का पूर्वावलोकन करें और उसे रीस्टाइल करें, किसी निश्चित सेट के बजाय आपके द्वारा निर्धारित डिवाइस चौड़ाई का उपयोग करके.

संपत्ति

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

टेम्पलेट्स

समाप्त पृष्ठों को पुनः प्रयोज्य प्रारंभिक बिंदुओं के रूप में सहेजें ताकि अगला पृष्ठ खाली के अलावा कहीं और शुरू हो।

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

संपादक से HTML और CSS साफ़ करें, या प्रोजेक्ट JSON पढ़ें और इसे वैसे भी प्रस्तुत करें जैसा आपका एप्लिकेशन पसंद करता है।

जानबूझकर इस सूची में क्या नहीं है: होस्टिंग, एक CMS, एक अनुमति मॉडल और प्रकाशन बुनियादी ढांचा। वे आपके एप्लिकेशन से संबंधित हैं, और नीचे दिए गए अनुभाग बताते हैं कि वे कैसे जुड़ते हैं।

अनुकूलन

अपना खुद का Angular पेज बिल्डर अनुभव बनाएं

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

  1. आपका उत्पाद
  2. कस्टम घटक
  3. कस्टम ब्लॉक
  4. कस्टम टेम्पलेट्स
  5. कस्टम आदेश
  6. कस्टम UI

प्रत्येक परत संपादक को आपके सामग्री मॉडल की ओर सीमित करती है। अंतिम तक, उपयोगकर्ता आपके उत्पाद की रचना कर रहे हैं - वेबसाइट नहीं।

ऐसे घटक प्रकारों को पंजीकृत करें जो आपके स्वयं के डोमेन ऑब्जेक्ट्स को प्रतिबिंबित करते हैं, केवल traits को उजागर करते हैं जिस पर आपका बैकएंड कार्य कर सकता है, और उन्हें अपनी श्रेणियों के तहत ब्लॉक पैलेट में रखें। उपयोगकर्ता तब एक मूल्य निर्धारण तालिका या एक उत्पाद ग्रिड के साथ काम करते हैं जिसे आपका API पहले से ही समझता है, न कि मनमाने मार्कअप के साथ जिसे आपको बाद में पार्स करना होगा।

register-blocks.tsts
// Your content model, not a generic website element.
editor.Components.addType('pricing-table', {
  isComponent: (el) => el.dataset?.gjsType === 'pricing-table',
  model: {
    defaults: {
      tagName: 'section',
      droppable: false,
      traits: ['plan', 'currency', 'billingPeriod'],
    },
  },
});

editor.Blocks.add('pricing-table', {
  label: 'Pricing',
  category: 'Your design system',
  content: { type: 'pricing-table' },
});

एक घटक प्रकार और ब्लॉक जो इसे सम्मिलित करता है। विशेषता नाम वे फ़ील्ड बन जाते हैं जिन्हें आपका बैकएंड पढ़ता है।

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

उपयोगकर्ताओं को सही बिल्डिंग ब्लॉक्स दें

एक संपादक जो लोग उपयोग करते हैं और जिसे वे छोड़ देते हैं, के बीच का अंतर आमतौर पर पहले दिन पैलेट में होता है।

आपके ब्लॉक

  • Hero
  • फ़ीचर ग्रिड
  • मूल्य निर्धारण
  • प्रशंसापत्र
  • FAQ
  • संपर्क करें
  • CTA
  • पाद लेख

उपयोगकर्ताओं को एक खाली कैनवास से शुरू न करें।

पुनः प्रयोज्य ब्लॉक और टेम्पलेट बनाएं जो आपके एप्लिकेशन के डिज़ाइन सिस्टम से मेल खाते हों, ताकि उपयोगकर्ता द्वारा बनाया गया प्रत्येक पृष्ठ पहले से ही ऑन-ब्रांड हो और पहले से ही उत्तरदायी हो। GJS.Market शिप ब्लॉक सेट और टेम्पलेट मैनेजर जिन्हें आप स्क्रैच से पहले पचास को लिखने के बजाय इंस्टॉल कर सकते हैं।

ब्लॉक और टेम्पलेट ब्राउज़ करें
भंडार

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

GrapesJS एक प्रोजेक्ट को JSON पर क्रमबद्ध करता है और इसे स्टोरेज एडाप्टर को सौंप देता है। वह एडाप्टर जो करता है वह पूरी तरह से आपका है।

  1. GrapesJS project data
  2. Angular HttpClient
  3. Your API
  4. Your backend
  5. Your database

संपादक आपके डेटाबेस से कभी बात नहीं करता है। यह आपके द्वारा पंजीकृत एडॉप्टर को कॉल करता है, और एडेप्टर आपके पास पहले से मौजूद API को कॉल करता है।

storage.tsts
editor.Storage.add('angular-backend', {
  async load() {
    return firstValueFrom(this.http.get(`/api/pages/${this.pageId}`));
  },
  async store(data) {
    return firstValueFrom(this.http.put(`/api/pages/${this.pageId}`, data));
  },
});

grapesjs.init({
  container,
  storageManager: { type: 'angular-backend', autosave: true, stepsBeforeSave: 5 },
});

एक कस्टम स्टोरेज एडाप्टर जो आपके API से जुड़ा हुआ है। यहां कुछ भी GJS.Market के लिए विशिष्ट नहीं है - यह संपादक का प्रलेखित भंडारण अनुबंध है।

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

    घटक, शैलियाँ, पृष्ठ और परिसंपत्तियाँ किसी JSON दस्तावेज़ के लिए क्रमबद्ध होती हैं, जिसे आप किसी भी स्तंभ या संग्रह में संग्रहीत कर सकते हैं.

  • स्वतः सेव

    भंडारण प्रबंधक केवल एक स्पष्ट कार्रवाई के बजाय परिवर्तनों की एक कॉन्फ़िगर करने योग्य संख्या के बाद सहेज सकता है।

  • रिमोट स्टोरेज

    एक कस्टम एडाप्टर और रूट लोड पंजीकृत करें और अपने स्वयं के इंटरसेप्टर और प्रमाणीकरण हेडर के साथ Angular के HttpClient के माध्यम से स्टोर करें।

  • संस्करण

    क्योंकि प्रत्येक सेव एक दस्तावेज़ है, इतिहास रखना एक बैकएंड निर्णय है - संपादक को यह जानने की आवश्यकता नहीं है कि यह हुआ था।

  • HTML/CSS आउटपुट

    प्रोजेक्ट JSON के साथ रेंडर किए गए मार्कअप को निर्यात करें जब आपके डिलीवरी पथ को री-रेंडर के बजाय स्थिर आउटपुट की आवश्यकता होती है।

  • प्रकाशन-व्‍यवसाय

    एक प्रकाशित पृष्ठ अपने स्वयं के जीवनचक्र के साथ एक अलग रिकॉर्ड है। इसे उस मसौदे से अलग रखें जिसे संपादक लिखता है।

आप नियंत्रित करते हैं कि प्रोजेक्ट डेटा कहाँ संग्रहीत किया जाता है।

प्रकाशन-व्‍यवसाय

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

अलग-अलग विफलता मोड के साथ लेखन और प्रकाशन अलग-अलग समस्याएं हैं। संपादक पहले वाले को हल करता है; दूसरा आपके बुनियादी ढांचे में रहता है, जहां आपकी कैशिंग, अनुमतियां और रोलबैक पहले से ही रहते हैं।

  1. बनाएं
  2. संपादित करें
  3. सहेजें
  4. समीक्षा
  5. प्रकाशित करना
  6. लाइव पेज

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

  • CMS

    आउटपुट को वापस उस सामग्री प्रणाली में लिखें जो आपका संगठन पहले से चलाता है।

  • REST API

    प्रोजेक्ट या रेंडर किए गए मार्कअप को किसी ऐसे एंडपॉइंट पर पोस्ट करें जो सत्यापन और अनुमतियों का मालिक हो.

  • स्थैतिक प्रकाशन

    प्रकाशन समय पर पृष्ठों को फ़ाइलों में प्रस्तुत करें ताकि लाइव पृष्ठ संपादक के रनटाइम में से कोई भी न हो।

  • कस्टम बैकएंड

    आउटपुट को उसी पथ के माध्यम से स्टोर, रूपांतरित और परोसें जो आपका एप्लिकेशन पहले से ही अपने पृष्ठों की सेवा के लिए उपयोग करता है।

  • CDN

    प्रकाशित संपत्तियों और मार्कअप को किनारे पर धकेलें, कैश अमान्यता के साथ आप नियंत्रित करते हैं।

  • कस्टम परिनियोजन

    अपने मौजूदा बिल्ड को ट्रिगर करें या प्रकाशन क्रिया से पाइपलाइन परिनियोजित करें.

GrapesJS संलेखन को संभालता है। आपका बुनियादी ढांचा प्रकाशन को संभाल सकता है।

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

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

आपके Angular एप्लिकेशन की एक तैनाती, एक संपादक, और इसमें प्रत्येक ग्राहक के लिए पृष्ठों की एक अलग दुनिया।

Angular SaaS

  • Org A

    • पेज
    • संपत्ति
    • टेम्पलेट्स
  • Org B

    • पेज
    • संपत्ति
    • टेम्पलेट्स
  • Org C

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

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

एक्सप्लोर SaaS पेज बिल्डर
सफेद लेबल

अपने Angular पेज बिल्डर को अपना बनाएं

संपादक के बारे में कुछ भी संपादक की तरह नहीं दिखना चाहिए। उपयोगकर्ता द्वारा छूई जाने वाली प्रत्येक सतह कॉन्फ़िगर करने योग्य, बदली जा सकने वाली या हटाने योग्य है।

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

एक विज़ुअल एडिटर को अपने Angular उत्पाद के मूल भाग में बदलें।

एक्सप्लोर व्हाइट-लेबल पेज बिल्डर
एकीकरण

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

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

  1. 1

    पदासीन करना

    संपादक को अपने आवेदन में जोड़ें। यह एक सादा npm पैकेज है जिसमें कोई Angular-विशिष्ट बिल्ड चरण नहीं है।

  2. 2

    एक संपादक सेवा बनाएँ

    संपादक इंस्टेंस को इंजेक्टेबल सेवा में रखें ताकि घटक पतला रहे और इंस्टेंस को साझा करना, मजाक उड़ाना और फाड़ना आसान हो।

  3. 3

    ngAfterViewInit में प्रारंभ करें

    संपादक बनाने से पहले कंटेनर तत्व DOM में होना चाहिए, क्योंकि GrapesJS इसे तुरंत मापता है।

  4. 4

    ngOnDestroy में सही ढंग से नष्ट करें

    मार्ग छोड़ने पर नष्ट करें को कॉल करें। इसके बिना संपादक अपने DOM श्रोताओं को रखता है और अगला नेविगेशन एक उदाहरण लीक करता है।

npm install grapesjs

एक निर्भरता। कोई Angular-विशिष्ट आवरण की आवश्यकता नहीं है।

page-builder.service.tsts
import { Injectable, NgZone, inject } from '@angular/core';
import grapesjs, { type Editor } from 'grapesjs';

@Injectable({ providedIn: 'root' })
export class PageBuilderService {
  private readonly zone = inject(NgZone);
  private editor?: Editor;

  create(container: HTMLElement): Editor {
    // GrapesJS binds its own DOM listeners to the canvas. Creating it outside
    // Angular keeps every drag frame from scheduling change detection.
    this.editor = this.zone.runOutsideAngular(() =>
      grapesjs.init({
        container,
        height: '100%',
        fromElement: false,
        storageManager: false,
      })
    );

    return this.editor;
  }

  destroy(): void {
    this.editor?.destroy();
    this.editor = undefined;
  }
}

सेवा उदाहरण और उसके जीवनकाल का मालिक है; घटक केवल कंटेनर का मालिक है।

page-builder.component.tsts
import {
  AfterViewInit,
  Component,
  ElementRef,
  OnDestroy,
  inject,
  viewChild,
} from '@angular/core';
import { PageBuilderService } from './page-builder.service';

@Component({
  selector: 'app-page-builder',
  standalone: true,
  template: '<div #canvas class="builder"></div>',
  styles: '.builder { height: 100vh; }',
})
export class PageBuilderComponent implements AfterViewInit, OnDestroy {
  private readonly builder = inject(PageBuilderService);
  private readonly canvas = viewChild.required<ElementRef<HTMLElement>>('canvas');

  ngAfterViewInit(): void {
    // The container has to be in the DOM first: GrapesJS measures it on init.
    this.builder.create(this.canvas().nativeElement);
  }

  ngOnDestroy(): void {
    // Without this the editor keeps its listeners after the route changes.
    this.builder.destroy();
  }
}

दृश्य मौजूद होने के बाद बनाएं, जब वह चला जाए तो नष्ट कर दें। वह जोड़ी अधिकांश एकीकरण है।

संपूर्ण Angular एकीकरण गाइड की आवश्यकता है?

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

Angular एकीकरण मार्गदर्शिका पढ़ें
पहचान बदलें

Angular परिवर्तन का पता लगाने के साथ काम करना

GrapesJS अपनी स्वयं की घटनाओं का उत्सर्जन करता है, और वे घटनाएँ Angular से नहीं आती हैं। दोनों का समन्वय करना कुछ पंक्तियाँ हैं, लेकिन इसे छोड़ने से दो बग पैदा होते हैं जो हर एकीकरण पहले हिट होता है।

  1. GrapesJS घटना
  2. NgZone.रन()
  3. Angular राज्य
  4. UI अपडेट
page-builder.component.tsts
editor.on('storage:end:store', () => {
  // Editor events fire outside Angular because the editor was created there.
  // Re-enter the zone before touching state the template renders.
  this.zone.run(() => this.lastSavedAt.set(new Date()));
});

एक हैंडलर में ज़ोन को फिर से दर्ज करना जो रेंडर की गई स्थिति को अपडेट करता है।

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

Angular जीवनचक्र और क्षेत्रों पर अधिक
सर्वर-साइड रेंडरिंग

Angular SSR और GrapesJS

GrapesJS को एक ब्राउज़र DOM की आवश्यकता है। Angular SSR या Angular यूनिवर्सल के तहत इसका मतलब है कि संपादक केवल ब्राउज़र में बनाया गया है - इसके चारों ओर का मार्ग अभी भी सर्वर पर सामान्य रूप से प्रस्तुत करता है।

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

page-builder.component.tsts
import { PLATFORM_ID, inject } from '@angular/core';
import { isPlatformBrowser } from '@angular/common';

export class PageBuilderComponent implements AfterViewInit {
  private readonly isBrowser = isPlatformBrowser(inject(PLATFORM_ID));

  ngAfterViewInit(): void {
    // There is no DOM on the server and GrapesJS needs one, so the editor is
    // created in the browser only. The rest of the route still renders on the
    // server as usual.
    if (!this.isBrowser) return;
    this.builder.create(this.canvas().nativeElement);
  }
}

संपूर्ण SSR समायोजन: संपादक बनने से पहले एक प्लेटफ़ॉर्म की जाँच करें।

TypeScript और एओटी

Angular, TypeScript और एओटी

एकीकरण साधारण Angular कोड है, जो इसके बारे में कहने लायक मुख्य बात है।

  • TypeScript के अनुकूल

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

  • Angular जीवनचक्र

    निर्माण और टियरडाउन ngAfterViewInit और ngOnDestroy - घटक वृक्ष के बाहर कोई मैन्युअल बूटस्ट्रैपिंग नहीं।

  • एओटी-संगत

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

  • ब्राउज़र के लिए आरंभीकरण

    जहां SSR चलन में है, केवल संपादक निर्माण ब्राउज़र-संरक्षित है; बाकी घटक सामान्य रूप से संकलित और प्रस्तुत करता है।

बिल्ड बनाम एडॉप्ट

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

विज़ुअल एडिटर के प्रयोग करने योग्य होने से पहले नीचे दी गई प्रत्येक क्षमता का अस्तित्व होना चाहिए। एकमात्र सवाल यह है कि आप उनमें से कौन सा स्वयं लिखते हैं।

योग्‍यताखरोंच सेGrapesJS
दृश्य कैनवासनिर्माणशामिल
खींचें और छोड़ेंनिर्माणशामिल
अवयवनिर्माणशामिल
ब्लॉकनिर्माणएक्स्टेंसिबल
बिछानानिर्माणशामिल
उत्तरदायी संपादननिर्माणशामिल
संपत्तिनिर्माणएक्स्टेंसिबल
टेम्पलेट्सनिर्माणएक्स्टेंसिबल
भंडारनिर्माणएक्स्टेंसिबल
निर्यातित मालनिर्माणएक्स्टेंसिबल
Angular एकीकरणनिर्माणएकीकृत करें

"एक्स्टेंसिबल" का अर्थ है कि सबसिस्टम मौजूद है और इसमें एक प्रलेखित API है जिसे आप अपने स्वयं के कार्यान्वयन पर इंगित करते हैं - ऐसा नहीं है कि यह आपके बैकएंड पर पूर्व-वायर्ड आता है। GrapesJS 0.23.6 पर 2026-09-03 के खिलाफ सत्यापित।

अपना Angular उत्पाद बनाएं। दृश्य संपादन इंजन का पुनर्निर्माण न करें।

  1. GrapesJS
  2. Angular integration
  3. Blocks
  4. Templates
  5. Forms
  6. Storage
  7. Assets
  8. Export
  9. Publishing

एक काम करने वाला बिल्डर जिस स्टैक के साथ समाप्त होता है। GrapesJS पहली परत को कवर करता है; बाकी इकट्ठा करने, स्थापित करने या खरीदने के लिए आपका है।

प्लगइन्स

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

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

प्लगइन कैटलॉग अस्थायी रूप से अनुपलब्ध है। इसे सीधे बाज़ार में ब्राउज़ करें।

बनाएं या बढ़ाएं

संपादक से शुरू करें। अपने उत्पाद की आवश्यकता जोड़ें।

दोनों कॉलम एक काम करने वाले बिल्डर के साथ समाप्त होते हैं। वे इस बात में भिन्न हैं कि आप अभी भी दो वर्षों में इसका कितना रखरखाव कर रहे हैं।

GrapesJS दृश्य संपादन नींव प्रदान करता है। GJS.Market प्लगइन्स आपको आंतरिक रूप से हर सुविधा का निर्माण करने के बजाय अतिरिक्त क्षमताओं के साथ अपने बिल्डर का विस्तार करने देते हैं।

सब कुछ स्वयं बनाएं

  • पहली प्रयोग करने योग्य रिलीज से पहले अधिक विकास
  • ब्राउज़र के रूप में अधिक रखरखाव, Angular और आपका डिज़ाइन सिस्टम चलता है
  • अधिक आंतरिक कोड जिसे केवल आपकी टीम ही समझती है
  • प्रत्येक संपादक सबसिस्टम कुछ ऐसा बन जाता है जिसके लिए आप कॉल पर हैं

प्लगइन्स के साथ विस्तार करें

  1. स्थापित करें कि उत्पाद को वास्तव में क्या चाहिए
  2. इसे अपने सामग्री मॉडल के विरुद्ध कॉन्फ़िगर करें
  3. अपने उपयोगकर्ताओं को दिखाई देने वाले हिस्सों को कस्टमाइज़ करें
  4. शिप करें, और अपना बजट अपनी सुविधाओं पर रखें
भेंट

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

पांच आवर्ती आकार, और उनमें से प्रत्येक वास्तव में एक दृश्य संपादक के साथ क्या खरीद रहा है।

SaaS कंपनियां

किसी ऐसे उत्पाद में विज़ुअल संपादन जोड़ें जिसके ग्राहक वर्तमान में उनके लिए पृष्ठ बदलने के लिए समर्थन मांगते हैं.

एजेंसियों

CMS को सौंपने के बजाय प्रति ग्राहक एक कस्टम संपादन वातावरण बनाएं जो कोई नहीं चाहता था।

CMS प्लेटफॉर्म

स्क्रैच से एक संपादक इंजन लिखने के लिए एक रोडमैप वर्ष खर्च किए बिना दृश्य संपादन जोड़ें।

विपणन मंच

विपणक को प्रत्येक शीर्षक के लिए लूप में डेवलपर के बिना पृष्ठ बनाने और बदलने दें।

एंटरप्राइज़ टीमों

नियंत्रित आंतरिक संपादन वर्कफ़्लो बनाएं, जहां जो संपादित किया जा सकता है वह उतना ही महत्वपूर्ण है जितना कि बनाया जा सकता है।

अपना रास्ता चुनें

सही पेज बिल्डर दृष्टिकोण चुनें

एक दृश्य संपादक को शिप करने के चार तरीके। वे ओवरलैप करते हैं, लेकिन वे अलग-अलग बाधाओं से शुरू करते हैं - और गलत को चुनना देर से दिखाई देता है।

Angular पेज बिल्डर

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

एम्बेड करने योग्य पेज बिल्डर

संपादक को एक ऐसे एप्लिकेशन में एम्बेड करें जो पहले से मौजूद है, दोनों के बीच न्यूनतम सतह क्षेत्र के साथ।

एम्बेड करने योग्य पेज बिल्डर

SaaS पेज बिल्डर

किरायेदारी, योजनाओं और प्रति-ग्राहक प्रकाशन के साथ एक ग्राहक-सामना करने वाला दृश्य संपादन उत्पाद बनाएं।

SaaS पेज बिल्डर

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

संपादक को अपने स्वयं के उत्पाद की तरह दिखें और व्यवहार करें, उसके पैनलों में शब्दावली तक।

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

एक ही चीज़ को दूसरे ढांचे पर बना रहे हैं? तर्क React, Next.js और Vue के लिए समान है - केवल जीवनचक्र कोड बदलता है। React पेज बिल्डर, Next.js पेज बिल्डर, Vue पेज बिल्डर.

प्रदर्शन

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

एक संपादक एक भारी अनुप्रयोग है और एक प्रकाशित पृष्ठ नहीं है। उन्हें एक बंडल के रूप में मानना जल्दी से बचने लायक गलती है।

  1. आलसी-लोड संपादक मार्ग

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

  2. अनावश्यक पुनः प्रस्तुत करने से बचें

    Angular के ज़ोन के बाहर संपादक बनाएं और इसे केवल उन हैंडलर्स में फिर से दर्ज करें जो रेंडर की गई स्थिति को अपडेट करते हैं।

  3. बड़ी संपत्ति लाइब्रेरी को अनुकूलित करें

    परिसंपत्ति प्रबंधक को एक साथ कई हजार छवियों को सौंपने के बजाय अपने API के खिलाफ पेजिनेट करें।

  4. जरूरत पड़ने पर ही इनिशियलाइज़ करें

    उदाहरण बनाएं जब संपादक वास्तव में दिखाया जाता है, न कि जब आसपास का घटक माउंट होता है।

  5. संपादक कोड को प्रकाशित पृष्ठों से बाहर रखें

    प्रकाशित आउटपुट HTML और CSS है। संपादक के बारे में कुछ भी इसके साथ शिप करने की आवश्यकता नहीं है।

संपादक रनटाइम और प्रकाशित पृष्ठ को समान प्रदर्शन आवश्यकताओं की आवश्यकता नहीं है।

प्रतिभूति

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

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

  1. सर्वर-साइड प्राधिकरण

    प्रत्येक लोड, स्टोर और प्रकाशित कॉल पर जांचें कि क्या यह उपयोगकर्ता इस प्रोजेक्ट पर कार्य कर सकता है।

  2. किरायेदार अलगाव

    सत्र से टैनेंट को हल करें, कभी भी पैरामीटर से क्लाइंट परिवर्तित नहीं कर सकता है।

  3. सत्यापन अपलोड करें

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

  4. API प्रमाणीकरण

    स्टोरेज एडाप्टर ब्राउज़र में चलता है। इसके समापन बिंदुओं को आपके बाकी API के समान प्रमाणीकरण की आवश्यकता होती है।

  5. सामग्री की स्वच्छता

    जहां संपादक कस्टम कोड एम्बेड कर सकते हैं, उस मार्कअप को किसी और को दिए जाने से पहले सर्वर पर सैनिटाइज करें।

  6. सुरक्षित प्रकाशन समापन बिंदु

    प्रकाशन से जनता जो देखती है उसे बदल देती है। इसे दर-सीमित करें, इसे लॉग करें और इसे अपनी अनुमति के पीछे गेट करें।

  7. सर्वर-साइड अनुमति जाँच

    एक बटन छिपाने से UI बदल जाता है, न कि API। UI का तात्पर्य हर नियम के पीछे भी मौजूद होना चाहिए।

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

सेवाएं

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

अपने GrapesJS एप्लिकेशन के अंदर Angular को एकीकृत करने, विस्तारित करने या अनुकूलित करने में सहायता चाहिए? हमारी टीम एकीकरण, कस्टम प्लगइन्स, UI अनुकूलन और उत्पादन कार्यान्वयन में मदद कर सकती है।

  • Angular एकीकरण और संपादक वास्तुकला
  • कस्टम घटक, ब्लॉक और प्लगइन्स
  • UI अनुकूलन और व्हाइट-लेबलिंग
  • भंडारण, प्रकाशन और उत्पादन रोलआउट
सेवाओं का अन्वेषण करें
FAQ

Angular पेज बिल्डर प्रश्न

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

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

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

हाँ। GrapesJS ढांचा-अज्ञेयवादी है: यह आपके द्वारा दिए गए कंटेनर तत्व में प्रस्तुत करता है, इसलिए यह किसी भी अन्य DOM-आधारित पुस्तकालय की तरह Angular घटक के अंदर काम करता है।

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

नहीं - यह विज़ुअल एडिटिंग इंजन है जिस पर Angular पेज बिल्डर बनाया गया है। कोई आधिकारिक Angular रैपर नहीं है; आप कोर लाइब्रेरी को सीधे एकीकृत करते हैं, जो एक घटक और एक सेवा है।

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

पैकेज स्थापित करें, इंस्टेंस को इंजेक्टेबल सेवा में रखें, कंटेनर के DOM में आने के बाद इसे ngAfterViewInit में बनाएं, और इसे ngOnDestroy में नष्ट कर दें। पूर्ण गाइड रैपर, ज़ोन और उत्पादन संबंधी चिंताओं को कवर करता है।

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

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

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

हाँ। Component प्रकार अपने स्वयं के traits, ड्रॉप नियमों और व्यवहार के साथ पंजीकृत होते हैं, इस तरह संपादक को सामान्य HTML से आपके सामग्री मॉडल तक सीमित कर दिया जाता है।

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

हाँ। एक सहेजे गए प्रोजेक्ट को एक नए पृष्ठ के लिए शुरुआती बिंदु के रूप में पुनः लोड किया जा सकता है। टेम्पलेट लाइब्रेरी और प्रबंधक प्लगइन्स के रूप में भी उपलब्ध हैं यदि आप UI का निर्माण नहीं करना चाहते हैं।

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

हाँ। एक कस्टम स्टोरेज एडाप्टर पंजीकृत करें जिसकी लोड और स्टोर विधियां आपके API से HttpClient तक कॉल करती हैं, इसलिए आपके इंटरसेप्टर, ऑथ हेडर और त्रुटि हैंडलिंग हमेशा की तरह लागू होते हैं।

क्या मैं अपने स्वयं के डेटाबेस का उपयोग कर सकता हूं?

हाँ। संपादक एक JSON दस्तावेज़ तैयार करता है और कभी भी डेटाबेस से बात नहीं करता है, इसलिए उस दस्तावेज़ को कहाँ संग्रहीत किया जाता है यह पूरी तरह से एक बैकएंड निर्णय है।

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

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

क्या मैं Angular CMS संपादक बना सकता हूँ?

हाँ। संपादक फॉर्म-आधारित संपादन स्क्रीन को बदल देता है; आपका CMS सामग्री प्रकार, वर्कफ़्लो और अनुमतियों का स्वामित्व रखता है।

क्या मैं Angular के साथ एक फॉर्म बिल्डर बना सकता हूं?

हाँ। सत्यापन और नामकरण के लिए traits के साथ घटक प्रकारों के रूप में अपने स्वयं के फ़ील्ड घटकों को पंजीकृत करें, ताकि उपयोगकर्ता स्कीमा पर मानचित्रों को इकट्ठा करें जो आपका बैकएंड समझता है।

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

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

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

हाँ। पैनल, आइकन, रंग, ब्लॉक श्रेणियां और शब्दावली सभी कॉन्फ़िगर करने योग्य हैं, और आप संपादक को अपने कमांड Angular UI से इसके कमांड API के माध्यम से ड्राइव कर सकते हैं।

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

आसपास का मार्ग सर्वर पर सामान्य रूप से प्रस्तुत करता है; संपादक स्वयं ब्राउज़र में ही बनाया गया है। isPlatformBrowser के साथ आरंभीकरण करें और सर्वर पर जल्दी लौटें।

GrapesJS Angular के NgZone के साथ कैसे काम करता है?

runOutsideAngular के अंदर संपादक बनाएं ताकि कैनवास इंटरैक्शन लगातार परिवर्तन का पता लगाने को ट्रिगर न करे, फिर कुछ ईवेंट हैंडलर के अंदर NgZone.run का उपयोग करें जो आपके टेम्पलेट रेंडर को अपडेट करते हैं।

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

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

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

हाँ। प्लगइन्स ऐसे फ़ंक्शन हैं जो संपादक प्राप्त करते हैं और घटकों, ब्लॉक, कमांड या पैनलों को पंजीकृत करते हैं। GJS.Market ब्लॉक, समृद्ध पाठ, भंडारण, संपत्ति और निर्यात के लिए मुफ्त और वाणिज्यिक प्लगइन्स सूचीबद्ध करता है।

शुरू हो जाओ

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

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

चौंक

शुरू हो जाओ

संपादक स्थापित करें, इसे Angular घटक के अंदर एक कंटेनर पर माउंट करें, और आज दोपहर स्क्रीन पर कुछ रखें।

शुरू हो जाओ
विस्तार

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

ब्लॉक, टेम्प्लेट, रिच टेक्स्ट, स्टोरेज और एक्सपोर्ट - अपने उत्पाद को लिखने के बजाय उन क्षमताओं को इंस्टॉल करें जिनकी उन्हें लिखना चाहिए।

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

देखें Angular गाइड

जीवनचक्र, क्षेत्र, SSR, रैपर और उत्पादन चेकलिस्ट, एकीकरण पृष्ठ पर अंत से अंत तक कवर किया गया है।

देखें Angular गाइड

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