2016-06-28 18 views
7

मैंने अभी कोणीय 2 का उपयोग करना शुरू कर दिया था और यह सोच रहा था कि selector और template जैसे कुछ गुण घटकों के सजावट में क्यों नहीं बल्कि घटकों के वर्गों में हैं।कोणीय 2 सजावट का उपयोग क्यों करता है?

कोणीय 2 में इन सभी सज्जाकारों का उपयोग करने का क्या मतलब है?

  • त्रुटि जाँच
  • स्वत: पूर्ण करने
  • चित्रमय जीयूआई डिजाइनरों
  • :

  • उत्तर

    2
    • आसान उपकरण की तरह टेम्पलेट्स में समर्थन के सभी प्रकार प्रदान करने के लिए बनाने के लिए सजावटकर्ताओं से कोड उत्पन्न करने के लिए जो अनुमति देता है:

      • अधिक एलान के तौर पर कुछ चीजें परिभाषित या
      • कुछ कॉन्फ़िगरेशन के आधार पर अलग-अलग कोड उत्पन्न करने के लिए (जैसे आगामी ऑफ़लाइन टेम्पलेट संकलक करता है)

    कोड का उपयोग करने के क्रियान्वित किया जा करने की आवश्यकता होगी परिणाम अभिव्यक्ति उत्सर्जित हो सकता है। टाइपस्क्रिप्ट कोड को निष्पादित किए बिना सजावटी आसानी से मूल्यांकन किया जा सकता है (शायद एक सरल और सीमित सबसेट को छोड़कर)।

    0

    सामान्यतः, सजावटी आपको फ़ंक्शन निष्पादित करने की अनुमति देते हैं। उदाहरण के लिए @Component Angular2 से आयातित Component फ़ंक्शन निष्पादित करता है। हुड के तहत, ऐसे सजावट कक्षा पर कुछ मेटाडेटा परिभाषित करते हैं। यह आपको क्लास को घटक के रूप में "ध्वजांकित" करने के लिए कॉन्फ़िगर करने की अनुमति देता है। Angular2 तब इस वर्ग में टेम्पलेट्स में चयनकर्ताओं को जोड़ने में सक्षम है।

    आप देख सकते हैं कि सज्जाकार विभिन्न स्तरों (वर्ग, वर्ग संपत्ति, विधि पर टाइपप्रति में आवेदन कर सकते हैं:

    यह लेख क्या हुड के नीचे होता है के बारे में आप अधिक संकेत दे सकता है पैरामीटर)।

    +1

    "सामान्यतः, सजावटी आपको कार्य निष्पादित करने की अनुमति देते हैं"। यह बहुत उपयोगी नहीं है। प्रोग्रामिंग भाषाएं आपको "कार्य निष्पादित करें" देती हैं ... – spinkus

    4

    प्लेटफार्म-विशिष्ट उत्तरों के अलावा पहले से ही, मुझे एक और सामान्य दृश्य से चिपकना अच्छा लगेगा। यह सवाल, मेरी राय से, किसी भी तरह सज्जाकार उपयोग कर के लाभ में से कुछ भाग (जैसे @Component बनाम extends Component)

    से अधिक डेकोरेटर पैटर्न चुनने का निर्णय से संबंधित है कर रहे हैं:

    1. चिंताओं में से पृथक्करण:

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

    2।कई संशोधनों का समर्थन

    कई भाषाओं Diamond problem के कारण एकाधिक विरासत को रोकती हैं। दूसरी तरफ, एक वर्ग में विभिन्न उद्देश्यों के लिए कई सजावट हो सकती हैं (उदा। @Component और @RouteConfig बहिष्कृत)

    +1

    मैं वास्तव में दूसरा तर्क नहीं खरीदता हूं। एक कोणीय 2 में सजावट करने वालों का उपयोग एकाधिक विरासत मुद्दे को कम करता है? हाँ, सजावटी मेटा डेटा के साथ कक्षाओं को चिह्नित करने के लिए अच्छे हैं। लेकिन उन्होंने कक्षा/प्रकार की घोषणाओं की तरह एम का उपयोग किया है। घटक वर्ग/प्रकार हमेशा \ @ कॉम्पोनेंट के साथ तैयार होते हैं। मॉड्यूल हमेशा \ @NgModule के साथ, और लॉजिकल घटक वर्ग आदि के अलावा किसी अन्य चीज़ पर \ @ कॉम्पोनेंट डालने का अर्थ नहीं है IMHO यह एक संदिग्ध डिज़ाइन निर्णय है। यह नहीं कहना फायदे हैं - कुछ भी नहीं। – spinkus

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