2011-12-04 11 views
6

मैं एक स्थानीय एप्लिकेशन बनाना चाहता हूं जिसमें एमएफसी/क्यूटी/आदि के आधार पर स्टैंड-अलोन जीयूआई की बजाय ब्राउज़र-आधारित यूआई है। यदि मैं स्थानीय मशीन पर वेबसर्वर नहीं चलाऊंगा, तो मैं कैसे कार्यान्वित कर सकता हूं मेरे ऐप के गतिशील भागों? क्या ब्राउज़र को मशीन पर स्थानीय स्क्रिप्ट, एक्जिक्यूटिव या पुस्तकालयों की ओर इशारा किया जा सकता है? क्या मैं सीधे स्थानीय डेटाबेस का उपयोग कर सकता हूं> इस दृष्टिकोण के साथ क्या नुकसान है?क्या स्थानीय वेब एप्लिकेशन लिखना संभव है जिसके लिए सर्वर की आवश्यकता नहीं है?

+0

इस प्रक्रिया के लिए आपको क्या प्रक्रिया मिली है? – u07ch

+0

HTTP + सीएसएस गतिशील और पोर्टेबल जीयूआई बनाने के लिए बहुत बढ़िया है। लेकिन एक सर्वर एक स्थानीय वेब ऐप की असुविधा है जिसका अर्थ है कि इंस्टॉलेशन की आवश्यकता उन्नति आदि है। इसलिए यही कारण है कि यदि संभव हो तो सर्वर से बचना चाहते हैं। – paperjam

+2

@paperjam: एक सर्वर को वास्तव में स्थापित करने के लिए रूट विशेषाधिकारों की आवश्यकता नहीं है।पोर्ट 80 पर चलने की आवश्यकता है लेकिन आप अपने सर्वर को अन्य बंदरगाहों पर चला सकते हैं। हमने इसे अपने वेब ऐप के डेस्कटॉप संस्करण को लागू करने के लिए किया है। असल में एक न्यूनतम पर्ल सर्वर (हमारा ऐप perl में है) एक यादृच्छिक बंदरगाह पर चल रहा है और एक कस्टम वेबकिट सर्वर से कनेक्ट करने योग्य निष्पादन योग्य है। हमने अपने कस्टम ब्राउज़र को बनाने के लिए वेबकिट चुना क्योंकि यह बड़े 3: विंडोज, मैक और लिनक्स का समर्थन करता है। – slebetman

उत्तर

4

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

  1. आप किसी डेटाबेस से कनेक्ट नहीं हो सकते हैं। इससे राज्यों और उपयोगकर्ता डेटा को संग्रहित करने जैसी सामान्य सामग्री करना मुश्किल हो जाता है।
  2. आप सामग्री-प्रकार सेट नहीं कर सकते हैं। इसका मतलब है कि आप एसवीजी फाइलों की सेवा करने या XMLHttpRequest में एक्सएमएल का उपयोग करने जैसी कोई फैंसी एक्सएमएल सामान नहीं कर सकते हैं।
  3. आप गतिशील छवियां उत्पन्न नहीं कर सकते (ImageMagick या GD के साथ)। हालांकि एचटीएमएल 5 के साथ आप इसे कैनवास के साथ कर सकते हैं।
  4. आप फ़ाइल सिस्टम को पढ़ या लिख ​​नहीं सकते हैं। फिर यह डेटा को सहेजने की आपकी क्षमता को सीमित करता है। लेकिन यह सही उपयोगकर्ता अनुमतियों के साथ किया जा सकता है (नीचे इस पर अधिक)।

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

1

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

यदि यह एक सार्थक ऐप है और आप पागल सलाम के बिना इसे इस तरह लिख सकते हैं।

यदि आप खिड़कियों पर हैं तो आप धोखा दे सकते हैं और सक्रिय x/vbscript का उपयोग कर सकते हैं - लेकिन यदि आप ऐसा कर रहे हैं तो एक बार क्लिक करें .net एप्लिकेशन। कुछ वेब सर्वर अनुप्रयोग घटक के बिना ब्राउज़र पारंपरिक डेटाबेस इंजन से बात करने में सक्षम नहीं होगा।

2

मेरा मानना ​​है कि स्क्रिप्टिंग के संदर्भ में आपके एकमात्र विकल्प इस परिदृश्य में जावास्क्रिप्ट होंगे। (या जावा ऐप्पल या फ्लैश, लेकिन मुझे नहीं लगता कि आप इसे चाहते हैं)

मैं क्यूटी के एम्बेडेड वेबकिट पर एक नज़र डालने का सुझाव दूंगा। आप इसे एक साधारण क्यूटी ऐप में ब्राउज़र एम्बेड करने के लिए उपयोग कर सकते हैं और अपने अधिकांश यूआई के लिए इसका उपयोग कर सकते हैं, तो आपके पास बैकएंड के लिए सी ++/क्यूटी की शक्ति है। क्यूटी सी ++ कोड को सीधे जावास्क्रिप्ट से जोड़ने में सक्षम है।

QWebFrame class देखें, खासकर addToJavaScriptWindowObject विधि, और Qt WebKit Bridge

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

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