React
संपादक आपके पेड़ में एक घटक के रूप में माउंट होता है। आपका राउटर, आपके प्रदाता और आपका प्रमाणीकरण संदर्भ अभी भी इसे लपेटते हैं, और इसकी स्थिति किसी भी अन्य घटक की तरह React में वापस प्रवाहित होती है।
अपने React या Next.js एप्लिकेशन में एक अनुकूलन योग्य विज़ुअल ईमेल संपादक एम्बेड करें। अपने उपयोगकर्ताओं को पुनः प्रयोज्य ब्लॉक, कस्टम घटकों और MJML या HTML निर्यात के साथ उत्तरदायी ईमेल टेम्पलेट बनाने दें - जबकि आपका उत्पाद अपने स्वयं के उपयोगकर्ताओं, डेटा और भेजने के बुनियादी ढांचे को रखता है।
26k+
संपादक कोर पर GitHub सितारे
1.4M+
npm एक महीने में डाउनलोड
100+
प्लगइन्स और प्रीसेट GJS.Market पर
BSD-3-Clause
संपादक कोर का लाइसेंस
एक होस्ट किया गया संपादक नहीं जिसे आप किराए पर लेते हैं, और टेम्पलेट गैलरी नहीं। एक संपादन परत जिसे आप पहले से चलाते हैं उस एप्लिकेशन के अंदर माउंट करते हैं।
संपादक आपके पेड़ में एक घटक के रूप में माउंट होता है। आपका राउटर, आपके प्रदाता और आपका प्रमाणीकरण संदर्भ अभी भी इसे लपेटते हैं, और इसकी स्थिति किसी भी अन्य घटक की तरह React में वापस प्रवाहित होती है।
आपके उपयोगकर्ता किसी डेवलपर को लेआउट का वर्णन करने या हाथ से टेबल मार्कअप से लड़ने के बजाय, ब्लॉक चुनकर और टेक्स्ट को संपादित करके ईमेल असेंबल करते हैं।
Components, ब्लॉक, पैनल और कमांड सभी परिभाषित करने के लिए आपके हैं। संपादन अनुभव के वे हिस्से जो आपके उत्पाद के लिए विशिष्ट हैं, आपके द्वारा लिखे जा सकते हैं।
टेम्प्लेट आपके अपने API के माध्यम से आपके अपने डेटाबेस में सहेजे जाते हैं, और जिस भी प्रदाता के लिए आप पहले से भुगतान करते हैं, उसके द्वारा भेजे जाते हैं। यहां कुछ भी रनटाइम पर संपादक सेवा नहीं कहता है।
यह कैनवास इस पृष्ठ पर चलने वाला एक React घटक है - कोई संपादक बंडल नहीं, कोई iframe नहीं। कोई ब्लॉक जोड़ें, उसे चुनने के लिए किसी भी अनुभाग पर क्लिक करें, टेक्स्ट को उस स्थान पर फिर से टाइप करें, इसे फिर से स्टाइल करें, इसे पुनः व्यवस्थित करें, और डेस्कटॉप, टैबलेट और मोबाइल के बीच पूर्वावलोकन को स्विच करें। यह देखने के लिए HTML टैब खोलें कि ईमेल बिल्डर आपके कोड पर किस प्रकार का मार्कअप देता है।
ब्लॉक
ईमेल में एक अनुभाग जोड़ें।
किसी अनुभाग का चयन करने के लिए उस पर क्लिक करें, फिर उसे संपादित करें या उसे फिर से स्टाइल करें
संग्रह
कुछ भी नहीं चुना गया
कैनवास में किसी अनुभाग पर क्लिक करें या ब्लॉक पैनल से एक अनुभाग जोड़ें.
जब तक आप इसके लिए नहीं पूछते तब तक लोड से नीचे कुछ भी नहीं होता है: इस पृष्ठ के iframe में कोई HTML नहीं है, और एक समय में केवल एक डेमो लगाया जाता है। ये उनके लेखकों द्वारा होस्ट किए गए सार्वजनिक डेमो हैं।
न्यूज़लेटर प्रीसेट: ईमेल-सुरक्षित ब्लॉक, एक प्रतिबंधित स्टाइल मैनेजर और टेबल-आधारित आउटपुट। यह आपके उपयोगकर्ताओं को जो दिखाई देगा उसके सबसे करीब है।
एक React ईमेल बिल्डर एक विज़ुअल एडिटर है जो React एप्लिकेशन के अंदर चलता है और उपयोगकर्ताओं को हाथ से HTML ईमेल मार्कअप लिखे बिना ईमेल टेम्पलेट बनाने और अनुकूलित करने देता है। यह एक अलग उत्पाद नहीं है जिसमें आपके उपयोगकर्ता लॉग इन करते हैं: यह आपके ऐप में एक घटक है, इसलिए टेम्प्लेट, उनके मालिक खाते और उन्हें भेजने वाला बुनियादी ढांचा सभी आपके पक्ष में रहते हैं।
इससे क्या गुजरता है
संपादक का काम मार्कअप बनाने पर समाप्त होता है। इससे पहले और बाद में सब कुछ आपका आवेदन है।
इनमें से प्रत्येक में, विकल्प यह है कि एक डेवलपर हर बार जब व्यवसाय में कोई बदलाव चाहता है तो हाथ से एक टेम्पलेट संपादित करता है।
ग्राहकों को अपने स्वयं के लेन-देन और जीवनचक्र ईमेल को आपके उत्पाद के अंदर, अपनी योजना पर, बिना समर्थन टिकट के डिजाइन करने दें।
बिक्री और सफलता टीमों को ग्राहक संचार को स्वयं आकार देने का एक तरीका दें, फ़ील्ड और मर्ज टैग के साथ जो आपके CRM पहले से ही उजागर करते हैं।
एक बार पुनः प्रयोज्य टेम्पलेट बनाएं और उन्हें प्रत्येक स्वचालित वर्कफ़्लो से संदर्भित करें, बजाय इसके कि प्रत्येक अभियान चरण में मार्कअप को डुप्लिकेट करें.
किसी मुद्दे की रचना को HTML कार्य के बजाय एक डिज़ाइन कार्य बनाएं, और प्रत्येक प्रकाशन को अपना रूप बनाए रखने दें।
उन ब्लॉकों से प्रचार भेजने और ऑर्डर से संबंधित ईमेल इकट्ठा करें जो पहले से ही जानते हैं कि किसी उत्पाद, मूल्य और कॉल टू एक्शन को कैसे प्रस्तुत किया जाए।
गैर-तकनीकी टीमों को आंतरिक व्यवस्थापक सतह में ईमेल सामग्री का मालिक होने दें, जबकि डेवलपर्स घटकों और रेलिंग को रखते हैं।
यह संपादन नींव है, तैयार उत्पाद नहीं। वह अंतर बिंदु है: नीचे दी गई हर चीज एक हुक है जिसे आप एक ऐसी सुविधा के बजाय बनाते हैं जिसे आप स्वीकार करते हैं।
चयन के साथ एक पूर्ण संपादन कैनवास, एक घटक वृक्ष और एक स्टाइल मैनेजर - वे हिस्से जिन्हें लिखने में सबसे अधिक समय लगता है और सही होना सबसे कठिन होता है।
घटक प्रकारों को उनके स्वयं के traits और अपने स्वयं के मार्कअप के साथ परिभाषित करें, ताकि संपादक आपके एप्लिकेशन के पास पहले से मौजूद वस्तुओं को समझ सके।
अपने स्वयं के ब्लॉक को अपनी श्रेणियों के तहत पंजीकृत करें और वे किसी भी अंतर्निहित की तरह ब्लॉक पैनल में दिखाई देते हैं।
डिवाइस की चौड़ाई को कॉन्फ़िगर करें जिसके बीच उपयोगकर्ता संपादन करते समय स्विच कर सकते हैं, और कैनवास को छोड़े बिना प्रत्येक का पूर्वावलोकन कर सकते हैं।
भंडारण प्रबंधक को अपने स्वयं के समापन बिंदुओं पर इंगित करें। लोडिंग और सेविंग आपके API के खिलाफ सामान्य अनुरोध बन जाते हैं।
ईमेल प्रीसेट, ब्लॉक पैक, एसेट मैनेजर और स्टोरेज एडेप्टर पहले से मौजूद हैं, इसलिए आप हर परत को स्वयं लागू नहीं कर रहे हैं।
पैनल, बटन और कमांड कॉन्फ़िगर करने योग्य हैं, और आप इसके बजाय अपने स्वयं के React इंटरफ़ेस से हेडलेस इंस्टेंस चला सकते हैं।
पैकेज npm से स्थापित होते हैं और आपके बंडल में शिप होते हैं। रनटाइम पर कॉल करने के लिए कोई संपादक सेवा नहीं है और कोई प्रति-सीट संपादक खाता नहीं है।
GrapesJS दृश्य संपादन परत प्रदान करता है। आपका React एप्लिकेशन उपयोगकर्ताओं, डेटा, भंडारण और प्रकाशन के नियंत्रण में रहता है - जो कि लोगों को किसी और के पास भेजने के बजाय एक संपादक को एम्बेड करने का पूरा तर्क है।
आपका React आवेदन
संपादक
आपका बैकएंड
किसी और के उत्पाद में एक संपादक को एम्बेड करना प्रश्नों का एक अलग सेट उठाता है।
दोनों रास्ते एक ही स्थान पर समाप्त होते हैं। एकमात्र वास्तविक अंतर यह है कि मॉड्यूल का मूल्यांकन करने की अनुमति है।
React
Vite, सीआरए, Remix ग्राहक मार्ग
@grapesjs/react
प्रकाशित आवरण घटक
GrapesJS
संपादन कैनवास
ईमेल प्रीसेट
ईमेल-सुरक्षित ब्लॉक और शैलियाँ
घटक को प्रस्तुत करें। व्यवस्था करने के लिए और कुछ नहीं है।
GrapesJS React एकीकरणNext.js
पेज या App Router
dynamic(..., { ssr: false })
एक अतिरिक्त पंक्ति
React घटक
आपका संपादक आवरण
GrapesJS
केवल ब्राउज़र
ईमेल प्रीसेट
ईमेल-सुरक्षित ब्लॉक और शैलियाँ
बाकी सब कुछ - API मार्ग, डेटा फ़ेचिंग, प्रमाणीकरण - अपरिवर्तित है।
GrapesJS Next.js एकीकरणSSR सीमा, एक बार
GrapesJS प्रारंभ होने के दौरान विंडो और दस्तावेज़ तक पहुंचता है, इसलिए सर्वर पर इसका मूल्यांकन नहीं किया जा सकता है। Next.js में इसका मतलब है कि अपने संपादक घटक को next/dynamic के माध्यम से ssr: false के साथ आयात करना और इसे एक लोडिंग कंकाल देना। यह संपूर्ण Next.js-विशिष्ट लागत है; संपादक के आसपास का पृष्ठ अभी भी सर्वर-रेंडर किया जा सकता है, और इसका डेटा अभी भी getStaticProps, getServerSideProps या सर्वर घटक से आ सकता है।
तीन पैकेज और एक घटक। इसके बाद सब कुछ - भंडारण, कस्टम ब्लॉक, MJML - पृष्ठ के नीचे और नीचे कवर किया गया है।
npm install grapesjs @grapesjs/react grapesjs-preset-newsletterimport GjsEditor from '@grapesjs/react';
import newsletter from 'grapesjs-preset-newsletter';
import 'grapesjs/dist/css/grapes.min.css';
// A normal React component. The editor is a child of your tree, so your
// router, your auth context and your providers all still wrap it.
export default function EmailBuilder({ template, onSave }) {
return (
<GjsEditor
options={{
height: '100vh',
// Storage is wired to your own API further down this page.
storageManager: false,
plugins: [newsletter],
projectData: template,
}}
onEditor={(editor) => {
// Everything the user builds comes back out as plain data you can
// put straight into React state or POST to your backend.
editor.on('update', () => {
onSave({
html: editor.getHtml(),
css: editor.getCss(),
project: editor.getProjectData(),
});
});
}}
/>
);
}Next.js में, एक गतिशील आयात संपादक को सर्वर रेंडर से बाहर रखता है:
// app/emails/page.tsx (or pages/emails.tsx)
import dynamic from 'next/dynamic';
// GrapesJS reaches for window/document as it initialises, so it can only run
// in the browser. In Next.js that means one dynamic import with ssr: false —
// this is the whole of the Next.js-specific work.
const EmailBuilder = dynamic(() => import('@/components/EmailBuilder'), {
ssr: false,
loading: () => <EditorSkeleton />,
});
export default function EmailsPage({ template }) {
return <EmailBuilder template={template} onSave={saveTemplate} />;
}ऊपर दिए गए संस्करणों को 2026-09-03 पर प्रकाशित पैकेजों के खिलाफ जांचा गया था: grapesjs 0.23.6 BSD-3-Clause है; @grapesjs/react MIT है।
ये संपादक कोर और उसके ईमेल प्रीसेट से आते हैं, न कि किसी भी चीज़ से जो आपको लिखना है।
उपयोगकर्ता ईमेल के चारों ओर अनुभागों को स्थानांतरित करते हैं और ब्लॉक पैनल से नए अनुभागों को छोड़ते हैं।
पाठ, चित्र और बटन संपादित कर रहे हैं जहां वे बैठते हैं, इनलाइन संपादक के साथ एक आप पहले से लाइसेंस के लिए स्वैप करने योग्य है.
पंक्तियाँ, स्तंभ और अनुभाग, आधुनिक लेआउट CSS के बजाय तालिका मार्कअप ईमेल क्लाइंट अपेक्षा से निर्मित हैं।
संपादन करते समय कॉन्फ़िगर किए गए डिवाइस की चौड़ाई के बीच स्विच करें ताकि एक लेआउट को भेजे जाने से पहले संकीर्ण रूप से जांचा जा सके।
Component प्रकार जिन्हें आप परिभाषित करते हैं, उनके अपने traits और अपने स्वयं के प्रस्तुत मार्कअप के साथ।
तैयार अनुभागों का एक पैलेट जिससे आपके उपयोगकर्ता इकट्ठा होते हैं, जिन्हें आपके नाम वाली श्रेणियों में बांटा जाता है।
छवियों के लिए एक परिसंपत्ति प्रबंधक, जो प्लगइन्स आपके स्वयं के भंडारण या आपके द्वारा पहले से उपयोग की जाने वाली मीडिया सेवा पर इंगित कर सकता है।
एक कमांड इतिहास, इसलिए डिज़ाइन के साथ प्रयोग करना एकतरफा दरवाजा नहीं है।
MJML उत्तरदायी ईमेल मार्कअप को हाथ से लिखने योग्य बनाने के लिए मौजूद है। इसके शीर्ष पर एक विज़ुअल बिल्डर का मतलब है कि किसी को ऐसा करना नहीं है। GrapesJS के कोर में MJML शामिल नहीं है - एक प्लगइन संपादक में MJML घटकों को जोड़ता है, इसलिए प्रोजेक्ट सादे MJML के बजाय HTML तक क्रमबद्ध होता है।
संकलन कहां होता है
// pages/api/email/compile.ts
//
// mjml is a Node package — it parses and renders on the server, not in the
// browser. So the editor produces MJML in the client and this route turns it
// into the table-based HTML that email clients actually accept.
import mjml2html from 'mjml';
export default function handler(req, res) {
const { html, errors } = mjml2html(req.body.mjml, {
validationLevel: 'soft',
keepComments: false,
});
// MJML reports what it could not understand rather than failing silently.
if (errors.length) console.warn('[mjml]', errors);
res.status(200).json({ html });
}कंपाइलर एक Node पैकेज है, इसलिए संकलन सर्वर पर है - Next.js में, एक साधारण API मार्ग। रिवर्स दिशा सममित नहीं है: मनमाना HTML सफाई से वापस MJML में परिवर्तित नहीं होता है, इसलिए किसी एक पर निर्माण करने से पहले अपने वर्कफ़्लो को आवश्यक प्रारूप चुनें।
संपादक आपके कोड को तीन अलग-अलग चीजें देता है, और एक React एप्लिकेशन आमतौर पर तीनों को अलग-अलग क्षणों में चाहता है।
editor.getHtml() + getCss()
प्रदान किया गया ईमेल, टेबल-आधारित और इनलाइन-स्टाइल जब एक ईमेल प्रीसेट सक्रिय होता है। यह वही है जो आप एक भेजने वाले प्रदाता को पास करते हैं।
MJML प्लगइन के साथ
स्रोत दस्तावेज़, जब आपका वर्कफ़्लो MJML के आसपास बनाया जाता है। आपके द्वारा वास्तव में भेजा गया HTML प्राप्त करने के लिए इसे सर्वर पर संकलित करें।
editor.getProjectData()
संपादन योग्य परियोजना। इसे स्टोर करें ताकि उपयोगकर्ता महीनों बाद एक टेम्पलेट को फिर से खोल सके और यह ठीक उसी तरह वापस आ जाए जैसे उन्होंने इसे छोड़ा था।
प्रदान किए गए मार्कअप और संपादन योग्य प्रोजेक्ट अलग-अलग जीवनकाल के साथ अलग-अलग कलाकृतियां हैं। JSON स्टोर करें; HTML को पुनः उत्पन्न करें।
यह वह जगह है जहां एक एम्बेडेड बिल्डर एक सामान्य ईमेल टूल से आगे बढ़ता है: ब्लॉक आपके डोमेन के बारे में जान सकते हैं। एक ब्लॉक एक उत्पाद कार्ड की तस्वीर नहीं है - यह उत्पाद को देख सकता है।
आपका आवेदन
ईमेल बिल्डर
यह क्या है, इसके बारे में सटीक होने के लिए: एक मनमाना React घटक को ईमेल घटक में परिवर्तित नहीं किया जाता है। JSX एक DOM ट्री प्रदान करता है, और ईमेल क्लाइंट इसमें से अधिकांश का सम्मान नहीं करेंगे। आप जो लिखते हैं वह एक GrapesJS घटक प्रकार है जिसका toHTML ईमेल-सुरक्षित मार्कअप उत्सर्जित करता है और जिसका traits मैप आपके एप्लिकेशन के रिकॉर्ड पर होता है। वायरिंग आपकी है; संपादक इसे लगाने के लिए जगह की आपूर्ति करता है।
आपके उत्पाद द्वारा वास्तव में भेजे जाने वाले अनुभागों को शिपिंग करके दोहराए जाने वाले डिज़ाइन कार्य को कम करें, न कि आपके उपयोगकर्ताओं को हर बार अनुकूलित करने के लिए एक सामान्य सेट के बजाय।
लोगो, वर्डमार्क और प्रीहेडर टेक्स्ट, आपके ब्रांड दिशानिर्देशों द्वारा निर्दिष्ट लेआउट में लॉक किया गया है।
एक संदेश जो ईमेल वितरित करने के लिए मौजूद है, एक संकीर्ण व्यूपोर्ट से बचने के लिए आकार।
वर्कहॉर्स अनुभाग: इसके नीचे या बगल में एक पैराग्राफ के साथ एक दृश्य।
एक डोमेन ब्लॉक आपके कैटलॉग से जुड़ा हुआ है, न कि किसी व्यक्ति द्वारा भरता प्लेसहोल्डर.
आपके बिलिंग डेटा से रेंडर किए गए स्तर और आंकड़े, इसलिए मूल्य परिवर्तन टेम्पलेट संपादन नहीं है.
बिंदुओं की एक दोहराने योग्य सूची, तालिकाओं के साथ रखी गई है ताकि यह Outlook से बच सके।
पैडिंग और फ़ॉलबैक के साथ एक बुलेटप्रूफ बटन प्रत्येक ग्राहक को चाहिए।
पता, प्राथमिकताएं और सदस्यता समाप्त करें - जिन भागों का अनुपालन करता है, उन्हें उपयोगकर्ता के हाथों से दूर रखा जाता है।
एक टेम्पलेट सिर्फ एक सहेजा गया प्रोजेक्ट दस्तावेज़ है, इसलिए स्टार्टर लाइब्रेरी को शिपिंग करने का मतलब है पंक्तियों को सीडिंग करना और जब कोई उपयोगकर्ता इसे चुनता है तो एक को प्रोजेक्टडेटा के रूप में लोड करना। ये वे श्रेणियां हैं जिनकी अधिकांश उत्पादों को आवश्यकता होती है:
सामान्य प्रारंभिक बिंदु
ये लेआउट श्रेणियां हैं, बिक्री के लिए उत्पाद नहीं। GJS.Market ईमेल प्रीसेट, ब्लॉक पैक और टेम्पलेट प्रबंधकों को सूचीबद्ध करता है - यह तैयार ईमेल डिज़ाइन नहीं बेचता है, और यह पृष्ठ आपको उन उत्पादों के लिए कार्ड नहीं दिखाएगा जो मौजूद नहीं हैं।
उपयोगकर्ता संपादन करते समय डिवाइस की चौड़ाई बदलते हैं, और कैनवास उस चौड़ाई पर फिर से तैयार हो जाता है। ईमेल की चौड़ाई वेब की तुलना में संकरी होती है: 600px वर्षों से अधिकतम सुरक्षित डेस्कटॉप रहा है।
उपयोगकर्ता प्रति चौड़ाई क्या बदल सकते हैं
एक पूर्वावलोकन एक पूर्वावलोकन है। यह दिखाता है कि मार्कअप कैसे फिर से प्रवाहित होता है, न कि एक विशिष्ट क्लाइंट इसे कैसे प्रस्तुत करेगा - जो कि अगला भाग है।
ईमेल क्लाइंट HTML और CSS को अलग-अलग तरीके से लागू करते हैं, और बीस वर्षों से ऐसा कर रहे हैं। एक विज़ुअल बिल्डर संलेखन वर्कफ़्लो को मानकीकृत करता है; यह ग्राहकों को एक-दूसरे से सहमत नहीं बनाता है।
दस्तावेज़ के सिर को कई संदर्भों में स्ट्रिप्स करता है, इसलिए जीवित रहने वाली शैलियों को इनलाइन होना चाहिए।
कुछ संस्करणों में विंडोज पर वर्ड के माध्यम से रेंडर करता है, यही वजह है कि ईमेल मार्कअप अभी भी टेबल-आधारित है।
चार में से सबसे अनुमेय, और इसलिए आपके एकमात्र परीक्षण के रूप में कम से कम उपयोगी।
मीडिया प्रश्नों और कक्षाओं का अपना प्रबंधन; यह जांचने लायक है कि क्या यह आपके दर्शकों में सार्थक है।
यही कारण है कि यह पृष्ठ आपको यह नहीं बताएगा कि यह हर जगह पूरी तरह से काम करता है। इनलाइन शैलियों के साथ तालिका-आधारित आउटपुट उपलब्ध सबसे अनुमानित प्रारंभिक बिंदु है, और उत्पादन ईमेल को अभी भी उन ग्राहकों में परीक्षण किया जाना चाहिए जिनका आपके अपने प्राप्तकर्ता वास्तव में उपयोग करते हैं।
संपादक को आपके पास पहले से मौजूद बैकएंड और डेटा मॉडल से कनेक्ट करें। आपके उपयोगकर्ता, आपका प्रमाणीकरण, आपका डेटाबेस, आपकी अनुमतियाँ और आपका प्रकाशन वर्कफ़्लो सभी ठीक वहीं रहते हैं जहां वे हैं।
राउंड ट्रिप
// The editor asks your API for a template and hands it back on save.
// Your users, your auth, your database, your permissions — unchanged.
const options = {
storageManager: {
type: 'remote',
autosave: true,
stepsBeforeSave: 5,
options: {
remote: {
urlStore: `/api/email-templates/${templateId}`,
urlLoad: `/api/email-templates/${templateId}`,
// Your existing session cookie is all the auth it needs.
fetchOptions: { credentials: 'include' },
},
},
},
};
// pages/api/email-templates/[id].ts — an ordinary Next.js route handler.
export default async function handler(req, res) {
const session = await getSession(req);
if (!session) return res.status(401).end();
if (req.method === 'POST') {
await db.emailTemplate.update({
where: { id: req.query.id, orgId: session.orgId },
data: { project: req.body },
});
return res.status(200).json({ ok: true });
}
const row = await db.emailTemplate.findFirst({
where: { id: req.query.id, orgId: session.orgId },
});
return res.status(200).json(row?.project ?? {});
}GJS.Market आपके टेम्प्लेट को होस्ट नहीं करता है, आपका डेटा संग्रहीत नहीं करता है या आपका ईमेल नहीं भेजता है। यह आपके द्वारा स्वयं चलाए जाने वाले संपादक के लिए प्लगइन्स बेचता है।
संपादन अनुभव को तब तक अनुकूलित करें जब तक कि यह आपके React एप्लिकेशन के मूल भाग के रूप में न पढ़ जाए, न कि इसमें बोल्ट किए गए तृतीय-पक्ष पैनल के रूप में। पहली बार में हटाने के लिए कोई विक्रेता ब्रांडिंग नहीं है।
उपयोगकर्ता क्या देखता है
आप क्या बदल सकते हैं
सबसे गहन संस्करण संपादक को बिना सिर के चलाना और केवल कैनवास और मॉडल के लिए संपादक का उपयोग करके React में संपूर्ण इंटरफ़ेस बनाना है।
यह विचार करने के लिए एक उचित बात है, जब तक कि भागों की सूची नहीं लिखी जाती है। नीचे दिया गया प्रत्येक आइटम कुछ ऐसा है जिसकी एक ईमेल संपादक को प्रयोग करने योग्य होने से पहले आवश्यकता होती है - न कि एक अच्छा है।
एक ईमेल संपादक किस चीज से बना होता है
सब कुछ स्वयं बनाएं
ऊपर की हर पंक्ति
GrapesJS से शुरू करें
संपादन नींव
अपना ईमेल उत्पाद बनाएं - खरोंच से कोई अन्य संपादक नहीं। हम उस पर कई बचाए गए महीने नहीं लगाने जा रहे हैं; आपकी टीम को कितना समय लगेगा यह आपकी टीम पर निर्भर करता है।
नीचे दी गई प्रत्येक सूची एक लाइव पेज के साथ एक वास्तविक उत्पाद है, और इसका नाम, मूल्य और थंबनेल सीधे कैटलॉग से प्रस्तुत होता है - इसलिए इस पृष्ठ पर कुछ भी वास्तव में बिक्री के लिए क्या है, इसके साथ सिंक से बाहर नहीं हो सकता है।
यह पृष्ठ जिस परत के बारे में है: React संपादक कोर के चारों ओर बनाया गया इंटरफेस, उन टीमों के लिए जो स्टॉक पैनल के बजाय आसपास के UI React होना चाहते हैं।
इस श्रेणी को ब्राउज़ करेंसंपादक के चारों ओर एक React इंटरफ़ेस, उन टीमों के लिए जो पैनलों को कॉन्फ़िगर करने के बजाय घटकों का विस्तार करना पसंद करेंगे।
एक React-उन्मुख प्रीसेट, शुरुआती बिंदु के रूप में उपयोगी होता है जब आसपास का एप्लिकेशन पहले से ही React होता है।
एक परिचित घटक लाइब्रेरी पर निर्मित एक पूर्ण React इंटरफ़ेस, उन उत्पादों के लिए जो चाहते हैं कि संपादक उनके बाकी UI से मेल खाए।
डिफ़ॉल्ट वेब ब्लॉक को ईमेल-सुरक्षित लोगों के साथ बदलें और स्टाइल मैनेजर को संपत्तियों ईमेल क्लाइंट सम्मान तक सीमित करें। यह वही है जो संपादक को एक ईमेल संपादक बनाता है।
इस श्रेणी को ब्राउज़ करेंसंपादक में MJML घटक जोड़ता है ताकि प्रोजेक्ट MJML तक क्रमबद्ध हो जाए और आपके सर्वर पर उत्तरदायी HTML तक संकलित हो जाए।
ईमेल प्रारंभिक बिंदु: ईमेल-सुरक्षित ब्लॉक, एक संकुचित शैली प्रबंधक और तालिका-आधारित आउटपुट।
एक वैकल्पिक ईमेल प्रीसेट, न्यूज़लेटर के खिलाफ तुलना करने लायक है, इससे पहले कि आप एक ब्लॉक शब्दावली के लिए प्रतिबद्ध हों।
तैयार अनुभाग और टेम्पलेट्स को सहेजने और पुनः लोड करने के लिए एक प्रबंधक, इसलिए आपके उपयोगकर्ता आदिम से हर ईमेल को असेंबल नहीं कर रहे हैं।
इस श्रेणी को ब्राउज़ करेंतैयार ईमेल अनुभागों का एक बड़ा सेट, इसलिए आपके उपयोगकर्ता आदिम के बजाय तैयार टुकड़ों से इकट्ठा होते हैं।
सहेजें, सूचीबद्ध करें और पुनः लोड करें - अपने उपयोगकर्ताओं को स्टार्टर टेम्पलेट लाइब्रेरी भेजने के पीछे की यांत्रिकी।
उन क्षणों के लिए एक डेवलपर को एक अनुभाग द्वारा उत्पादित मार्कअप को देखने या हाथ से संपादित करने की आवश्यकता होती है।
इस श्रेणी को ब्राउज़ करेंएडॉप्टर लिखे बिना स्टोरेज मैनेजर को बैकएंड से तार करें, अगर आपके द्वारा उपयोग किया जाने वाला पहले से ही कवर किया गया है।
इस श्रेणी को ब्राउज़ करेंछवि अपलोड और मीडिया प्रबंधन, स्थानीय फाइलों के बजाय पहले से ही चलने वाली सेवाओं की टीमों की ओर इशारा करता है।
इस श्रेणी को ब्राउज़ करेंपरिसंपत्ति प्रबंधक को Cloudinary पर इंगित करता है, इसलिए ईमेल छवियां एक ऐसी सेवा से आती हैं जो उन्हें बदल सकती हैं और उनकी सेवा कर सकती हैं।
परिसंपत्ति प्रबंधक में एक पूर्ण अपलोड अनुभव, जिसमें स्थानीय फ़ाइल पिकर से परे स्रोत शामिल हैं।
संपादक से तैयार मार्कअप प्राप्त करना और आपकी पाइपलाइन में आगे जो कुछ भी आता है।
इस श्रेणी को ब्राउज़ करेंचार संयोजन जो वास्तविक आवश्यकताओं पर मैप करते हैं। दिखाई गई प्रत्येक सूची एक है जो मौजूद है - आरेख में एक अंतर को भरने वाला कोई काल्पनिक प्लगइन नहीं है।
पहला संस्करण: दृश्य संपादन, ईमेल-सुरक्षित ब्लॉक, HTML बाहर।
जब आपका वर्कफ़्लो MJML के आसपास बनाया जाता है और सर्वर-साइड संकलित करता है।
ग्राहक-सामना करना, आपके अपने बुनियादी ढांचे में टेम्पलेट्स और संपत्ति के साथ।
अभियान की मात्रा: कई टेम्पलेट, कई छवियां, कई लेखक।
कीमतें निर्माण समय पर कैटलॉग से आती हैं।
आपका ग्राहक बिल्डर खोलता है
आपके ऐप में, आपके प्रमाणीकरण के पीछे, उनकी योजना पर एक मार्ग। कोई दूसरा खाता नहीं, कोई दूसरा लॉगिन नहीं।
वे एक टेम्पलेट इकट्ठा करते हैं
आपके द्वारा परिभाषित किए गए ब्लॉकों से, जिनमें वे ब्लॉक भी शामिल हैं जो आपके उत्पाद में उनके डेटा के बारे में जानते हैं।
यह आपके डेटाबेस में सहेजता है
परियोजना दस्तावेज़ आपके API मार्ग से होकर गुजरता है और एक पंक्ति में उतरता है जो उनके संगठन से संबंधित है।
कोई अभियान या वर्कफ़्लो इसका संदर्भ देता है
आपका स्वचालन आईडी द्वारा टेम्पलेट चुनता है - इसे यह जानने की आवश्यकता नहीं है कि संपादक कैसे काम करता है।
आपका बैकएंड रेंडर करता है और भेजता है
भेजने के समय हल किए गए फ़ील्ड मर्ज करें, उस प्रदाता को मार्कअप सौंप दिया गया जिसके लिए आप पहले से ही भुगतान कर रहे हैं।
ग्राहकों को ईमेल सामग्री पर दृश्य नियंत्रण मिलता है। आप उत्पाद, डेटा और वितरण बुनियादी ढांचे को रखते हैं।
पैटर्न उन उत्पादों में दोहराता है जिनमें अन्यथा कुछ भी समान नहीं है।
पुनः प्रयोज्य ग्राहक संचार टेम्पलेट, जो उन्हें भेजने वाली टीमों के स्वामित्व में हैं।
एक बार डिज़ाइन किए गए टेम्पलेट और स्वचालित वर्कफ़्लो के हर चरण से संदर्भित।
एक दृश्य कार्य के रूप में अभियान रचना, प्रत्येक प्रकाशन की अपनी पहचान रखने।
प्रचार और ऑर्डर से संबंधित ईमेल उन ब्लॉकों से बनाए गए हैं जो पहले से ही कैटलॉग जानते हैं।
एक संपादक, कई क्लाइंट ब्रांड, प्रत्येक को एक इंटरफ़ेस दिखाई देता है जो उनके अपने जैसा दिखता है।
संपादक ईमेल बनाता है। आपका बुनियादी ढांचा इसे भेजता है। उस रेखा को स्पष्ट रखना ही इस वास्तुकला के बाकी हिस्सों को सरल बनाता है।
चरण 01
उपयोगकर्ता संपादित करता है; संपादक क्रमबद्ध करता है कि उन्होंने एक परियोजना दस्तावेज़ में क्या बनाया है।
परियोजना JSONचरण 02
प्रोजेक्ट को उस खाते के विरुद्ध संग्रहीत करता है जो इसका स्वामी है, और जब कुछ भेजने के लिए कहता है तो इसे प्रस्तुत करता है।
API मार्गचरण 03
मर्ज फ़ील्ड हल हो गए, मार्कअप का उत्पादन किया गया — MJML से संकलित किया गया है यदि यह आपका प्रारूप है।
HTML / MJMLचरण 04
जो भी भेजने वाला API आप पहले से उपयोग कर रहे हैं, उसे सौंप दिया गया, इसकी अपनी सुपुर्दगी और विश्लेषण के साथ।
प्राप्तकर्ताप्रदाताओं टीमों के उदाहरण इसे सौंपते हैं
मार्कअप कहां समाप्त होता है, इसके उदाहरण के रूप में नामित किया गया है, न कि अंतर्निहित एकीकरण के रूप में। न तो GrapesJS और न ही GJS.Market उनमें से किसी के लिए कनेक्टर शिप करता है; आप उन्हें अपने बैकएंड से SDK कहते हैं, जैसा कि आप पहले से ही अपने बाकी ईमेल के लिए करते हैं।
यह एक वास्तुशिल्प व्यापार-बंद है, स्कोरबोर्ड नहीं। दाहिने हाथ का कॉलम ईमानदारी से "निर्भर करता है" कहता है: होस्ट किए गए संपादक एक-दूसरे से भिन्न होते हैं और अपनी शर्तों को बदलते हैं, और हम उनकी ओर से एक विशिष्ट उत्तर का आविष्कार नहीं करने जा रहे हैं।
| योग्यता | स्व-होस्टेड GrapesJS | होस्ट किया गया ईमेल संपादक |
|---|---|---|
| React एकीकरण | हाँ — @grapesjs/react आवरण | विक्रेता पर निर्भर करता है |
| स्व-होस्टिंग | हाँ — npm आपके बंडल में पैकेज | विक्रेता और योजना पर निर्भर करता है |
| डेटा स्वामित्व | हाँ - आपका डेटाबेस | विक्रेता पर निर्भर करता है |
| कस्टम घटक | हाँ - आपके अपने घटक प्रकार | विक्रेता पर निर्भर करता है |
| कस्टम UI | हाँ - पैनल या एक हेडलेस इंस्टेंस | विक्रेता पर निर्भर करता है |
| Plugin पारिस्थितिकी तंत्र | हाँ — 100+ पर GJS.Market | विक्रेता पर निर्भर करता है |
| आपका अपना बैकएंड | हाँ - आपके API मार्ग | विक्रेता पर निर्भर करता है |
| कोर लाइसेंस | BSD-3-Clause | मालिकाना |
| विक्रेता लॉक-इन | कम - प्रोजेक्ट डेटा आपका है | संभावित रूप से अधिक |
GrapesJS कॉलम grapesjs 0.23.6 और @grapesjs/react के खिलाफ 2026-09-03 के खिलाफ सत्यापित है। किसी विशिष्ट नामित विक्रेता के खिलाफ तुलना के लिए, इसके प्रकाशित मूल्य निर्धारण के साथ, समर्पित पृष्ठ देखें।
अपनी उत्पाद आवश्यकताओं के आसपास एक उत्पादन-तैयार React ईमेल बिल्डर बनाने में सहायता प्राप्त करें - आपके घटक, आपका डेटा मॉडल, आपका संग्रहण और आपका भेजने वाला प्रदाता।
एक कस्टम ईमेल बिल्डर बनाएंअपने स्टैक, अपने डेटा मॉडल और आपके लिए आवश्यक आउटपुट स्वरूप का वर्णन करने वाला एक संक्षिप्त विवरण भेजें, और आपको एक स्कोप प्रस्ताव वापस मिलेगा।
पड़ोसी पृष्ठ जो एक ही संपादक को एक अलग दिशा में ले जाते हैं।
प्रारूप और वितरण तर्क: MJML इन, इनलाइन टेबल-आधारित HTML आउट, उस प्रदाता को सौंप दिया गया जिसके लिए आप पहले से ही भुगतान कर चुके हैं।
गाइड पढ़ेंटेम्पलेट-लाइब्रेरी कोण: एक टीम में डिज़ाइन का प्रबंधन, संस्करण और पुनः उपयोग करना।
टेम्पलेट देखेंबाज़ारिया की ओर से वही संपादक, जहां हावभाव API से अधिक मायने रखता है।
बिल्डर को देखेंपेज निर्माण के लिए React रैपर आम तौर पर, न केवल ईमेल।
एकीकरण देखेंGrapesJS से शुरू करें, इसे अपने React एप्लिकेशन में एकीकृत करें, और आपके उत्पाद को वास्तव में आवश्यक ईमेल प्लगइन्स के साथ संपादक का विस्तार करें।
पैकेज इंस्टॉल करें, घटक को माउंट करें और आज ही अपने ऐप में एक ईमेल संपादक चालू करें।
जल्दी शुरूप्रीसेट, ब्लॉक पैक, स्टोरेज एडेप्टर और एसेट इंटीग्रेशन - लाइव कीमतों के साथ वास्तविक लिस्टिंग।
प्लगइन्स ब्राउज़ करेंआपके घटकों, आपके डेटा मॉडल और आपके भेजने वाले प्रदाता के आसपास एक उत्पादन एकीकरण।
एक कस्टम ईमेल बिल्डर बनाएं