2009-09-02 9 views
5

वेब-एप्लिकेशन इन दिनों जावास्क्रिप्ट का व्यापक उपयोग करते हैं, उदाहरण के लिए जीमेल और कैलेंडर जैसे विभिन्न Google उत्पाद।प्रसंस्करण जावास्क्रिप्ट सर्वर-साइड डुप्लिकेट तर्क के लिए एक समाधान है?

मैं कैसे नहीं दोहराया होने तर्क सर्वर और ग्राहक पक्ष के लिए संघर्ष कर रहा हूँ।

किसी पृष्ठ या एप्लिकेशन की स्थिति का अनुरोध करते समय, मैं पूरा यूआई भेजना पसंद करूंगा, जिसका अर्थ है: न केवल कुछ जावास्क्रिप्ट, जो बदले में एक दर्जन AJAX अनुरोध करता है और उपयोगकर्ता इंटरफ़ेस बनाता है।

लेकिन यहाँ समस्या है, तर्क को दिखाने या नहीं करने के लिए क्या निर्णय लेने से क्लाइंट साइड भाषा में सर्वर साइड में एक बार और एक बार लिखा जाना है।

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

मुझे आशा है कि मेरी समस्या की व्याख्या थोड़ा स्पष्ट है, क्योंकि मैं सबसे धाराप्रवाह अंग्रेजी लेखक नहीं हूँ। यदि आप समझते हैं कि मेरा क्या मतलब है और यदि आप समस्या का थोड़ा बेहतर वर्णन कर सकते हैं, तो कृपया ... धन्यवाद!

तो मेरे सवाल है:

  • यह संभव है और या यथार्थवादी की तरह कुछ है?
  • इस समस्या से निपटने के तरीके पर आपकी राय क्या है?

;-)

उत्तर

2

जब हमने अपना वेब ऐप शुरू किया, तो हमारे पास समान प्रश्न थे।और

  • बैकएंड (व्यापार तर्क, सुरक्षा) पूरी तरह से दृश्यपटल से अलग है (जीयूआई)

  • दृश्यपटल बैकएंड JSON सेवाओं विशेष रूप से

    के माध्यम से संवाद:
    यह मदद मिल सकती है कि हम कैसे समाप्त हो गया आप को पता है
  • JSON PURE templating पुस्तकालय

  • और बैकएंड मैं साथ क्लाइंट-साइड प्रदान की गई है एस Erlang (स्ट्रीमिंग JSON भी ठीक हो जाएगा कुछ भी है, लेकिन हम अपनी शक्ति को पसंद आया)

और अपने प्रश्न के लिए, आप पूरी तरह से असुरक्षित के रूप में ब्राउज़र पर विचार करने के लिए है।
सभी सुरक्षा तर्क बैकएंड से आना चाहिए।

स्क्रीन क्लाइंट पक्ष के कुछ हिस्सों को छिपाना या दिखाना ठीक है, लेकिन निश्चित रूप से बैकएंड तय करता है कि ब्राउज़र पर कौन सा डेटा भेजा जाता है।

+0

अच्छा सुझाव ... –

1

आप Jaxer वर्णन है.आप जे एस में सब कुछ लिख सकते हैं लगता है।
इसके अलावा, GWT है जो जावा

+0

यह अजीब लेकिन बहुत रोचक है। क्या आपने जैक्सर का इस्तेमाल किया है? तुम्हे यह कैसा लगा? –

+0

आईडीडी जीडब्ल्यूटी इस समस्या के लिए Google का उत्तरदाता है ... –

+0

नहीं, मैंने नहीं किया है। यह वास्तव में दिलचस्प है और मैं निकट भविष्य में जैक्सर के साथ प्रयोग करने की योजना बना रहा हूं (आसपास के सभी जेएस एमवीसी buzz बैकएंड के लिए है मुझे लगता है कि कुछ चेक की जरूरत है)। जैसा कि मैंने समझा यह वास्तव में तेज़ नहीं है। आप जानते हैं कि जावास्क्रिप्ट तेजी से तकनीक नहीं है इसलिए किसी भी चीज की योजना न बनाएं। –

0

पर पूरी चीज़ लिखने की अनुमति देता है, मैं समझता हूं कि आप क्या कह रहे हैं।

लेकिन मुझे नहीं लगता कि आप, क्या निर्माण करने के लिए के बारे में ज्यादा 'तर्क' होने क्लाइंट की तरफ होना चाहिए। यदि आप एक मॉडल के साथ जाना चाहते हैं जैसे आप प्रस्तावित कर रहे हैं (चाय का मेरा प्याला नहीं, लेकिन क्यों नहीं), मुझे नहीं लगता कि आप अधिक डुप्लीकेट क्यों खत्म कर देंगे।

जहां आप आमतौर पर table या div दिखाएंगे, तो आप केवल जावास्क्रिप्ट आउटपुट करेंगे, जो क्लाइंट साइड पर प्रासंगिक घटकों का निर्माण करेगा।

मैं सिर्फ एक और अपने डेटा/व्यापार तर्क मॉडल में 'दृश्य' के रूप में यह विचार करेंगे।

क्या आप किसी समस्या का एक छोटा सा उदाहरण ले रहे हैं जिसके खिलाफ आप आ रहे हैं?

+0

नमस्ते, अच्छी तरह से idd अधिकांश वेबसाइट, जैसे स्टैक ओवरफ्लो डेटा केंद्रित हैं और वास्तव में यह समस्या नहीं है, लेकिन यदि आप डेस्कटॉप पर उपयोग किए जाने वाले लोगों के लिए 'असली' एप्लिकेशन बनाना चाहते हैं, जैसे कि Google डॉक्स इत्यादि, और सब कुछ जारी रखने की आवश्यकता है, मुझे अभी भी यकीन नहीं है कि सबसे अच्छा तरीका क्या है, इस प्रश्न का कारण। TXN btw –

1

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

हो सकता है कि आप जिन ऐप्स को देख रहे हैं वे अजाक्स को खराब तरीके से उपयोग करें।

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

सही ढंग से प्रयुक्त होता है, AJAX को आपके पृष्ठ तेज़ी से बनाना चाहिए, क्योंकि यह पूरे पृष्ठ को पुनः लोड किए बिना छोटे अपडेट या सामग्री के परिवर्तनों का अनुरोध कर सकता है।

लेकिन यहाँ समस्या है, तर्क दिखाने या नहीं करने के लिए क्या निर्णय लेने से क्लाइंट साइड भाषा में एक बार सर्वर साइड में एक बार लिखा और हो गया है।

आवश्यक नहीं है। उदाहरण के लिए, PHP में, आप displayWidgetInfo() जैसे फ़ंक्शन लिख सकते हैं। पृष्ठ लोड पर प्रारंभिक विजेट जानकारी भेजने के लिए आप उस फ़ंक्शन का उपयोग कर सकते हैं। यदि उपयोगकर्ता कुछ बदलने के लिए विजेट पर क्लिक करता है, तो एक PHP स्क्रिप्ट को AJAX अनुरोध भेजें जो नए परिणाम वापस भेजने के लिए displayWidgetInfo() का भी उपयोग करता है। लगभग सभी तर्क उस एकल कार्य में रहते हैं।

आपकी सहजताएं सही हैं: कोड को डुप्लिकेट करना बुरा है, और एक पृष्ठ के लिए बहुत से अनुरोध करना बुरा है।लेकिन मुझे लगता है कि आप उन समस्याओं को कुछ रिफैक्टरिंग के साथ ठीक कर सकते हैं।

+0

कुछ अच्छे अंक, आयोडीन अल्पता विकार मैं क्योंकि आंशिक अद्यतन और इस तरह के एक और अधिक उत्तरदायी यूआई के लिए ajax का उपयोग करें, लेकिन मैं ऐसे समृद्ध वेब एप्लिकेशन है, यह तर्क अलग रखने के लिए बहुत मुश्किल है, चलो सर्वर से तर्क करना पड़ता है पृष्ठ पर कुछ विजेट्स को सही क्रम में रखें, फिर क्लाइंट को विजेट्स को पुनर्स्थापित करने के लिए समान कोड की आवश्यकता होती है ... अगर थोड़े समझ में आता है कि मेरा क्या मतलब है :-) txn btw –

+0

मेरे भगवान, बहुत सारे टाइपो, मुझे खेद है , वास्तव में... –

0

मैं इस तरह से अपने प्रश्न समझ में: मान लीजिए कि हमारे वेब पेज पर एक HTML फार्म है। नाम और उपनाम के लिए एक क्षेत्र है। हमें इसे क्लाइंट-साइड (जेएस के साथ) और सेवर-साइड (फॉर्म इनपुट प्रोसेस करते समय PHP स्क्रिप्ट पर) दोनों पर वैधता के लिए जांचना होगा। तो यहां दोनों पक्षों पर डुप्लिकेशंस - रेगेक्स चेक है। तो इसे रोकने और इन तर्कों को जोड़ने का तरीका क्या है?

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