2010-08-12 10 views
6

से कोड को दूर रखने के लिए कैसे आप फ्लेक्स अनुप्रयोगों को डिजाइन करने पर लेख, किताबें और सर्वोत्तम प्रथाओं की सिफारिश कर सकते हैं? (एआईआर और वेब दोनों)।फ्लेक्स: एमएक्सएमएल

मैंने Creating components and enforcing separation of concerns with Flex और Building components by using code behind पढ़ा है।

क्या एप्लिकेशन को हमेशा मुख्य एमएक्सएमएल पर शुरू करना है? क्या मैं एक्शनस्क्रिप्ट क्लास से पहले दृश्य को तुरंत चालू नहीं कर सकता?

आप पहले एमएक्सएमएल में हैंडलर कैसे जोड़ेंगे और प्रवाह नियंत्रण देंगे?

मैं कोड से डीकॉप्लेड दृश्य को रखने के लिए अपने एमएक्सएमएल फाइलों पर शून्य कोड लिखने की कोशिश कर रहा हूं। क्या यह फ्लेक्स में संभव है?

+0

क्या आप वैचारिक कारणों से ऐसा कर रहे हैं या क्योंकि आप वास्तव में मानते हैं कि एक सरल और त्वरित समझौता से बचने के लिए पीछे की ओर झुकने के लिए पर्याप्त लाभ है? – Robusto

+0

फ्लेक्स जीयूआई प्रोग्रामिंग के माध्यम से मुझे मार्गदर्शन करने में मदद करने के लिए अधिकांश सामान्य प्रश्न हैं। मुझे सिखाया गया था कि कोड decoupled से अच्छा रखने के लिए अच्छा है। –

उत्तर

10

मैंने कुछ परियोजनाओं पर काम किया है जिन्होंने कोड-बैक पैटर्न का उपयोग किया है, जो आपकी कई आवश्यकताओं को पूरा करता है। संक्षेप में आप एक्शनस्क्रिप्ट बेस क्लास (MyClassCode.as) बनाकर और एमएक्सएमएल फ़ाइल बनाकर एमएक्सएमएल से कोड को अलग करते हैं जो आपके कोड-बैक क्लास (MyClass.mxml) से प्राप्त होता है। एक दोष यह है कि एमएक्सएमएल फ़ाइल में किसी भी यूआई तत्व को आपके कोड-बैक क्लास में दूसरी बार घोषित करने की आवश्यकता है, अन्यथा मुझे यह यूआई से कोड को अलग करने का एक बहुत ही प्रभावी तरीका माना गया है।

MyClassCode.as:

package mypackage 
{ 
    import flash.events.MouseEvent; 

    import mx.events.FlexEvent; 

    import spark.components.Button; 
    import spark.components.Group; 

    public class MyClassCode extends Group 
    { 
     public var myButton:Button; 

     public function MyClassCode() 
     { 
      super(); 
      this.addEventListener(FlexEvent.CREATION_COMPLETE, onCreationComplete); 
     } 

     private function onCreationComplete(e:FlexEvent):void { 
      this.removeEventListener(FlexEvent.CREATION_COMPLETE, onCreationComplete); 
      myButton.addEventListener(MouseEvent.CLICK, onClick); 
     } 

     private function onClick(e:MouseEvent):void { 
      // Do something 
     } 
    } 
} 

MyClass.mxml:

<?xml version="1.0" encoding="utf-8"?> 
<mypackage:MyClassCode xmlns:fx="http://ns.adobe.com/mxml/2009" 
         xmlns:s="library://ns.adobe.com/flex/spark" 
         xmlns:mx="library://ns.adobe.com/flex/mx" 
         xmlns:mypackage="mypackage.*"> 
    <s:Button id="myButton"/> 
</mypackage:MyClassCode> 

कुछ लिंक:

http://learn.adobe.com/wiki/display/Flex/Code+Behind

http://ted.onflash.org/2007/02/code-behind-in-flex-2.php

यहाँ एक उदाहरण और अधिक जानकारी के लिए कुछ लिंक है

http://blog.vivisectingmedia.com/2008/04/the-flex-code-behind-pattern/

+0

इस प्रकार मैं आमतौर पर चीजें करता हूं। – danjarvis

+0

"संक्षेप में" वाक्य ने मेरा दिन बनाया। मैं इस विषय पर एकत्र हुए और कई अन्य लिंक के आधार पर पढ़ना और कोडिंग करना जारी रखूंगा। एसओ को और प्रश्न प्रकाशित किए जाएंगे। धन्यवाद! –

+0

बढ़िया, खुश मैं मदद कर सकता था! –

1

पॉल विलियम्स के पास फ्लेक्स के लिए विभिन्न प्रस्तुति पैटर्न पर कुछ महान लेख और उदाहरण हैं। उन्होंने प्रत्येक अलग-अलग पैटर्न का उपयोग करके नमूना आवेदन भी बनाया है और दिखाया है कि यूनिट को कुछ पैटर्नों का परीक्षण कैसे किया जाए। http://blogs.adobe.com/paulw/

निष्क्रिय दृश्य मॉडल पर एक नज़र डालें, यह हो सकता है कि आप अपने एमएक्सएमएल में एएस कोड लिखने के मामले में क्या खोज रहे हों।

+0

महान संसाधन, धन्यवाद! –

2

सर्वोत्तम अभ्यास सॉफ्टवेयर विकास में बहुत ही व्यक्तिपरक हैं। यदि आपको एक व्यक्ति मिलता है जो "एक्स" कहता है तो मैं "वाई" कहता हूं और सबसे अधिक संभावना है कि वे दोनों दिए गए परिस्थितियों में सही होंगे।

अधिकांश किताबें मुझे शुरुआती प्रथाओं के विपरीत, शुरुआती लोगों को गति पर लाने पर ध्यान केंद्रित करने के बारे में पता है।

अपने विशिष्ट सवालों के जवाब देने के लिए:

आवेदन हमेशा पर मुख्य MXML शुरू करने के लिए है? क्या मैं एक्शनस्क्रिप्ट क्लास से पहले दृश्य को तुरंत नहीं कर सकता?

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

कैसे आप पहले MXML करने के लिए एक हैंडलर जोड़ने और प्रवाह नियंत्रण यह करने के लिए देना होगा?

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

मैं दृश्य decoupled कोड से रखने के लिए मेरी MXML फाइलों पर शून्य कोड लिखने की कोशिश कर रहा हूँ। क्या यह फ्लेक्स में संभव है?

यह निर्भर करता है। दृश्य भी कोड नहीं है? यदि आप "मॉडल व्यू कंट्रोलर" स्टाइल दृष्टिकोण का उपयोग करना चाहते हैं, तो बहुत सारे तरीके हैं। फ्रेमवर्क मदद कर सकते हैं और मैंने उपरोक्त कुछ का उल्लेख किया है। लेकिन, आप इसे स्वयं भी जा सकते हैं। यदि आप फ्लेक्स के लिए नए हैं तो मैं आपको सलाह दूंगा कि आप अपना विकास "फ्रेमवर्कलेस" शुरू करें और समीकरण में ढांचे को लाएं ताकि यह देखने के लिए कि क्या वे आपके द्वारा चलाए जाने वाले समस्याओं को हल करने में मदद करते हैं।

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