2016-03-03 11 views
15

मैंने कोणीय 1 में काम किया है। इसमें स्पष्ट रूप से एक नियंत्रक था जो व्यू और मॉडल के बीच मध्यस्थ के रूप में कार्य करता था। मुझे एहसास हुआ कि कोणीय 2 में हमारे पास कोई नियंत्रक नहीं है।कोणीय 2 एमवीसी है?

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

+0

यह नहीं कि यह बहुत मददगार है, लेकिन मुझे लगता है कि इसे एमवी * (या एमवी जो भी हो) फ्रेमवर्क के रूप में जाना जाता है, इसलिए आपके पास अंतिम भाग को कार्यान्वित करने के तरीके में कुछ लाइसेंस है। – lintmouse

+1

कोणीय 2 दस्तावेज वास्तुकला का एक बड़ा अवलोकन है। यह यहां पाया जा सकता है: https://angular.io/docs/ts/latest/guide/architecture.html। हालांकि Angular2 घटक आधारित है, फिर भी आपके पास अलग-अलग विचार हैं, आपके विचारों के लिए अलग-अलग स्कोप हैं, और ऐसी सेवाएं जो आपको अपने बैकएंड से कनेक्ट करने की अनुमति देती हैं। – user2263572

+0

मैं निश्चित रूप से कोणीय 2 एमवीसी पर विचार करता हूं। सेवाएं आपका मॉडल होंगी, घटक नियंत्रक और दृश्य का मिश्रण हैं। आपने अपने अधिकांश फ़ंक्शन लॉजिक और "कंट्रोलर" फ़ंक्शंस को अपनी कक्षा में रखा है, और टेम्पलेटिंग के माध्यम से अपने दृश्य को संलग्न किया है। –

उत्तर

15

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

उदाहरण के लिए

(कोणीय 2 अल्फा संस्करण):

import {Component, View, bootstrap, provide, NgClass} from 'angular2/angular2'; 

@Component({ 
    selector : "my-home" 
}) 

@View({ 
    directives : [NgClass, EditSettingPanel], 
    styles: ['.hidden{ display : none} .visible{ display : block}'], 
    templateUrl : "views/blog-panel.html" 
}) 
export class home { 
} 

} 

ऊपर के उदाहरण आप उस वर्ग "घर" में देख सकते हैं नियंत्रक के रूप में माना जा सकता है, देखें @View डेकोरेटर के साथ लिखा है। घटक अनुकूलन @component सजावट द्वारा दिया जाता है। इसके अलावा आप विभिन्न निर्भरता इंजेक्शन अभ्यास देख सकते हैं।

संपादित :: उदाहरण (वर्तमान कोणीय 2/4 संस्करण)

import { Component } from '@angular/core'; 

@Component({ 
    selector: 'custom-component', 
    templateUrl: './template.html', 
    styleUrls: ['./style.scss'], 
}) 
export class CustomComponent {} 

संक्षेप में, कोणीय 2 घटक आधारित MVC वास्तुकला आधारित है ढांचा।

+0

में प्रदान करके सेवाओं को प्रदान किया जा सकता है। लेकिन यह सुनिश्चित नहीं था कि मेरी समझ सही थी या नहीं। –

+3

मुझे लगता है कि @View को कोणीय 2 से हटा दिया गया था। – Phil

7

घटक और निर्देश नियंत्रक हैं, कोणीय द्वारा संसाधित टेम्पलेट (एचटीएमएल) और ब्राउज़र दृश्य है, और यदि आप नियंत्रक के साथ मॉडल को गठबंधन नहीं करते हैं, तो आपको एक एमवीसी पैटर्न मिलता है।

+0

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

+0

सेवाएं मॉडल हैं सब कुछ है। यदि आप एक ही डेटा प्रदर्शित करते हैं तो आप एक से अधिक घटकों के साथ एक सेवा साझा करते हैं। अक्सर सेवाओं में बदलावों के बारे में विचारों को सूचित करने के लिए अवलोकनों का उपयोग करना एक अच्छा विचार है। कुछ ने घटक तर्कों को घटकों में रखा है, अन्य घटक घटकों को रखना पसंद करते हैं और सेवाओं में व्यावसायिक तर्क रखते हैं। आपके पास कई स्तर की सेवाएं हो सकती हैं (निर्भर करता है या आप उन्हें कहां प्रदान करते हैं)। आप सीधे एक घटक (प्रत्येक घटक उदाहरण के लिए एक और उदाहरण प्राप्त करने के लिए), या माता-पिता घटक या सिंगलटन जैसे सेवाओं को प्रदान कर सकते हैं, उन्हें '@NgModule()' –