CLI संदर्भ
CLI संदर्भ (Command Line Interface Reference) एंगुलर विकास का एक मूलभूत और शक्तिशाली भाग है, जो डेवलपर्स को आधुनिक वेब एप्लिकेशन और SPA (Single Page Applications) के निर्माण में अत्यधिक दक्षता प्रदान करता है। एंगुलर CLI के माध्यम से हम न केवल प्रोजेक्ट स्ट्रक्चर को आसानी से तैयार कर सकते हैं, बल्कि कॉम्पोनेंट्स, सर्विसेज़, पाइप्स, मॉड्यूल्स और डायरेक्टिव्स जैसे तत्वों को स्वचालित रूप से जेनरेट और मैनेज भी कर सकते हैं। CLI संदर्भ डेवलपर को जटिल मैन्युअल कॉन्फ़िगरेशन से मुक्त करता है और एक संगठित, स्केलेबल कोडबेस के निर्माण में सहायता करता है।
एंगुलर में CLI का उपयोग तब किया जाता है जब डेवलपर को कोड जेनरेशन, बिल्ड, टेस्टिंग, या डिप्लॉयमेंट के कार्यों को स्वचालित करना हो। CLI संदर्भ एंगुलर के प्रमुख सिद्धांतों — जैसे कि कॉम्पोनेंट-बेस्ड आर्किटेक्चर, स्टेट मैनेजमेंट, डेटा फ्लो और लाइफसायकल हुक्स — को समग्र रूप से एकीकृत करता है। इसके माध्यम से डेवलपर यह सीखता है कि किस प्रकार CLI का उपयोग करते हुए परफॉर्मेंस अनुकूलन, रीयूज़ेबल कॉम्पोनेंट्स का निर्माण, और ऐप की संरचना को संगठित तरीके से नियंत्रित किया जा सकता है।
इस अनुभाग में आप CLI संदर्भ के माध्यम से एंगुलर प्रोजेक्ट्स को कैसे मैनेज करना है, यह सीखेंगे — जिसमें प्रोजेक्ट इनिशियलाइज़ेशन, कॉम्पोनेंट जेनरेशन, बिल्ड कमांड्स, और प्रोडक्शन रेडी डिप्लॉयमेंट जैसी अवधारणाएँ शामिल हैं।
मूल उदाहरण
typescript// Angular CLI संदर्भ का मूल उदाहरण
// एक नया कॉम्पोनेंट CLI से बनाएं और उसमें स्टेट हैंडलिंग शामिल करें
// Command: ng generate component counter
import { Component } from '@angular/core';
@Component({
selector: 'app-counter',
template: ` <div class="counter-container"> <h2>काउंटर कॉम्पोनेंट</h2> <p>वर्तमान मान: {{ count }}</p> <button (click)="increment()">बढ़ाएं</button> <button (click)="decrement()">घटाएं</button> </div>
`,
styles: [` .counter-container {
text-align: center;
padding: 16px;
background-color: #f2f2f2;
border-radius: 8px;
}
`]
})
export class CounterComponent {
count = 0;
increment() {
this.count++;
}
decrement() {
if (this.count > 0) {
this.count--;
}
}
}
ऊपर दिया गया उदाहरण एंगुलर CLI संदर्भ के वास्तविक उपयोग को प्रदर्शित करता है। CLI कमांड ng generate component counter
स्वतः ही एक नया कॉम्पोनेंट बनाता है जिसमें TypeScript, HTML, CSS, और टेस्ट फाइलें शामिल होती हैं। यह CLI का प्रमुख लाभ है — डेवलपर को फाइल संरचना या मैनुअल इंटीग्रेशन के झंझट से बचाते हुए कार्य को मानकीकृत तरीके से तेज़ी से पूरा करना।
इस कॉम्पोनेंट में count
एक स्टेट वेरिएबल के रूप में कार्य करता है, जो UI डेटा फ्लो को नियंत्रित करता है। बटन क्लिक पर इवेंट बाइंडिंग (click)
का उपयोग करते हुए हमने increment()
और decrement()
मेथड्स को जोड़ा है — यह एंगुलर में इवेंट हैंडलिंग और डेटा बाइंडिंग की शक्ति को दर्शाता है।
यह कॉम्पोनेंट रीयूज़ेबल डिज़ाइन सिद्धांतों पर आधारित है, और CLI के माध्यम से जेनरेट किए गए टेम्पलेट्स डेवलपर्स को बेस्ट प्रैक्टिसेज़ अपनाने के लिए प्रेरित करते हैं। CLI स्वतः ही आवश्यक मॉड्यूल इम्पोर्ट करता है और मॉड्यूल डिक्लेरेशन में नया कॉम्पोनेंट जोड़ता है। इस प्रक्रिया से एप्लिकेशन के स्टेट और डेटा फ्लो को सुरक्षित रूप से बनाए रखना आसान हो जाता है। यह पैटर्न एंगुलर के लाइफसायकल और कंपोनेंट-ड्रिवन आर्किटेक्चर के अनुरूप है।
व्यावहारिक उदाहरण
typescript// CLI संदर्भ का व्यावहारिक उदाहरण - डेटा फ्लो और लाइफसायकल के साथ
// Command: ng generate service data
import { Injectable, OnInit } from '@angular/core';
import { BehaviorSubject } from 'rxjs';
@Injectable({
providedIn: 'root'
})
export class DataService {
private dataSource = new BehaviorSubject<number>(0);
currentData = this.dataSource.asObservable();
updateData(value: number) {
this.dataSource.next(value);
}
}
// Command: ng generate component display
import { Component, OnInit } from '@angular/core';
import { DataService } from '../data.service';
@Component({
selector: 'app-display',
template: ` <h3>डेटा प्रदर्शन</h3> <p>वर्तमान मान: {{ currentValue }}</p> <button (click)="changeValue()">मान बदलें</button>
`
})
export class DisplayComponent implements OnInit {
currentValue!: number;
constructor(private dataService: DataService) {}
ngOnInit() {
this.dataService.currentData.subscribe(value => this.currentValue = value);
}
changeValue() {
const newVal = this.currentValue + 10;
this.dataService.updateData(newVal);
}
}
Advanced एंगुलर Implementation
typescript// उन्नत CLI संदर्भ कार्यान्वयन - त्रुटि प्रबंधन और परफॉर्मेंस अनुकूलन सहित
// Command: ng build --configuration production
import { Component, ErrorHandler, Injectable } from '@angular/core';
import { DataService } from './data.service';
@Injectable()
export class GlobalErrorHandler implements ErrorHandler {
handleError(error: any) {
console.error('एप्लिकेशन में त्रुटि:', error);
alert('कुछ गलत हुआ, कृपया पुनः प्रयास करें!');
}
}
@Component({
selector: 'app-root',
template: ` <div class="app-container"> <app-display></app-display> </div>
`,
providers: [{ provide: ErrorHandler, useClass: GlobalErrorHandler }]
})
export class AppComponent {}
एंगुलर CLI संदर्भ में सर्वोत्तम अभ्यास (Best Practices) और आम गलतियाँ दोनों का ज्ञान आवश्यक है। CLI कमांड्स का प्रयोग करते समय हमेशा स्पष्ट नामकरण और मॉड्यूल संरचना बनाए रखें। उदाहरण के लिए, प्रत्येक कॉम्पोनेंट को उसके विशिष्ट दायरे में ही परिभाषित करें और अनावश्यक डेटा पासिंग (prop drilling) से बचें।
स्टेट मैनेजमेंट के लिए RxJS Observables और BehaviorSubjects का प्रयोग करें — यह बेहतर परफॉर्मेंस और डेटा फ्लो सुनिश्चित करता है। CLI द्वारा ऑटोमेटेड बिल्ड्स (ng build --prod
) और टेस्टिंग (ng test
) के दौरान परफॉर्मेंस मॉनिटरिंग और त्रुटि जाँच करें।
आम त्रुटियों में शामिल हैं — स्टेट को सीधे म्यूटेट करना, अनावश्यक DOM रेंडरिंग, और सब्सक्रिप्शन को अनसब्सक्राइब न करना। सुरक्षा के लिए CLI द्वारा प्रदत्त बिल्ड एन्वायरनमेंट वेरिएबल्स का उपयोग करें और ng lint
के साथ कोड क्वालिटी बनाए रखें। CLI संदर्भ के उचित उपयोग से ऐप का लोड समय घटता है, त्रुटियाँ कम होती हैं और विकास की गति में उल्लेखनीय सुधार होता है।
📊 संपूर्ण संदर्भ
एंगुलर Element/Method | Description | Syntax | Example | Notes |
---|---|---|---|---|
ng new | नया एंगुलर प्रोजेक्ट बनाएँ | ng new project-name | ng new myApp | प्रोजेक्ट स्ट्रक्चर तैयार करता है |
ng serve | एप्लिकेशन सर्व करें | ng serve | ng serve --open | लोकल सर्वर चालू करता है |
ng generate component | कॉम्पोनेंट बनाएं | ng g c name | ng g c header | CLI स्वचालित फाइल संरचना बनाता है |
ng generate service | सर्विस बनाएं | ng g s name | ng g s auth | Dependency Injection के साथ |
ng build | प्रोजेक्ट बिल्ड करें | ng build | ng build --prod | Production के लिए ऑप्टिमाइज़्ड आउटपुट |
ng test | टेस्ट चलाएं | ng test | ng test --watch=false | Karma टेस्ट रनर का प्रयोग |
ng lint | कोड विश्लेषण | ng lint | ng lint app | TSLint के साथ क्वालिटी चेक |
ng e2e | एंड-टू-एंड टेस्टिंग | ng e2e | ng e2e app-e2e | Protractor द्वारा |
ng add | लाइब्रेरी जोड़ें | ng add package | ng add @angular/material | Dependencies स्वचालित जोड़ता है |
ng update | अपडेट करें | ng update | ng update @angular/core | वर्ज़न अपग्रेड्स के लिए |
ng doc | डॉक्युमेंटेशन देखें | ng doc package | ng doc router | CLI डॉक एक्सेस करता है |
ng version | वर्ज़न जानकारी देखें | ng version | - | एंगुलर CLI संस्करण दिखाता है |
ng deploy | प्रोजेक्ट डिप्लॉय करें | ng deploy | ng deploy firebase | क्लाउड प्लेटफ़ॉर्म पर तैनात करता है |
ng config | CLI कॉन्फ़िगरेशन बदलें | ng config key value | ng config cli.warnings.versionMismatch false | CLI व्यवहार नियंत्रित करता है |
ng analytics | एनालिटिक्स मैनेज करें | ng analytics | ng analytics off | डेटा ट्रैकिंग सक्षम/अक्षम करता है |
📊 Complete एंगुलर Properties Reference
Property | Values | Default | Description | एंगुलर Support |
---|---|---|---|---|
prefix | string | 'app' | कॉम्पोनेंट नाम के लिए प्रीफ़िक्स सेट करता है | v9+ |
inlineStyle | boolean | false | स्टाइल फाइल अलग न बनाकर इनलाइन रखता है | v8+ |
inlineTemplate | boolean | false | टेम्पलेट को TS फाइल में इनलाइन करता है | v8+ |
skipTests | boolean | false | टेस्ट फाइलें न बनाए | v9+ |
routing | boolean | true | राउटिंग मॉड्यूल जोड़ता है | v8+ |
style | css, scss, sass, less | css | स्टाइल फॉर्मेट चुनें | v9+ |
strict | boolean | true | सख्त टाइपिंग सक्षम करता है | v10+ |
skipInstall | boolean | false | npm install चरण छोड़ता है | v9+ |
directory | string | - | प्रोजेक्ट के लिए निर्देशिका निर्धारित करता है | v9+ |
dryRun | boolean | false | केवल सिमुलेशन चलाता है | v9+ |
defaults | object | - | CLI के डिफॉल्ट व्यवहार परिभाषित करता है | v10+ |
verbose | boolean | false | विस्तृत CLI आउटपुट दिखाता है | v9+ |
सारांश और अगले चरण:
CLI संदर्भ एंगुलर विकास के लिए रीढ़ की हड्डी के समान है। इस अध्याय से आपने सीखा कि कैसे CLI का उपयोग कर कॉम्पोनेंट, सर्विस, और मॉड्यूल्स को जेनरेट किया जा सकता है, स्टेट मैनेजमेंट को सरल बनाया जा सकता है, और बिल्ड व डिप्लॉयमेंट को स्वचालित किया जा सकता है। यह ज्ञान डेवलपर्स को बड़े पैमाने पर ऐप्स में संरचना और परफॉर्मेंस को नियंत्रित करने में सक्षम बनाता है।
अगले चरणों के रूप में, एंगुलर राउटिंग, RxJS आधारित स्टेट मैनेजमेंट, Lazy Loading और एंगुलर Universal जैसे विषयों का अध्ययन करें। CLI के साथ निरंतर अभ्यास करने से आप production-ready एप्लिकेशन तेजी से और सुरक्षित रूप से बना पाएँगे।
🧠 अपने ज्ञान की परीक्षा करें
अपने ज्ञान की परीक्षा करें
इस इंटरैक्टिव क्विज़ के साथ अपनी चुनौती लें और देखें कि आप विषय को कितनी अच्छी तरह समझते हैं
📝 निर्देश
- हर प्रश्न को ध्यान से पढ़ें
- हर प्रश्न के लिए सबसे अच्छा उत्तर चुनें
- आप जितनी बार चाहें क्विज़ दोबारा दे सकते हैं
- आपकी प्रगति शीर्ष पर दिखाई जाएगी