खींचें और छोड़ें
उपयोगकर्ता टेम्पलेट फ़ाइल को संपादित करने के बजाय ब्लॉक और घटकों को कैनवास पर ले जाते हैं। आप तय करते हैं कि कौन से ब्लॉक मौजूद हैं, उन्हें कहां गिराया जा सकता है और उनमें क्या हो सकता है।
ड्रैग-एंड-ड्रॉप घटकों के साथ दृश्य रूप से HTML पृष्ठ बनाएं, हाथ से CSS लिखे बिना शैलियों को संपादित करें, और अपने एप्लिकेशन द्वारा उत्पादित HTML और CSS पर नियंत्रण रखें।
26k+
GitHub सितारे
1.4M+
मासिक npm डाउनलोड
100+
GJS.Market पर प्लगइन्स
BSD-3-Clause
कोर लाइसेंस
यह एक घटक में पृष्ठ का पूरा तर्क है। विज़ुअल टैब वह है जो आपका उपयोगकर्ता खींचता है और संपादित करता है। अन्य दो वे हैं जो संपादक आपके कोड को वापस सौंपता है - कुछ भी छिपा नहीं है, कुछ भी मालिकाना नहीं है, बस मार्कअप और स्टाइलशीट टेक्स्ट जिसे आप अपनी पसंद के अनुसार स्टोर, रूपांतरित और प्रकाशित कर सकते हैं।
<div id="editor">उपयोगकर्ता क्या देखता है: बाईं ओर ब्लॉक, बीच में पृष्ठ, दाईं ओर शैली नियंत्रण।
ब्लॉक
Build faster
Launch your next project.
Get startedशैलियों
<body>
<section class="hero">
<h1 class="hero__title">Build faster</h1>
<p class="hero__text">Launch your next project.</p>
<a href="/start" class="hero__cta">Get started</a>
</section>
</body>* { box-sizing: border-box; } body {margin: 0;}
.hero{
padding-top:96px;
padding-right:24px;
padding-bottom:96px;
padding-left:24px;
text-align:center;
background-color:rgb(15, 23, 42);
}
.hero__title{
font-size:48px;
color:rgb(255, 255, 255);
}
.hero__cta{
display:inline-block;
padding-top:14px;
padding-right:28px;
padding-bottom:14px;
padding-left:28px;
border-top-left-radius:8px;
border-top-right-radius:8px;
border-bottom-right-radius:8px;
border-bottom-left-radius:8px;
background-color:rgb(99, 102, 241);
color:rgb(255, 255, 255);
}
@media (max-width: 480px){
.hero__title{ font-size:32px; }
}दोनों कोड फलक GrapesJS 0.23.6 के वास्तविक रिटर्न मान हैं, पढ़ने के लिए फिर से इंडेंट किए गए हैं - प्रत्येक कॉल वास्तव में एक पंक्ति लौटाती है। उन पर निर्माण करने से पहले जानने लायक दो विवरण: getHtml() रैपर को क्रमबद्ध करता है, इसलिए परिणाम <body> में संलग्न होता है ... </body>, और getCss() शॉर्टहैंड घोषणाओं को लॉन्गहैंड के रूप में लिखता है और रंगों को आरजीबी () में सामान्य करता है। स्टाइलशीट भी एक छोटे से रीसेट GrapesJS इंजेक्ट के साथ शुरू होती है; getCss({ avoidProtected: true }) इसे छोड़ देता है।
एक HTML ड्रैग-एंड-ड्रॉप बिल्डर उपयोगकर्ताओं को पृष्ठ संरचनाओं को नेत्रहीन रूप से इकट्ठा करने देता है, जबकि आपका एप्लिकेशन अंतर्निहित सामग्री, स्टाइलिंग और प्रकाशन वर्कफ़्लो के नियंत्रण में रहता है।
उपयोगकर्ता टेम्पलेट फ़ाइल को संपादित करने के बजाय ब्लॉक और घटकों को कैनवास पर ले जाते हैं। आप तय करते हैं कि कौन से ब्लॉक मौजूद हैं, उन्हें कहां गिराया जा सकता है और उनमें क्या हो सकता है।
सामग्री, लेआउट और शैलियों को हर CSS नियम को हाथ से लिखने के बजाय पैनल के माध्यम से संपादित किया जाता है। संपादक उन विकल्पों को सामान्य स्टाइलशीट नियमों में बदल देता है।
परिणामी HTML और CSS को दो सादे तारों के रूप में पुनः प्राप्त करें और उन्हें अपने स्वयं के एप्लिकेशन, अपने स्वयं के भंडारण और अपने स्वयं के प्रकाशन वर्कफ़्लो में ले जाएं।
यह एक संपादक है जो किसी व्यक्ति को टुकड़ों को कैनवास पर खींचकर, कोड के बजाय नियंत्रण के माध्यम से समायोजित करके, और वास्तविक HTML और CSS को दूसरी तरफ से बाहर निकालकर एक वेब पेज को इकट्ठा करने देता है। इसे आश्वस्त करने के लिए, इसे निम्नलिखित सभी को सॉफ़्टवेयर के एक सुसंगत टुकड़े में संयोजित करना होगा:
एक दृश्य HTML संपादक और एक साधारण ड्रैग-एंड-ड्रॉप लाइब्रेरी के बीच का अंतर यह है कि संपादक संपूर्ण संपादन स्थिति - चयन, घटक, शैलियों, कमांड, भंडारण और आउटपुट - को एक सिस्टम के रूप में प्रबंधित करता है। एक पुस्तकालय स्क्रीन पर एक बॉक्स को स्थानांतरित करता है; एक संपादक जानता है कि वह बॉक्स क्या है, इसमें क्या हो सकता है, कौन सा CSS नियम इसका है, और परिणाम को कैसे क्रमबद्ध किया जाए।
तीन सार्वजनिक GrapesJS बनाता है। जब तक आप क्लिक नहीं करते तब तक कुछ भी लोड नहीं होता है - फ़्रेम अनुरोधित रहते हैं इसलिए इस अनुभाग में आपको आगमन पर कुछ भी खर्च नहीं करना पड़ता है।
स्टॉक GrapesJS डेमो। एक ब्लॉक को खींचें, उसका चयन करें, एक शैली बदलें - फिर उसके टूलबार में कोड दृश्य खोलें और अपने साथ HTML और CSS परिवर्तन देखें।
iframe में एक तृतीय-पक्ष डेमो लोड करता है। जब तक आप क्लिक नहीं करते तब तक कुछ भी अनुरोध नहीं किया जाता है।
एक ब्लॉक चुनें
उपयोगकर्ता आपके द्वारा परिभाषित पैलेट से चुनता है। एक ब्लॉक एक नामित, पुनः प्रयोज्य प्रारंभिक बिंदु है - एक hero, एक मूल्य निर्धारण तालिका, एक फॉर्म - एक मनमाना खाली div नहीं।
इसे कैनवास में खींचें
संपादक हल करता है कि ब्लॉक कानूनी रूप से कहां उतर सकता है, घटक सम्मिलित करता है और उसका चयन करता है। प्रति घटक प्रकार सेट करने के लिए ड्रॉप नियम आपके हैं।
सामग्री और शैलियों को संपादित करें
पाठ को जगह में संपादित किया गया है; लेआउट, रिक्ति, टाइपोग्राफी और रंग Style Manager से आते हैं। प्रत्येक परिवर्तन संपादक ट्रैक का CSS नियम बन जाता है।
प्रोजेक्ट सहेजें
Storage Manager संपादक राज्य को उस समापन बिंदु पर भेजता है जिस पर आप इसे इंगित करते हैं। यह वह स्थिति है जिसे संपादन जारी रखने की आवश्यकता है, समाप्त पृष्ठ नहीं।
निर्यात या प्रकाशित करें HTML + CSS
getHtml() और getCss() पर कॉल करें, फिर वह करें जो आपके उत्पाद की आवश्यकता हो: sanitize, अपने लेआउट, संस्करण, कैश में लपेटें, तैनात करें।
बिल्कुल उतना ही जितना आप अनुमति देते हैं। इनमें से हर एक कुछ ऐसा है जिसे संपादक उजागर कर सकता है - और कुछ ऐसा जिसे आप प्रति घटक प्रकार में लॉक कर सकते हैं ताकि एक बाज़ारिया एक इंजीनियर द्वारा डिज़ाइन किए गए लेआउट को तोड़ न सके।
पाठ, शीर्षक, लिंक और कोई भी सामग्री जिसे आप संपादन योग्य चिह्नित करते हैं। Components आप बरकरार रखना चाहते हैं उसे आसानी से गैर-संपादन योग्य छोड़ा जा सकता है।
अनुभाग, कॉलम, कंटेनर और उनके बीच की दूरी, Style Manager में आयाम और फ्लेक्स नियंत्रण के माध्यम से।
फ़ॉन्ट परिवार, आकार, वजन, रेखा की ऊंचाई और संरेखण, सामान्य CSS घोषणाओं के रूप में लिखा गया है।
पाठ, पृष्ठभूमि, बॉर्डर और अन्य दृश्य गुण। मानों को उत्सर्जित स्टाइलशीट में rgb() के रूप में क्रमबद्ध किया जाता है।
Asset Manager के माध्यम से नियंत्रित किया जाता है, जिसे आप अपने स्वयं के अपलोड एंडपॉइंट या स्टोरेज प्रदाता पर इंगित कर सकते हैं।
नियम किसी डिवाइस के लिए स्कोप किए गए हैं. ब्रेकपॉइंट सक्रिय होने पर स्टाइलिंग आधार नियम को अधिलेखित करने के बजाय एक मेल खाने वाली मीडिया क्वेरी का उत्सर्जन करती है.
आपके द्वारा परिभाषित संरचित, पुनः प्रयोज्य तत्व — वह इकाई जिसे एक ब्लॉक एक बार गिरा देने के बाद बदल जाता है, और वह चीज़ जिसे आपका ऐप बाद में पहचान सकता है।
लक्षण सेटिंग पैनल में फ़ील्ड बन जाते हैं, इसलिए एक कस्टम घटक एक शीर्षक और एक लिंक लक्ष्य को उजागर कर सकता है और कुछ नहीं।
इनमें से कुछ डिफ़ॉल्ट के बजाय कॉन्फ़िगरेशन हैं। GrapesJS Style Manager को सामान्य, फ्लेक्स, आयाम, टाइपोग्राफी, सजावट और अतिरिक्त क्षेत्रों के साथ बॉक्स से बाहर भेजता है; संपत्ति अपलोड, रिच-टेक्स्ट व्यवहार और प्रति-घटक अनुमतियाँ ऐसी चीजें हैं जिन्हें आप तार करते हैं - या इसके लिए एक प्लगइन स्थापित करते हैं।
एक विज़ुअल एडिटर केवल तभी उपयोगी होता है जब परिणाम आपके एप्लिकेशन में फिट हो सके। GrapesJS दो चीजों को अलग रखता है, और अंतर किसी भी फीचर सूची से अधिक मायने रखता है: संपादन जारी रखने के लिए इसे जिस स्थिति की आवश्यकता होती है, और वह मार्कअप जो आपके उपयोगकर्ताओं को वास्तव में प्राप्त होता है।
कैनवास से लाइव पेज तक
// What the editor needs to keep editing — components, styles,
// pages, assets and symbols. Store this to resume a session.
const projectState = editor.getProjectData();
// What your users actually receive. Two plain strings.
const html = editor.getHtml(); // <body>…</body>
const css = editor.getCss(); // one line of CSS
// From here it is your application's decision: sanitize it, wrap it
// in your own layout, version it, cache it, put it behind your CDN.
await fetch(`/api/pages/${pageId}/publish`, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ html, css }),
});उम्मीदों पर एक नोट: उत्सर्जित स्टाइलशीट वफादार है, हाथ से ट्यून नहीं किया गया है। शॉर्टहैंड लॉन्गहैंड के रूप में निकलते हैं, रंग rgb() के रूप में, और एक छोटा रीसेट तब तक प्रीपेड होता है जब तक कि आप इसे अक्षम नहीं करते। आउटपुट को एक विश्वसनीय स्रोत के रूप में मानें जिसे आप पोस्ट-प्रोसेस करते हैं, उसी तरह जैसे आप किसी भी बिल्ड चरण के आउटपुट का इलाज करेंगे।
प्रत्येक दृश्य HTML संपादक को कुछ भी दिलचस्प करने से पहले सबसिस्टम के समान सेट की आवश्यकता होती है। सवाल यह नहीं है कि आपको उनकी आवश्यकता होगी या नहीं - यह है कि क्या उन्हें लिखना आपकी टीम के अगले छह महीनों के लायक आपके उत्पाद का हिस्सा है।
कुछ भी संपादित करने से पहले एक HTML संपादक को क्या चाहिए
और आप उन्हें स्थायी रूप से मालिक हैं: कैनवास जिसे ब्राउज़र की तरह रेंडरिंग करते समय संपादन योग्य रहना पड़ता है, ड्रॉप-टारगेट लॉजिक, पूर्ववत स्टैक जो बाकी सब कुछ जीवित रहता है, सीरियलाइज़र जो आपके इन-मेमोरी ट्री को मार्कअप में वापस बदल देता है - साथ ही जब तक उत्पाद रहता है तब तक उनके खिलाफ हर बग रिपोर्ट।
कैनवास, ड्रैग एंड ड्रॉप, घटक मॉडल, Block Manager, Style Manager, Device Manager, Asset Manager, पूर्ववत इतिहास, Storage Manager और HTML/CSS आउटपुट APIs कोर के साथ आते हैं। आप जो लिखते हैं वह वह हिस्सा है जो आपके उत्पाद के लिए विशिष्ट है।
यह दावा नहीं है कि GrapesJS आपका पूरा उत्पाद है। भंडारण, प्रमाणीकरण, अनुमतियाँ, प्रकाशन, स्वच्छता और प्रत्येक उत्पाद-विशिष्ट वर्कफ़्लो आपका ही रहता है — नीचे दिया गया आर्किटेक्चर आरेख देखें कि रेखा कहाँ गिरती है।
दायां कॉलम एक वादा नहीं है कि आपके उपयोग के मामले के लिए एक सबसिस्टम समाप्त हो गया है - यह उस खाली फ़ाइल के बजाय GrapesJS के हिस्से का नाम देता है जिसे आप अन्यथा शुरू करेंगे।
| संपादक सबसिस्टम | अपने आप को बनाएं | GrapesJS से शुरू करें |
|---|---|---|
| कैंवस | निर्माण | Editor फाउंडेशन |
| खींचें और छोड़ें | निर्माण | Editor फाउंडेशन |
| Component मॉडल | निर्माण | DomComponents |
| ब्लॉक | निर्माण | Block Manager |
| शैली नियंत्रण | निर्माण | Style Manager |
| उत्तरदायी संपादन | निर्माण | Device Manager |
| संपत्ति | निर्माण | Asset Manager |
| पूर्ववत करें / फिर से करें | निर्माण | Commands और इतिहास |
| भंडार | निर्माण | Storage Manager |
| HTML आउटपुट | निर्माण | editor.getHtml() |
| CSS आउटपुट | निर्माण | editor.getCss() |
| कस्टम घटक | निर्माण | DomComponents.addType |
| Plugin वास्तुकला | निर्माण | मौजूदा प्लगइन API |
| प्रमाणीकरण और अनुमतियाँ | निर्माण | आपका आवेदन |
| स्वच्छता | निर्माण | आपका आवेदन |
| प्रकाशन-व्यवसाय | निर्माण | आपका आवेदन |
अंतिम तीन पंक्तियाँ ईमानदार हैं। संपादक को एम्बेड करने के बारे में कुछ भी आपकी जिम्मेदारी को हटा नहीं देता है कि कौन क्या संपादित कर सकता है, क्या संग्रहीत हो सकता है, और क्या जनता तक पहुंचता है।
संपादक आपके उत्पाद की एक परत है - उत्पाद ही नहीं। आपका एप्लिकेशन उपयोगकर्ताओं, अनुमतियों, डेटा और लाइव होने के बारे में निर्णय रखता है।
आपका आवेदन
आप सतह के मालिक हैं
दृढ़ता
आपका API
डाटा
आपका डेटाबेस
वितरण
आपका प्रकाशन
पांच प्रबंधक अधिकांश काम करते हैं। आप शुरू करने के एक घंटे के भीतर उनसे मिलेंगे, इसलिए यह जानने लायक है कि प्रत्येक किसके लिए जिम्मेदार है।
HTML तत्वों को संपादन योग्य घटकों के रूप में दर्शाया गया है, उनके अपने नियमों के साथ कि उनमें क्या है, क्या उन्हें खींचा जा सकता है और वे किन गुणों को उजागर करते हैं।
पैलेट। Blocks वे हैं जो उपयोगकर्ता खींचते हैं; हर एक उस घटक का नाम देता है जो वह बन जाता है। कोर एक खाली पैलेट भेजता है, इसलिए वहां जो दिखाई देता है वह पूरी तरह से आपका निर्णय है।
दृश्य CSS संपत्ति नियंत्रण, सेक्टरों में समूहीकृत - सामान्य, फ्लेक्स, आयाम, टाइपोग्राफी, सजावट और डिफ़ॉल्ट रूप से अतिरिक्त। सेक्टर और गुण कॉन्फ़िगर करने योग्य हैं।
स्थानीय भंडारण, एक दूरस्थ समापन बिंदु, या एक संग्रहण एडाप्टर जो आप स्वयं लिखते हैं, के लिए प्रोजेक्ट स्थिति बनी रहती है। ऑटोसेव एक कॉन्फ़िगरेशन ध्वज है।
छवियाँ और मीडिया: पिकर उपयोगकर्ता देखते हैं और उसके पीछे अपलोड पथ, जिसे आप अपने स्वयं के समापन बिंदु या प्रदाता प्लगइन पर इंगित करते हैं।
यह वह जगह है जहां एक HTML बिल्डर सामान्य होना बंद कर देता है। एक घटक प्रकार को परिभाषित करें, तय करें कि यह क्या प्रस्तुत करता है, और केवल उन गुणों को उजागर करें जिन्हें उपयोगकर्ताओं को नियंत्रित करना चाहिए - बाकी मार्कअप ठीक वैसा ही रहता है जैसा आपके इंजीनियरों ने लिखा था।
// A block is what the user drags out of the panel.
editor.BlockManager.add('hero', {
label: 'Hero',
category: 'Sections',
content: { type: 'hero' },
});
// A component type is what that block becomes on the canvas — and the
// only place you decide what the user may change about it.
editor.DomComponents.addType('hero', {
model: {
defaults: {
tagName: 'section',
attributes: { class: 'hero' },
components: '<h1 class="hero__title">Build faster</h1>',
// Traits become the fields in the settings panel.
traits: [{ type: 'text', name: 'headline', label: 'Headline' }],
droppable: false,
},
},
});अधिकांश ट्यूटोरियल में चार चीजें एक नाम साझा करती हैं और वास्तव में अलग होती हैं। उन्हें अलग रखना एक बिल्डर के बीच का अंतर है जिसे आप बनाए रख सकते हैं और HTML स्ट्रिंग्स का ढेर है।
Block
एक पैलेट प्रविष्टि: एक लेबल, एक श्रेणी और वह सामग्री जो इसे सम्मिलित करती है। विशुद्ध रूप से एक प्रारंभिक बिंदु - ड्रॉप के बाद इसका कोई जीवन नहीं है।
घटक
DomComponents के साथ पंजीकृत प्रकार। यह टैग, डिफ़ॉल्ट बच्चों को तय करता है, क्या चीज़ droppable है, और तब से संपादक इसके साथ कैसा व्यवहार करता है।
लक्षण
सेटिंग पैनल में फ़ील्ड। एक विशेषता एक अन्यथा सील किए गए घटक में एक जानबूझकर छेद है - एक शीर्षक, एक लिंक लक्ष्य, एक योजना आईडी।
मार्कअप
घटक को वापस HTML पर क्रमबद्ध किया गया है, आपके द्वारा परिभाषित कक्षाओं और विशेषताओं के साथ, जो कुछ भी आपका बैकएंड आगे करता है उसके लिए तैयार है।
इस श्रृंखला को जानबूझकर डिज़ाइन करें और गैर-तकनीकी उपयोगकर्ताओं को आपके द्वारा चुनी गई सीमाओं के अंदर वास्तविक स्वतंत्रता मिलती है। इसे छोड़ें और आपने एक टेक्स्ट एडिटर भेज दिया है जो divs का उत्सर्जन करता है।
ये वे अनुभाग प्रकार हैं जिनकी लगभग हर बिल्डर को पहले दिन आवश्यकता होती है, जिसका वर्णन उनके द्वारा उत्सर्जित मार्कअप द्वारा किया जाता है, न कि वे कैसे दिखते हैं। उन्हें Block Manager API के विरुद्ध बनाएं, या एक ब्लॉक प्लगइन स्थापित करें और एक पूर्ण पैलेट से शुरू करें।
एक शीर्षक के साथ एक अनुभाग, एक सहायक पैराग्राफ और एक बटन के रूप में स्टाइल किया गया एक लिंक।
लोगो तत्व के साथ एक हेडर और एक नेविगेशन सूची जो संकीर्ण चौड़ाई पर ढह जाती है।
दोहराए गए कार्ड का एक कंटेनर, प्रत्येक में एक आइकन slot, एक शीर्षक और बॉडी कॉपी होती है।
मूल्य तत्व, सुविधा सूची और कॉल-टू-एक्शन लिंक के साथ कार्ड की योजना बनाएं।
एक उद्धरण और एक वैकल्पिक अवतार छवि के साथ ब्लॉककोट तत्व।
एक छवि ग्रिड जिसके स्रोत Asset Manager से भरे जाते हैं।
एक शीर्षक और एक प्राथमिक लिंक के साथ एक एकल केंद्रित खंड।
लेबल किए गए इनपुट के साथ एक प्रपत्र तत्व और एक क्रिया जिसे आप जहां चाहें इंगित करते हैं।
किसी पाद लेख तत्व में कॉलम, कानूनी पाठ और द्वितीयक नेविगेशन को लिंक करें.
सटीक होने के लायक: ये ब्लॉक प्रकारों के उदाहरण हैं, न कि GrapesJS में निर्मित चीजों की सूची। कोर उद्देश्य पर एक खाली Block Manager से शुरू होता है - जो पैलेट आपके उपयोगकर्ताओं को मिलता है, वह आपके द्वारा किया गया निर्णय है, या तो ब्लॉक लिखकर या इस पृष्ठ के नीचे ब्लॉक प्लगइन्स में से एक को स्थापित करके।
एक ही संपादन कोर, छह अलग-अलग समस्याओं की ओर इशारा करता है। इनमें से प्रत्येक को एक अलग कारण से HTML-स्तरीय नियंत्रण की आवश्यकता होती है।
उपयोगकर्ताओं को उन पृष्ठों को संपादित करने का एक विज़ुअल तरीका दें जो पहले से ही HTML के रूप में मौजूद हैं। क्योंकि संपादक राउंड-ट्रिप मार्कअप करता है, आप अपने वर्तमान पृष्ठों को किसी के मालिकाना प्रारूप में माइग्रेट करने के बजाय उनका विस्तार कर रहे हैं।
WYSIWYG पेज बिल्डरविपणक को आपकी टीम द्वारा डिज़ाइन किए गए ब्लॉकों से अभियान पृष्ठों को इकट्ठा करने दें, उन कक्षाओं और संरचना के साथ जो आपकी डिज़ाइन प्रणाली अभी भी आउटपुट में बरकरार है।
लैंडिंग पेज बिल्डरविज़ुअल संपादन को अपने उत्पाद की एक विशेषता के रूप में एम्बेड करें. ग्राहक आपके ऐप के अंदर, आपके डोमेन पर, आपके डेटाबेस में संग्रहीत पेज बनाते हैं.
SaaS पेज बिल्डरसामग्री प्लेटफ़ॉर्म को बदले बिना उसमें एक दृश्य परत जोड़ें। संपादक HTML CMS का उत्पादन करता है जो पहले से ही जानता है कि कैसे स्टोर और रेंडर करना है।
हेडलेस CMS संपादकईमेल HTML इसका अपना अनुशासन है - टेबल, इनलाइन शैलियाँ, क्लाइंट विचित्रताएँ। GrapesJS इसे वेब-पेज पथ के बजाय MJML और न्यूज़लेटर प्रीसेट के माध्यम से संभालता है।
React ईमेल बिल्डरसंपादक को अपने स्वयं के प्रमाणीकरण और नेविगेशन के पीछे, किसी मौजूदा डैशबोर्ड के अंदर भेजें, जिसमें किसी तृतीय-पक्ष साइट पर कोई रीडायरेक्ट न हो.
एम्बेड करने योग्य पेज बिल्डरअलग-अलग टीमें अलग-अलग कारणों से यहां पहुंचती हैं, लेकिन आवश्यकता एक ही है: दृश्य संपादन जिससे उन्हें मार्कअप पर नियंत्रण नहीं लगता है।
किसी प्लेटफ़ॉर्म को अपनाए बिना या किसी और के रनटाइम के आसपास फ्रंट एंड को फिर से लिखे बिना, पहले से मौजूद एप्लिकेशन में विज़ुअल एडिटिंग जोड़ें।
पृष्ठ निर्माण को एक ऐसी सुविधा में बदलें जिसके लिए ग्राहक भुगतान करते हैं, जिसमें संपादक आपके डोमेन पर रहता है और डेटा आपके डेटाबेस में रहता है.
नीचे CMS को बदले बिना सामग्री टीमों को दृश्य संपादन दें, क्योंकि जो सामने आता है वह HTML सिस्टम पहले से ही संभालता है।
अपने स्वयं के ब्लॉक और घटकों के साथ एक पृष्ठ-संपादन प्रणाली बनाएं, फिर प्रति सगाई के पुनर्निर्माण के बजाय क्लाइंट परियोजनाओं में इसका पुनः उपयोग करें।
उपयोगकर्ताओं को लैंडिंग पृष्ठों को दृश्य रूप से लिखने दें, जबकि आपका प्लेटफ़ॉर्म टेम्प्लेट, ट्रैकिंग और प्रकाशन पाइपलाइन को सुसंगत रखता है।
आपको उपयोगकर्ताओं को उनके पृष्ठों को संपादित करने के लिए किसी अन्य वेबसाइट पर भेजने की आवश्यकता नहीं है। संपादक को अपने स्वयं के एप्लिकेशन के अंदर माउंट करें और अपना मौजूदा प्रमाणीकरण, नेविगेशन और बैकएंड रखें।
संपादक कहाँ बैठता है
व्यवहार में यह आपके ऐप में एक मार्ग है जो एक कंटेनर को प्रस्तुत करता है और इसके खिलाफ संपादक को इनिशियलाइज़ करता है। उपयोगकर्ता आपके डोमेन को कभी नहीं छोड़ता है, सत्र वह है जो उनके पास पहले से है, और प्रोजेक्ट आपके द्वारा लिखे गए एंडपॉइंट के माध्यम से लोड और सहेजता है।
Storage Manager को अपने API पर इंगित करें और प्रत्येक पृष्ठ आपके डेटाबेस में आपके स्वयं के प्रमाणीकरण के पीछे एक पंक्ति बन जाता है। GrapesJS कुछ भी होस्ट नहीं करता है, और न ही GJS.Market - कोई भी उपयोगकर्ता सामग्री कभी भी हम तक नहीं पहुंचती है।
स्टोर करने के लिए दो चीजें, एक नहीं
const editor = grapesjs.init({
container: '#editor',
// Editor state goes to your API, behind your own authentication.
storageManager: {
type: 'remote',
autosave: true,
options: {
remote: {
urlStore: `/api/pages/${pageId}`,
urlLoad: `/api/pages/${pageId}`,
fetchOptions: { credentials: 'include' },
},
},
},
});अंतर को तेज रखें। संपादक राज्य वह है जो संपादक को आगे के संपादन के लिए एक पृष्ठ को फिर से खोलने की आवश्यकता होती है। प्रकाशित आउटपुट वह HTML है और CSS जो एक आगंतुक को प्राप्त होता है। उनके पास अलग-अलग जीवनचक्र, अलग-अलग पहुंच नियम और आमतौर पर अलग-अलग टेबल होते हैं - और एक प्लगइन वायरिंग में मदद कर सकता है, लेकिन आर्किटेक्चर आपका है।
संपादित करें
उपयोगकर्ता कैनवास पर काम करता है। अभी तक कुछ भी सार्वजनिक नहीं है; संपादक केवल परियोजना की स्थिति को छू रहा है।
ड्राफ़्ट सेव करना
ऑटोसेव या एक स्पष्ट सेव आपके अनुमति नियमों के तहत, आपके संग्रहण समापन बिंदु के माध्यम से स्थिति को लिखता है।
पूर्वसमीक्षा
वर्तमान HTML और CSS को पूर्वावलोकन मार्ग पर प्रस्तुत करें ताकि लेखक वास्तविक पृष्ठ देखे, कैनवास को नहीं।
स्वीकृत करें
यदि आपके उत्पाद की समीक्षा की आवश्यकता है, तो यह आपका वर्कफ़्लो है - संपादक के पास इस बारे में कोई राय नहीं है कि कौन हस्ताक्षर कर सकता है।
प्रकाशित करना
getHtml() और getCss(), sanitize लें, अपने लेआउट में लपेटें, परिणाम को संस्करण करें और जहां भी आप पृष्ठों की सेवा करते हैं, इसे लिखें।
लाइव HTML
प्रकाशित पृष्ठ आपके बुनियादी ढांचे पर सादा HTML और CSS है। किसी विज़िटर को इसे देखने के लिए किसी संपादक रनटाइम की आवश्यकता नहीं है।
यह होस्ट किए गए पेज बिल्डर से सबसे स्पष्ट अंतर है। कोई विक्रेता यह तय नहीं कर रहा है कि आपका पेज कब लाइव होता है, इसे किस डोमेन पर परोसा जाता है, या यदि आप भुगतान करना बंद कर देते हैं तो इसका क्या होता है।
Device Manager कैनवास को चौड़ाई के बीच स्विच करता है, और डिवाइस के सक्रिय होने पर सेट की गई शैलियों को आधार नियम को अधिलेखित करने के बजाय उस चौड़ाई तक सीमित मीडिया क्वेरी के रूप में लिखा जाता है। GrapesJS डेस्कटॉप, टैबलेट, मोबाइल लैंडस्केप और मोबाइल पोर्ट्रेट के साथ जहाज; सूची और इसकी चौड़ाई कॉन्फ़िगरेशन हैं, एक निश्चित सेट नहीं।
उपयोगकर्ता प्रति ब्रेकपॉइंट क्या बदल सकते हैं
दिखाई गई चौड़ाई GrapesJS डिफ़ॉल्ट हैं। स्पष्ट रूप से कहने लायक: संपादक CSS नियमों को परिभाषित करता है - एक प्रकाशित पृष्ठ अंततः कैसे प्रस्तुत करता है, यह अभी भी आपके द्वारा शिप किए गए मार्कअप और स्टाइलशीट और उन्हें पढ़ने वाले ब्राउज़र पर निर्भर करता है।
नीचे दी गई हर चीज़ GJS.Market पर एक वास्तविक सूची है, जिसमें नाम, मूल्य और थंबनेल कैटलॉग से लाइव प्रस्तुत किया गया है। जिस तरह से यह पृष्ठ समस्या के बारे में सोचता है, उसे समूहीकृत किया गया है: पहले कोड और आउटपुट, फिर उनके आसपास के पैनल।
उपयोगकर्ताओं को - या आपके अपने डेवलपर्स - संपादक को छोड़े बिना एक घटक के पीछे मार्कअप और शैलियों को पढ़ने और संपादित करने दें।
इस श्रेणी को ब्राउज़ करेंप्रत्यक्ष संपादन के लिए चयनित घटक के HTML और CSS को खोलता है - एक संशयवादी डेवलपर के लिए दृश्य/कोड संबंध को स्पष्ट करने का सबसे तेज़ तरीका।
उन उपयोगकर्ताओं के लिए बिल्डर के अंदर एक कोड संपादन सतह जो एक अनुभाग के लिए मार्कअप करना चाहते हैं और हर जगह दृश्य रहना चाहते हैं।
HTML और CSS को बाहर निकालें: डाउनलोड करने योग्य बंडल के रूप में, सर्वर-साइड को परिवर्तित करें, या सीधे होस्ट पर धकेल दें।
इस श्रेणी को ब्राउज़ करेंएक स्थिर साइट को सौंपने के लिए, परियोजना के HTML, CSS और संपत्ति को डाउनलोड करने योग्य संग्रह में पैकेज करता है।
सर्वर पर संग्रहीत प्रोजेक्ट JSON को HTML और CSS में कनवर्ट करता है, इसलिए प्रकाशन के लिए ब्राउज़र सत्र की आवश्यकता नहीं होती है।
जेनरेट किए गए आउटपुट को सीधे संपादक से होस्ट पर पुश करता है, उन उत्पादों के लिए जो एक-क्लिक प्रकाशन चाहते हैं।
तैयार पैलेट, इसलिए खाली Block Manager एक खाली पैनल के बजाय वर्गों से भरा होता है।
इस श्रेणी को ब्राउज़ करेंसामान्य संरचनात्मक ब्लॉकों का एक प्रारंभिक पैलेट, इसलिए एक दिन Block Manager कॉल लिखने में खर्च नहीं किया जाता है।
ब्लॉक जो Tailwind उपयोगिता वर्गों का उत्सर्जन करते हैं, उन टीमों के लिए जिनके आउटपुट को मौजूदा Tailwind डिज़ाइन सिस्टम से मेल खाना है।
बेहतर CSS संपादन: टाइप करते समय कक्षा सुझाव, समृद्ध रंग और ढाल बीनने वाले।
इस श्रेणी को ब्राउज़ करेंCSS में टाइप करते समय मौजूदा Selector Manager कक्षाओं का सुझाव देता है, जो उत्पन्न मार्कअप को फैलाने के बजाय लगातार बनाए रखता है।
Style Manager के लिए एक ढाल बीनने वाला, एक मामले को कवर करता है जो डिफ़ॉल्ट रंग नियंत्रण नहीं करता है।
पुनः प्रयोज्य, सिंक्रनाइज़ किए गए तत्व और अपने स्वयं के मार्कअप को एक संपादक घटक में बदलने के लिए टूलींग।
इस श्रेणी को ब्राउज़ करेंइनलाइन टेक्स्ट एडिटर का विस्तार करें ताकि सामग्री संपादन कोड फ़ील्ड के बजाय एक दस्तावेज़ की तरह लगे।
इस श्रेणी को ब्राउज़ करेंAsset Manager को वास्तविक भंडारण से कनेक्ट करें ताकि छवियों को रहने के लिए कहीं न कहीं रखा जाए।
इस श्रेणी को ब्राउज़ करेंउन टीमों के लिए दृढ़ता एडेप्टर जो एक लिखने के बजाय बैकएंड को कॉन्फ़िगर करना पसंद करेंगे।
इस श्रेणी को ब्राउज़ करेंएक तैयार रिमोट स्टोरेज एडाप्टर, प्रोटोटाइप और उत्पादों के लिए पहले से ही Firebase पर।
प्रोजेक्ट की स्थिति को ब्राउज़र में रखता है - ऑफ़लाइन ड्राफ्ट के लिए और डेमो के लिए उपयोगी है जिसमें कोई बैकएंड नहीं है।
पूर्व-कॉन्फ़िगर सेटअप और टेम्पलेट प्रबंधन, एक खाली के बजाय एक कार्यशील संपादक से शुरू करने के लिए।
इस श्रेणी को ब्राउज़ करेंएक कॉन्फ़िगर किया गया वेब-पेज संपादन सेटअप, एक नंगे इनिट कॉल की तुलना में एक कार्यशील बिल्डर के करीब।
उन उत्पादों के लिए टेम्पलेट प्रबंधन जहां उपयोगकर्ता किसी रिक्त कैनवास के बजाय चुने हुए लेआउट से प्रारंभ करते हैं.
तीन शुरुआती कॉन्फ़िगरेशन, केवल उन लिस्टिंग से इकट्ठे किए गए हैं जो वास्तव में मौजूद हैं। उन्हें अनुकूलित करने के लिए एक आकार के रूप में मानें, खरीदने के लिए बंडल नहीं।
उन डेवलपर्स के लिए जिन्हें एक साधारण विज़ुअल एडिटर की आवश्यकता है और इससे अधिक कुछ नहीं
WYSIWYG गाइड देखेंबहु-पृष्ठ साइटों के लिए उनके पीछे एक वास्तविक डिजाइन प्रणाली है
लैंडिंग पेज गाइड देखेंअपने स्वयं के उत्पाद के अंदर ग्राहक-सामना करने वाले संपादन के लिए
कीमतें कैटलॉग से लाइव प्रस्तुत करती हैं।
ये एक ही नौकरी के लिए प्रतिस्पर्धा करने वाले चार उत्पाद नहीं हैं - वे चार अलग-अलग ट्रेड हैं। तालिका का उद्देश्य व्यापार को स्पष्ट करना है, विजेता घोषित करना नहीं।
| विचार | GrapesJS | ड्रैग-एंड-ड्रॉप लाइब्रेरी | होस्ट किया गया पेज बिल्डर | खरोंच से निर्माण करें |
|---|---|---|---|---|
| दृश्य संपादक शामिल है | हाँ | आंशिक - केवल इशारा | हाँ | आप जो कुछ भी बनाते हैं |
| HTML और CSS पर नियंत्रण | उच्च - आउटपुट पोस्ट-प्रोसेस के लिए आपका है | उच्च - आप मार्कअप लिखते हैं | विक्रेता द्वारा भिन्न होता है | कुल |
| स्व-होस्टेड | हाँ | हाँ | आमतौर पर नहीं | हाँ |
| आपके ऐप में एम्बेड करने योग्य | हाँ | हाँ | विक्रेता पर निर्भर करता है | हाँ |
| Component मॉडल और traits | में निर्मित | आप इसे लिखें | विक्रेता का मॉडल | आप इसे लिखें |
| शैली नियंत्रण और ब्रेकप्वाइंट | में निर्मित | आप उन्हें लिखें | में निर्मित | आप उन्हें लिखें |
| एक कार्यशील संपादक के लिए समय | दिन | महीने | मिनट | महीनों से साल |
| उत्पाद अनुकूलन | उच्च | उच्च | विक्रेता द्वारा बाध्य | असीमित |
| चल रहा रखरखाव | आपका एकीकरण, साथ ही एक अपस्ट्रीम कोर | सभी संपादक | विक्रेता का | यह सब, हमेशा के लिए |
| लाइसेंस और लागत | BSD-3-Clause कोर, $0 उपयोग करने के लिए | आमतौर पर अनुमेय | अंशदान | इंजीनियरिंग समय |
GrapesJS कोर (BSD-3-Clause, v0.23.6) के विरुद्ध 2026-09-03 के विरुद्ध सत्यापित। होस्टेड-बिल्डर पंक्तियाँ जानबूझकर अस्पष्ट हैं क्योंकि उनकी क्षमताएं प्रति विक्रेता भिन्न होती हैं और अक्सर बदलती रहती हैं - श्रेणी-स्तरीय दावे पर भरोसा करने के बजाय उस विशिष्ट उत्पाद की जाँच करें जिस पर आप विचार कर रहे हैं।
यह इस क्षेत्र में सबसे महंगा गलत निर्णय है। एक टीम एक सॉर्टेबल-लिस्ट लाइब्रेरी चुनती है, एक सप्ताह में एक डेमो शिप करती है, और फिर एक साल बिताती है यह पता लगाने में कि क्या गायब था।
एक बॉक्स को एक स्थान से दूसरे स्थान पर ले जाने के लिए आवश्यक सब कुछ, और इससे आगे कुछ भी नहीं। वास्तव में उपयोगी - एक सूची को फिर से व्यवस्थित करने के लिए।
राज्य जो उन इशारों में से हर एक में बना रहता है, और एक सीरियलाइज़र जो इसे वापस मार्कअप में बदल सकता है एक ब्राउज़र प्रस्तुत करेगा।
खींचें और छोड़ें एक इंटरैक्शन है। एक पेज बिल्डर एक संपूर्ण संपादन प्रणाली है।
एक पैकेज, एक कंटेनर, एक इनिट कॉल। इस पृष्ठ पर सब कुछ इन कुछ पंक्तियों से बढ़ता है।
npm install grapesjsimport grapesjs from 'grapesjs';
import 'grapesjs/dist/css/grapes.min.css';
// Mount the editor on any container in your own application.
const editor = grapesjs.init({
container: '#editor',
height: '100vh',
// Core ships no blocks: you decide what users are allowed to drag.
blockManager: { blocks: [] },
});संपादक अब चलता है लेकिन उसके पास एक खाली पैलेट है - कोर जानबूझकर कोई ब्लॉक नहीं भेजता है। पहले वाले को पंजीकृत करें, और घटक प्रकार यह बन जाता है:
// A block is what the user drags out of the panel.
editor.BlockManager.add('hero', {
label: 'Hero',
category: 'Sections',
content: { type: 'hero' },
});
// A component type is what that block becomes on the canvas — and the
// only place you decide what the user may change about it.
editor.DomComponents.addType('hero', {
model: {
defaults: {
tagName: 'section',
attributes: { class: 'hero' },
components: '<h1 class="hero__title">Build faster</h1>',
// Traits become the fields in the settings panel.
traits: [{ type: 'text', name: 'headline', label: 'Headline' }],
droppable: false,
},
},
});यहां से काम उत्पाद का काम है: आपके उपयोगकर्ताओं को कौन सा ब्लॉक मिलता है, उन्हें क्या बदलने की अनुमति है, और आपका बैकएंड बाहर आने वाले मार्कअप के साथ क्या करता है।
यह पृष्ठ HTML-स्तरीय संपादन और आउटपुट को कवर करता है। पड़ोसी गाइड उसी कोर को अन्य कोणों से लेते हैं।
ड्रैग-एंड-ड्रॉप पेज बिल्डर बनाने के लिए व्यापक मार्गदर्शिका: हावभाव, ब्लॉक, टेम्पलेट और उनके आसपास के उत्पाद निर्णय।
गाइड पढ़ेंओपन-सोर्स पेज बिल्डर का मूल्यांकन कैसे करें - लाइसेंसिंग, शासन, एक्स्टेंसिबिलिटी और सेल्फ-होस्टिंग वास्तव में आपको क्या करती है।
विकल्पों की तुलना करेंReact एप्लिकेशन के अंदर एक पेज बिल्डर का निर्माण, और जहां एक React-घटक मॉडल और एक HTML-घटक मॉडल अलग हो जाता है।
गाइड पढ़ेंआधिकारिक React रैपर: संपादक को एक घटक के रूप में माउंट करना, उसके जीवनचक्र का प्रबंधन करना और इसे React के रेंडर लूप से बाहर रखना।
एकीकरण देखेंGrapesJS से शुरू करें, उपयोगकर्ताओं को एक दृश्य HTML संपादन अनुभव दें और अपने एप्लिकेशन, डेटा और प्रकाशन वर्कफ़्लो पर नियंत्रण रखें।
एक npm पैकेज और एक इनिट कॉल। अपनी कॉफी खत्म करने से पहले आपके पास एक काम करने वाला कैनवास होगा।
GrapesJS आज़माएंब्लॉक पैलेट, कोड दृश्य, शैली नियंत्रण, भंडारण एडेप्टर और निर्यात टूलींग - वास्तविक लिस्टिंग, वास्तविक कीमतें।
GJS.Market प्लगइन्स ब्राउज़ करेंघटक, ब्लॉक, शैलियाँ, भंडारण और प्लगइन API, सीधे अपस्ट्रीम प्रोजेक्ट से।
बिल्डर गाइड पढ़ेंखींचना। औषधि। HTML संपादित करें। आउटपुट के मालिक बनें।