AngularJS बनाम AngularJS [बंद]


159

महीने पहले, मैंने एंगुलर का अध्ययन करने का फैसला किया। जब मैं कुछ अग्रिम कर रहा था और इसका उपयोग करके कुछ ऐप बना रहा था, तो मुझे एहसास हुआ कि कोणीय 2 डेवलपर पूर्वावलोकन में है, इसलिए इसे रिलीज़ होने से पहले समय की बात है। क्योंकि Angular 2 Angular 1 के साथ संगत नहीं होने जा रहा है, और इसमें बहुत सारे बदलाव हैं, सवाल यह है कि क्या Angular 1.x के साथ विकास जारी रखना बेहतर है या Angular 2 को विकसित करना शुरू करना है?

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


1
मैं पहले कोणीय 1 के साथ कोशिश करूंगा। समाधान के स्वर हैं, और कई सवालों के कई जवाब हैं। संभवतः कोणीय 1.5 एक पुल होगा 2. कोणीय 2 अभी भी कोणीय 1 की तरह थोड़ा सा दिखाई देगा, इसलिए मैं 1 को एक कोशिश दूंगा, क्योंकि कोई विशिष्ट तारीख नहीं है जहां 2 उत्पादन के लिए तैयार होगा।
ssuperczynski



80
StackOverflow ने Quora के लिए एक अंतर छोड़ दिया। ऐसे सभी प्रश्न जो राय-आधारित हैं या एक अच्छे फिट के रूप में बंद हैं, अब Quora पर और स्टैकओवरफ़्लो की तुलना में अधिक खोज इंजन में दिखाई दे रहे हैं। बहुत शर्म की बात है। मुझे एसओ पर इस तरह का सवाल पूछने में कुछ भी गलत नहीं दिखता है, जहां प्रौद्योगिकी में इतनी गहराई और चौड़ाई है। हम सभी को इस तरह के सवालों के साथ हर रोज चुनौती दी जाती है, एक बात को दूसरे पर उठाते हुए। आइए वास्तविक प्रश्न को पूछे जाने और उत्तर देने की अनुमति दें।
प्रियांक

किसी भी 1.x रिलीज़ के लिए AngularJS नाम का उपयोग करें, और किसी भी 2+ रिलीज़ के लिए कोणीय का उपयोग करें। कोणीय और AngularJS के लिए ब्रांडिंग दिशानिर्देश देखें ।
georgeawg

जवाबों:


157

मुझे यह कहकर प्रस्तावना दें, मैं आपको और सभी को मान रहा हूं, जो पहले से ही इसे कोणीय 1 के साथ आराम से पढ़ रहे हैं ( अब नए संस्करणों के लिए केवल कोणीय के रूप में, कोणीयजेएस के रूप में संदर्भित किया जाता है )। यह कहा जा रहा है, आइए हम कोणीय 2+ में कुछ अतिरिक्त और महत्वपूर्ण अंतरों के बारे में जानें।

  1. उन्होंने एक कोणीय जोड़ा cli

आप रनिंग करके एक नया प्रोजेक्ट शुरू कर सकते हैं ng new [app name]। आप ng serve यहां अधिक जानें चलाकर अपनी परियोजना की सेवा कर सकते हैं: https://github.com/angular/angular-cli

  1. आपका कोणीय कोड ES6 टाइपस्क्रिप्ट में लिखा गया है और यह ब्राउजर में जावास्क्रिप्ट में रनटाइम पर संकलित है।

इस पर पूरी समझ पाने के लिए मैं अपने उत्तर के निचले भाग में मौजूद कुछ संसाधन सूची की जाँच करने की सलाह देता हूँ।

  1. प्रोजेक्ट संरचना

एक मूल संरचना में, आपके पास एक app/tsफ़ोल्डर होगा जहां आप अपना अधिकांश काम app/jsकरेंगे और आप app/jsएक .js.mapएक्सटेंशन के साथ फ़ोल्डर फ़ाइलों में पाएंगे । वे डीबगिंग के लिए आपके ब्राउज़र के लिए "अपने" .ts "फ़ाइल" मैप करते हैं क्योंकि आपका ब्राउज़र देशी टाइपस्क्रिप्ट नहीं पढ़ सकता है।

अपडेट : यह बीटा से बाहर है। प्रोजेक्ट संरचना थोड़ी बदल गई, ज्यादातर मामलों में और यदि आप कोणीय क्ली का उपयोग कर रहे हैं, तो आप src/app/फ़ोल्डर में काम करेंगे । एक स्टार्टर प्रोजेक्ट में, आपके पास निम्नलिखित होंगे।

app.component.css 
app.component.html
app.component.spec.ts
app.component.ts 
app.module.ts
index.ts

app.component.css : सीएसएस फ़ाइल आपको विशिष्ट का उपयोग करना चाहिएcomponent.html

app.component.html : एक दृश्य (app.component.js में घोषित चर)

app.component.spec.ts : परीक्षण के लिए उपयोग किया जाता हैapp.component.ts

app.component.ts : आपका कोड जो बांधता हैapp.component.html

app.module.ts : यह वह है जो आपके ऐप को बंद कर देता है और जहां आप सभी प्लगइन्स, घटकों, सेवाओं आदि को परिभाषित करते हैं। यह app.jsकोणीय में समतुल्य है।

index.ts प्रोजेक्ट फ़ाइलों को परिभाषित या निर्यात करने के लिए उपयोग किया जाता है

अतिरिक्त जानकारी:
प्रो टिप: आप ng generate [option] [name]नई सेवाओं, घटकों, पाइपों आदि को बनाने के लिए चला सकते हैं ।

इसके अलावा tsconfig.jsonफ़ाइल के रूप में अपनी परियोजना के लिए टीएस संकलन नियमों को परिभाषित करता है महत्वपूर्ण है।

अगर आप सोच रहे हैं कि मुझे एक नई भाषा सीखनी है? ... उह ... थोड़े, टाइपस्क्रिप्ट जावास्क्रिप्ट का एक सुपरसेट है। डरा मत करो; यह आपके विकास को आसान बनाने के लिए है। मुझे लगा कि इसके साथ खेलने के कुछ ही घंटों के बाद मुझे इस पर एक अच्छी पकड़ थी, और 3 दिनों के बाद यह सब खत्म हो गया।

  1. आप अपने HTML को उसी तरह से बांधते हैं, जैसे आप कोणीय 1 निर्देश में कैसे करेंगे। तो चर की तरह $scopeऔर $rootScopeपदावनत किया गया है।

यह एक आप निहित हो सकता है। कोणीय 2 अभी भी एक एमवी * है, लेकिन आप अपने घटकों के लिए कोड को बांधने के तरीके के रूप में ' घटकों ' का उपयोग करेंगे, उदाहरण के लिए, निम्नलिखित करें

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

    @Component({
         selector:'my-app',
         template: '<h1> Hello World! </h1>'
    })

    export class AppComponent {}

यहाँ importएक v1 नियंत्रक में अपने निर्भरता इंजेक्शन के रूप में बयान के बारे में सोचो । आप अपने पैकेजों importको आयात करने के लिए उपयोग करते हैं, जहां import {Component}आप कहते हैं कि आप अपने componentलिए बाध्य करना चाहते हैं HTML

सूचना @Componentएक डेकोरेटर आप selectorऔर template। यहाँ पर आप के selectorरूप में आपके द्वारा $scopeउपयोग किए जाने वाले के बारे में सोचें कि आप v1 का उपयोग करते हैं, directivesजहां का नाम वह selectorहै जिसे आप अपने HTML में बांधने के लिए उपयोग करते हैं जैसे

<my-app> </my-app>

<my-app>आपके कस्टम टैग का नाम कहां है जो आप उपयोग करेंगे जो आपके टेम्प्लेट में घोषित किए गए प्लेसहोल्डर के रूप में कार्य करेगा। यानी) <h1> Hello World! </h1>। जबकि यह v1 में निम्नलिखित की तरह दिखेगा:

एचटीएमएल

<h1>{{hello}}</h1>

जे एस

$scope.hello = "Hello World!"

लोडिंग संदेश उत्पन्न करने के लिए आप इन टैगों के बीच कुछ जोड़ सकते हैं, जैसे:

<my-app> Loading... </my-app> 

फिर यह लोडिंग संदेश के रूप में " लोड हो रहा है ... " प्रदर्शित करेगा ।

ध्यान दें कि जो घोषित किया गया templateहै वह पथ या कच्चा HTML है जिसे आप HTMLअपने selectorटैग में उपयोग कर रहे हैं ।


एंगुलर 1 का फुलर कार्यान्वयन इस तरह दिखाई देगा:

एचटीएमएल

<h1 ng-controller="myCtrl">{{hello}}</h1>

V1 में यह कुछ इस तरह दिखेगा

जे एस

angular.module('controller', [])



.controller('myCtrl', function( $scope) {
    $scope.hello = "Hello World!"
})

यह वही है जो मुझे वास्तव में v2 के बारे में पसंद है। मैंने पाया कि v1 में मेरे लिए निर्देशन एक कठिन सीखने की अवस्था थी और जब मैंने उन्हें खोजा था तब भी मुझे अक्सर यह पता CSSनहीं था कि मैं किस तरह का इरादा रखता हूं। मुझे लगता है यह आसान तरीका है।

V2 आपके एप्लिकेशन की आसान मापनीयता की अनुमति देता है क्योंकि आप v1 में अपने ऐप को आसान बना सकते हैं। मुझे यह तरीका पसंद है क्योंकि आप एक फाइल में अपने सभी काम करने वाले हिस्सों को कोणीय v1 में कई होने का विरोध कर सकते हैं।

V1 से v2 तक अपनी परियोजना को बदलने के बारे में क्या?


विकास टीम से मैंने जो सुना है, अगर आप अपने v1 प्रोजेक्ट को v2 में अपडेट करना चाहते हैं, तो आप बस के माध्यम से जा रहे हैं और हटाए गए ब्लब्स को हटाकर अपने $scopeएस को selectorएस के साथ बदल देंगे । मुझे यह वीडियो मददगार लगा। यह कुछ आयोनिक टीम के साथ है जो कंधे से कंधा मिलाकर काम कर रही है क्योंकि v2 का मोबाइल https://youtu.be/OZg4M_nWuIk पर ज्यादा फोकस है ।

अद्यतन: मैं कोणीय 2 के आधिकारिक कार्यान्वयन के रूप में उदाहरण जोड़कर अद्यतन किया गया है।

अद्यतन 2: यह अभी भी एक लोकप्रिय प्रश्न प्रतीत होता है, इसलिए मैंने सोचा कि मुझे कुछ संसाधन मिले जब मैंने कोणीय 2 के साथ काम करना शुरू किया।

सहायक संसाधन:

ES6 के बारे में अधिक जानकारी के लिए, मैं न्यू बोस्टन के ECMAScript 6 / ES6 के नए फीचर ट्यूटोरियल की जाँच करने की सलाह देता हूं - YouTube प्लेलिस्ट

टाइपस्क्रिप्ट फ़ंक्शन लिखने और यह देखने के लिए कि वे जावास्क्रिप्ट को कैसे टाइप करते हैं, टाइपस्क्रिप्ट भाषा खेल का मैदान देखें

कोणीय 2 में कोणीय 1 तुल्यता क्या है के कार्य विच्छेद द्वारा एक समारोह को देखने के लिए Angular.io - Cookbook -A1 A2 त्वरित संदर्भ देखें


अगर मैं Angular 1 & 2 दोनों को एक ही ऐप पर बनाए रखता हूं, तो क्या मैं पेज रेंडरिंग पर 5 बार परफॉर्मेंस बूस्ट करूंगा जहां Angular 2 पेज को एनेबल किया गया है?
संपत

1
@ संपत मुझे संदेह है कि सभी ऐप्स में 99% में कोई उल्लेखनीय प्रदर्शन परिवर्तन है। ए 2 के पीछे एएफएआईके अवधारणाएं ए 1 के पीछे के समान हैं, केवल सिंटैक्स थोड़ा बदल गया है।
ह्यूबर्ट ग्रेज्सकोविआक

यह एक अच्छी संक्षिप्त संक्षिप्त तुलना है। मैं इसे एक त्वरित संदर्भ के रूप में बुकमार्क करूंगा। मेरे से अधिक एक
फौड ब्यूक्रेडिन

39

यह आपको कोणीय 1 बनाम कोणीय 2 की तुलना को समझने में मदद कर सकता है।

कोणीय 1 से अधिक लाभ के लिए कोणीय 2 साबित हुआ:

  • यह पूरी तरह से घटक आधारित है।
  • बेहतर परिवर्तन का पता लगाने
  • समय संकलन (एओटी) के आगे प्रतिपादन गति में सुधार होता है।
  • टाइपस्क्रिप्ट मुख्य रूप से कोणीय 2 अनुप्रयोगों को विकसित करने के लिए उपयोग किया जाता है।
  • Angular 2 का Angular 1 पर बेहतर प्रदर्शन है।
  • Angular 2 में Angular 1 की तुलना में अधिक शक्तिशाली टेंपलेटिंग सिस्टम है।
  • कोणीय 2 में सरल एपीआई, आलसी लोडिंग, आसान डिबगिंग है।
  • Angular 2, Angular 1 की तुलना में बहुत अधिक परीक्षण योग्य है।
  • कोणीय 2 नेस्टेड घटक प्रदान करता है।
  • कोणीय 2 एक साथ दो से अधिक प्रणालियों को निष्पादित करने का एक तरीका प्रदान करता है।
  • और इसी तरह...

1
प्रदर्शन के संबंध में, क्या तुलना के लिए परीक्षण हैं? इसके अलावा, एसपीए किस स्थान पर प्रदर्शन 1 स्थान पर है? नेस्टेड घटक ए 1 में भी उपलब्ध हैं। कोई मतलब नहीं कि आप अंतिम बिंदु से क्या मतलब है, लेकिन AFAIK आप एक पृष्ठ पर कई एनजी क्षुधा हो सकता है
Hubert Grzeskowiak

1
कोणीय 2 का प्रदर्शन बेहतर है फिर कोणीय 1. यह पूरी तरह से गलत है, इसे कुछ प्रासंगिक बेंचमार्क के साथ साबित करें;)
amdev

2
हमें बताओ, यह कैसे गलत है? :) और अपने जवाब में कोणीय 1. प्रदर्शन की समस्याओं के लिए यहाँ है quirksmode.org/blog/archives/2015/01/the_problem_wit.html
अनिल सिंह

16

कोणीय 2 और कोणीय 1 मूल रूप से एक ही नाम के साथ एक अलग रूपरेखा है।

कोणीय 2 वेब मानकों की वर्तमान स्थिति और वेब के भविष्य की स्थिति (ES6 \ 7, इम्मुटिबिलिटी, कंपोनेंट्स, शैडो डोम, सर्विस वर्कर, मोबाइल कंपेटिबिलिटी, मॉड्यूल, टाइपस्क्रिप्ट वगैरह वगैरह) के लिए अधिक तैयार है।

कोणीय 2 ने कोणीय 1 में कई मुख्य विशेषताओं को मार दिया जैसे - नियंत्रक, $ गुंजाइश, निर्देश (@component एनोटेशन के साथ प्रतिस्थापित), मॉड्यूल परिभाषा, और भी बहुत कुछ, यहां तक ​​कि एनजी-रिपीट जैसी सरल चीजें भी वैसी नहीं छोड़ी हैं जैसी वह थी।

किसी भी तरह से, परिवर्तन अच्छा है, कोणीय 1.x में इसकी खामियां थीं, और कोणीय 2 भविष्य की वेब आवश्यकताओं के लिए अधिक तैयार है।

चीजों को योग करने के लिए - मैं आपको एक कोणीय 1.x परियोजना शुरू करने की सलाह नहीं देता - यह शायद ऐसा करने का सबसे खराब समय है क्योंकि आपको बाद में कोणीय 2 पर माइग्रेट करना होगा, मैं आपको कोणीय के बारे में कोणीय दिमाग चुनता हूं 2, google ने पहले ही angular 2 के साथ एक प्रोजेक्ट लॉन्च किया है, और जब तक आप प्रोजेक्ट को पूरा करते हैं तब तक angular 2 पहले से ही स्पॉटलाइट में होना चाहिए। अगर आप कुछ छुरा घोंपना चाहते हैं, तो आप प्रतिक्रिया के बारे में सोच सकते हैं और जेएस चौखटे के रूप में फ्लक्स और रिडक्स।

कोणीय 2 भयानक होने वाला है, इसमें कोई संदेह नहीं है।


8

कोई ढांचा परिपूर्ण नहीं है। आप कोणीय 1 में दोषों के बारे में पढ़ सकते हैं यहां और यहां पर । लेकिन इसका मतलब यह नहीं है कि यह बुरा है। सवाल यह है कि आप किस समस्या को हल कर रहे हैं। यदि आप एक साधारण ऐप को जल्दी से रोल आउट करना चाहते हैं, जो हल्का है, सीमित डेटा बाइंडिंग उपयोग के साथ तो आगे बढ़ें Angular 1. तेजी से प्रोटोटाइप को हल करने के लिए 6 साल पहले कोणीय 1 बनाया गया था जो यह बहुत अच्छा करता है। यहां तक ​​कि अगर आपका उपयोग मामला जटिल है तब भी आप कोणीय 1 का उपयोग कर सकते हैं, लेकिन तब आपको एक जटिल वेब ऐप बनाने के आसपास बारीकियों और सर्वोत्तम प्रथाओं के बारे में पता होना चाहिए। यदि आप सीखने के उद्देश्य के लिए एक ऐप विकसित कर रहे हैं, तो मैं उसे कोणीय 2 में स्थानांतरित करने का सुझाव दूंगा, जहां पर कोणीय का भविष्य है।


5

Angular v2 और ReactJs में एक स्टैंड-आउट विशेषता यह है कि वे दोनों विकास के नए वेब-घटक वास्तुकला को गले लगा चुके हैं। इसका मतलब यह है कि अब हम स्वतंत्र वेब-कंपोनेंट बना सकते हैं और उन्हें दुनिया की किसी भी वेबसाइट पर प्लग-इन कर सकते हैं, जिसमें इस वेब-कंपोनेंट का एक ही टेक्नोलॉजी स्टैक है। ठंडा! हाँ, बहुत अच्छा। :)

कोणीय v2 में अन्य सबसे प्रमुख बदलाव यह है कि यह प्राथमिक विकास भाषा है, टाइपस्क्रिप्ट के अलावा और कोई नहीं है। हालाँकि टाइपस्क्रिप्ट Microsoft से संबंधित है, और यह 2015 के जावास्क्रिप्ट (या ECMAScript6 / ES6) का सुपरसेट है, लेकिन इसमें कुछ विशेषताएं हैं जो बहुत आशाजनक हैं। मैं इस ट्यूटोरियल को पढ़ने के बाद पाठकों को टाइपस्क्रिप्ट को थोड़ा विस्तार से (जो कि निश्चित रूप से मजेदार है) चेकआउट करने की सलाह देगा।

यहाँ मैं कहूँगा कि कोणीय v1 और कोणीय v2 को परस्पर जोड़ने की कोशिश करने वाले लोग पाठकों को भ्रमित करते हैं, और मेरी विनम्र राय में, कोणीय v1 और कोणीय v2 को दो अलग-अलग रूपरेखाओं के रूप में माना जाना चाहिए। कोणीय v2 में, हमारे पास वेब अनुप्रयोगों को विकसित करने की वेब-घटक की अवधारणा है, जबकि कोणीय v1 में हमें नियंत्रकों के साथ खेलना है, और (दुख की बात है कि सौभाग्य से) कोई भी नियंत्रक Angular v2 में मौजूद नहीं हैं।


3
घटक 1.5 संस्करण के बाद से कोणीय 1 में भी उपलब्ध हैं। लेकिन वास्तव में, पहले तत्व-निर्देशों के साथ भी यह संभव था।
ह्यूबर्ट ग्रेज्सकोविआक

मुझे नहीं लगता कि यह सही है - दोनों कोणीय और रिएक्ट में घटक वास्तुकला है, लेकिन वेब घटक वास्तुकला नहीं है, जो कि w3c मानक है।
नितिन जाधव

3

सूचना के लिए एक बात कोणीय 2 टाइपस्क्रिप्ट का उपयोग कर रहा है।

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

आशा करता हूँ की ये काम करेगा।


धन्यवाद। कोणीय 1.x में प्रदर्शन के लिए निर्देश सबसे खराब हैं। आपको बहुत ही
लापरवाह

1

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

मैं कहूंगा, अगर आपको एक छोटी समय सीमा के लिए एक साइट को जल्दी से बढ़ाने की आवश्यकता है तो प्रसिद्ध 1 कोणीय का उपयोग करें, यदि आप एक लंबी परियोजना में हैं, और नए मुद्दों की जांच करने के लिए समय खर्च कर सकते हैं (जो कि आप पहली बार मुठभेड़ कर सकते हैं , जो एक बोनस हो सकता है यदि आप योगदान के बारे में सोचते हैं, तो आप कोणीय 2 समुदाय को दे सकते हैं) कोणीय 2 के साथ जाएं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.