2008-11-24 13 views
10

प्रत्येक उदाहरण मैंने सीजीआई/पर्ल के मूल रूप से एचटीएमएल युक्त प्रिंट स्टेटमेंट का एक गुच्छा देखा है, और यह एक CGI ऐप लिखने का सबसे अच्छा तरीका प्रतीत नहीं होता है। क्या ऐसा करने के लिए इससे अच्छा तरीका है? धन्यवाद।पर्ल सीजीआई आवेदन लिखने का सबसे अच्छा तरीका क्या है?

संपादित करें: मैंने CGI :: एप्लिकेशन और HTML :: टेम्पलेट का उपयोग करने का निर्णय लिया है, और निम्न ट्यूटोरियल का उपयोग करें: http://docs.google.com/View?docid=dd363fg9_77gb4hdh7b। धन्यवाद!

उत्तर

17

बिल्कुल (आप शायद 90 के दशक से ट्यूटोरियल देख रहे हैं)। आप एक ढांचा चुनना चाहते हैं। अधिक की घंटी के साथ भारी और सीटियां

  • Jifty - - प्लग-इन समुदाय के बहुत सारे
  • Catalyst के साथ बहुत हल्के - ऊपर
  • की तुलना में अधिक जादुई

    • CGI::Application: पर्ल-भूमि में ये सबसे लोकप्रिय विकल्प हैं
    +0

    धन्यवाद! जब मैं उन्हें कोशिश करने के लिए समय निकालता हूं, तो मैं उन्हें आज़माकर अपना जवाब स्वीकार करूंगा (अगले सप्ताह होना चाहिए, मैं छुट्टी पर जा रहा हूं :-)) – ristonj

    +0

    मुझे आश्चर्य है कि क्या जिफ्टी अभी भी एक अच्छी पसंद है? क्या यह बनाए रखा जाता है? मुझे लगता है कि व्यापक रूप से उपयोग नहीं किए जाने के लिए इसे डेबियन से निकाल दिया जा रहा है। सीपीएएन को जिफ्टी का अंतिम अपडेट 2011 में था। – jeremiah

    +0

    हाँ, जिफ्टी को शायद उस सूची से हटा दिया जाना चाहिए। लेकिन दूसरों ने निश्चित रूप से इसे स्थान लेने के लिए उठ लिया है। अब मैं उस सूची में नर्तक और Mojolicious जोड़ना होगा। – mpeters

    11

    यह वास्तव में एक बहुत बड़ा सवाल है। संक्षेप में, बेहतर तरीका Model/View/Controller (उर्फ एमवीसी) कहा जाता है। एमवीसी के साथ, आपका आवेदन तीन टुकड़ों में विभाजित है।

    मॉडल आपका डेटा और व्यावसायिक तर्क है। यह वह सामान है जो आपके आवेदन का मूल बनाता है।

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

    अंत में, आपके पास नियंत्रक है। मॉडल और एक साथ देखने के लिए यह ज़िम्मेदार है। यह उपयोगकर्ता का अनुरोध लेता है, प्रासंगिक मॉडल ऑब्जेक्ट प्राप्त करता है, और उचित दृश्य को कॉल करता है।

    mpeters पहले से ही पर्ल के लिए कई एमवीसी ढांचे का उल्लेख किया है। आप एक टेम्पलेटिंग इंजन भी चुनना चाहेंगे। दो सबसे लोकप्रिय Template Toolkit और Mason हैं।

    5

    Perl5 Wikiweb frameworks & templates की एक अच्छी (हालांकि अभी तक पूर्ण नहीं) सूची प्रदान करता है।

    "टेम्पलेट्स" विकी प्रविष्टि में लिंक किए गए तुलना लेख पढ़ने योग्य हैं। मैं PerlMonks पर इस push style templating systems आलेख को पढ़ने की भी सिफारिश करता हूं।

    टेम्पलेटिंग के लिए Template Toolkit वह है जिसे मैंने सबसे अधिक उपयोग किया है और अत्यधिक अनुशंसा कर सकता हूं। O'Reilly book भी है और शायद पर्ल साम्राज्य (वेब ​​ढांचे के अंदर या बाहर) में सबसे अधिक उपयोग किया जाने वाला टेम्पलेट सिस्टम है।

    एक और दृष्टिकोण जो मुझे अधिक से अधिक खींचा गया है वह गैर टेम्पलेट "निर्माता" समाधान है। Template::Declare & HTML::AsSubs जैसे मॉड्यूल इस बिल को फिट करते हैं।

    2

    आप प्रस्तुति को कोड से अलग भी कर सकते हैं और पूरी तरह से उड़ाए गए ढांचे के सभी ओवरहेड को लाने के बिना केवल एक टेम्पलेटिंग सिस्टम का उपयोग कर सकते हैं। Template Toolkit इस फैशन में स्वयं ही उपयोग किया जा सकता है, जैसा कि Mason हो सकता है, हालांकि मुझे लगता है कि यह एक टेम्पलेट सिस्टम के रूप में छिपे हुए ढांचे के अधिक होने के लिए विचार करता है।

    यदि आप प्रस्तुति से कोड को अलग करने के बारे में वास्तव में गंग-हो हैं, तो ध्यान रखें कि टीटी और मेसन दोनों टेम्पलेट्स में एम्बेडेड निष्पादन योग्य कोड को निष्पादित करने योग्य निष्पादन योग्य कोड को अनुमति देते हैं (या यहां तक ​​कि प्रोत्साहित करते हैं)। निजी तौर पर, मुझे लगता है कि आपके एचटीएमएल में एम्बेडिंग कोड आपके कोड में एचटीएमएल एम्बेड करने से बेहतर नहीं है, इसलिए मैं HTML::Template का चयन करता हूं।

    10

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

    टेम्पलेट टूलकिट बहुत लोकप्रिय है (सीपीएएन पर टेम्पलेट.pm) टेक्स्ट :: टेम्पलेट, एचटीएमएल :: टेम्पलेट, और एचटीएमएल :: मेसन भी लोकप्रिय हैं।

    एचटीएमएल :: मेसन एक टेम्पलेट मॉड्यूल से कहीं अधिक है, और यह एक साधारण सीजीआई ऐप के लिए बहुत अधिक भारी हो सकता है, लेकिन यह तय करने के लायक है कि आप यह तय कर रहे हैं कि आपके लिए सबसे अच्छा क्या होगा।

    टेक्स्ट :: टेम्पलेट उचित रूप से सरल है, और टेम्पलेट के अंदर पर्ल का उपयोग करता है, ताकि आप डेटा पर लूप कर सकें और पर्ल में डिस्प्ले लॉजिक कर सकें। इसे लोगों द्वारा समर्थक और सह दोनों के रूप में देखा जाता है।

    एचटीएमएल :: टेम्पलेट भी छोटा और सरल है। यह टैग के अपने छोटे सेट को लागू करता है यदि/फिर/प्रसंस्करण, परिवर्तनीय सेटिंग और लूपिंग के लिए। बस। यह पाठ :: टेम्पलेट के विपरीत विपरीत कारणों के लिए प्रो और कॉन दोनों के रूप में देखा जाता है।

    टेम्पलेट टूलकिट (टीटी) एक बहुत बड़ी, पर्ची टेम्पलेट भाषा लागू करता है जिसमें लूपिंग और तर्क शामिल है, और भी बहुत कुछ।

    मैंने HTML :: टेम्पलेट एक का उपयोग किया, और पाया कि मैं कुछ और सुविधाएं चाहता हूं। मैंने सफलता के साथ टेक्स्ट :: टेम्पलेट का उपयोग किया, लेकिन नामस्थानों के साथ जुड़ने की अपनी इच्छा को थोड़ा परेशान करने के लिए मिला। मुझे टेम्पलेट टूलकिट पता और प्यार आया है। मेरे लिए यह सही लगता है। आपका माइलेज भिन्न हो सकता है।

    बेशक, पुरानी "प्रिंट एचटीएमएल" विधि अभी भी है, कभी-कभी कुछ प्रिंट स्टेटमेंट पर्याप्त होते हैं। लेकिन आपने अपने डिस्प्ले को अपने मुख्य तर्क से अलग करने के विचार पर हिट किया है। कौन - सी एक अच्छी बात है।

    यह मॉडल/व्यू/कंट्रोलर (एमवीसी) के लिए सड़क पर पहला कदम है जिसमें आप अपना डेटा मॉडल & व्यवसाय तर्क अलग करते हैं (आपका कोड जो इनपुट स्वीकार करता है, इसके साथ कुछ करता है, और निर्णय लेता है कि क्या होना चाहिए आउटपुट), आपका इनपुट/आउटपुट (टेम्पलेट्स या प्रिंट स्टेटमेंट्स - एचटीएमएल, पीडीएफ, इत्यादि), और कोड जो दो को जोड़ता है (सीजीआई, सीजीआई :: एप्लीकेशन, उत्प्रेरक एमवीसी फ्रेमवर्क इत्यादि)। विचार यह है कि आपकी डेटा संरचना (मॉडल में) में बदलाव को आपके आउटपुट रूटीन (व्यू) में बदलाव की आवश्यकता नहीं होनी चाहिए।

    +0

    सीजीआई बनाम एमवीसी बकवास है। सीजीआई (कॉमन गेटवे इंटरफेस) वेब/सूचना सर्वर पर बाहरी प्रोग्राम, सॉफ्टवेयर या गेटवे चलाने के लिए एक मंच-स्वतंत्र इंटरफ़ेस है। एमवीसी (मॉडल-व्यू-कंट्रोलर) एक डिज़ाइन पैटर्न है जो किसी एप्लिकेशन को ज़िम्मेदारी के तीन क्षेत्रों में विभाजित करता है। यदि आप एक वेब ऐप बनाने के लिए पर्ल का उपयोग कर रहे हैं, तो आप सीजीआई को एक या दूसरे तरीके से इस्तेमाल करने जा रहे हैं। एमवीसी डिजाइन पैटर्न का उपयोग वैकल्पिक और अनुशंसित है, लेकिन आखिरकार सीजीआई के उपयोग से असंबंधित है। –

    +0

    यह केवल बकवास है यदि आप शब्दावली के बारे में पैडेंटिक हैं, और सीजीआई और एमवीसी के संकेतक अर्थों पर जोर देते हैं, जबकि उनके अर्थपूर्ण अर्थों को अनदेखा करते हैं। हालांकि एमवीसी पैटर्न का उपयोग कर एक सीजीआई आवेदन बनाने के लिए यह पूरी तरह से उचित है, यह मामला है कि प्रोग्रामर सीजीआईपीएम, सीजीआई :: एप्लीकेशन इत्यादि से विकसित होते हैं - अपनी खुद की एमवीसी संरचना को प्रगति के रूप में बनाते हैं और उनके कोड को दोबारा बनाते हैं - एमवीसी फ्रेमवर्क के लिए उत्प्रेरक की तरह, जिस बिंदु पर वे एफसीजीआई या mod_perl में विकसित होते हैं। तो व्यवहारवाद, बकवास नहीं। –

    +0

    शब्द का मतलब चीजें हैं। तो शब्दकोष करो। जब हम उस पर सहमत होना बंद करते हैं, हम पेड़ों में एक दूसरे पर घुटने टेकने के लिए वापस आ जाते हैं। http://en.wikipedia.org/wiki/Common_Gateway_Interface –

    4

    एक समाधान है कि मुझे लगता है फ्रेमवर्क/रोल-अपने-खुद दुविधा में सही संतुलन बनाता है तीन प्रमुख पर्ल मॉड्यूल का उपयोग है: CGI.pm, Template Toolkit, और DBI। इन तीन मॉड्यूल के साथ आप सुरुचिपूर्ण एमवीसी प्रोग्रामिंग कर सकते हैं जो लिखना और बनाए रखना आसान है।

    सभी तीन मॉड्यूल टेम्पलेट टूलकिट (टीटी) के साथ बहुत लचीले होते हैं, यदि आपको एचटीएमएल, एक्सएमएल, या यहां तक ​​कि पीडीएफ में डेटा आउटपुट करने की इजाजत मिलती है। आप टीटी में पर्ल लॉजिक भी शामिल कर सकते हैं, यहां तक ​​कि अपना डेटाबेस इंटरफ़ेस भी जोड़ें। यह आपकी सीजीआई स्क्रिप्ट को बहुत छोटा और बनाए रखने में आसान बनाता है, खासकर जब आप "मानक" प्रगति का उपयोग करते हैं।

    यह आपको टेम्पलेट में जावास्क्रिप्ट और AJAXy सामान रखने की अनुमति देता है जो क्लाइंट और सर्वर के बीच अलगाव की नकल करता है।

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

    सभी एक कॉम्पैक्ट अभी तक लचीला टूलसेट में।

    +0

    यह पूछे गए प्रश्न का सबसे अच्छा जवाब है। –

    +0

    मैं अपने उत्तर को Xslate, एक तेज़ टेम्पलेटिंग समाधान पर विचार करने के लिए आग्रह करता हूं। टीटी से माइग्रेशन की आसानी के लिए इसमें टीटी सिंटैक्स विकल्प है, और यह गोलांग में पोर्ट होने के शुरुआती चरणों में है। – jeremiah

    संबंधित मुद्दे