AngularJS Services

உங்கள் சொந்த சர்வீஸ்களை உருவாக்கவும் அல்லது உள்ளமைக்கப்பட்ட சர்வீஸ்களைப் பயன்படுத்தவும்

AngularJS சர்வீஸ்கள்

AngularJS இல் நீங்கள் உங்கள் சொந்த சர்வீஸை உருவாக்கலாம், அல்லது பல உள்ளமைக்கப்பட்ட சர்வீஸ்களில் ஒன்றைப் பயன்படுத்தலாம்.

சர்வீஸ் என்றால் என்ன?

AngularJS இல், ஒரு சர்வீஸ் என்பது ஒரு செயல்பாடு அல்லது பொருள் ஆகும், இது உங்கள் AngularJS ஆப்ளிகேஷனுக்கு கிடைக்கும் மற்றும் அதற்கு மட்டுப்படுத்தப்பட்டது.

சர்வீஸ் என்றால் என்ன?

AngularJS க்கு சுமார் 30 உள்ளமைக்கப்பட்ட சர்வீஸ்கள் உள்ளன.

அவற்றில் ஒன்று $location சர்வீஸ் ஆகும்.

$location சர்வீஸ் தற்போதைய வலைப்பக்கத்தின் இடத்தைப் பற்றிய தகவல்களைத் திருப்பித் தரும் மெதட்களைக் கொண்டுள்ளது:

எடுத்துக்காட்டு

ஒரு கன்ட்ரோலரில் $location சர்வீஸைப் பயன்படுத்தவும்:

var app = angular.module('myApp', []);
app.controller('customersCtrl', function($scope, $location) {
    $scope.myUrl = $location.absUrl();
});

$location சர்வீஸ் ஒரு argument ஆக கன்ட்ரோலருக்குள் பாஸ் செய்யப்படுகிறது என்பதை கவனிக்கவும்.

கன்ட்ரோலரில் சர்வீஸைப் பயன்படுத்த, அது ஒரு சார்பு என வரையறுக்கப்பட வேண்டும்.

ஏன் சர்வீஸ்களைப் பயன்படுத்த வேண்டும்?

$location சர்வீஸ் போன்ற பல சர்வீஸ்களுக்கு, ஏற்கனவே DOM இல் உள்ள பொருள்களைப் பயன்படுத்தலாம் என்று தோன்றலாம், window.location பொருள் போன்றவை, மேலும் நீங்கள் செய்யலாம், ஆனால் அதற்கு சில வரம்புகள் இருக்கும், குறைந்தபட்சம் உங்கள் AngularJS ஆப்ளிகேஷனுக்கு.

AngularJS உங்கள் ஆப்ளிகேஷனை தொடர்ந்து மேற்பார்வையிடுகிறது, மேலும் மாற்றங்கள் மற்றும் நிகழ்வுகளை சரியாகக் கையாள, AngularJS நீங்கள் window.location பொருளுக்குப் பதிலாக $location சர்வீஸைப் பயன்படுத்த விரும்புகிறது.

AngularJS $location

AngularJS டைஜஸ்ட் சைக்கிளுடன் ஒருங்கிணைக்கப்பட்டது

Two-way data binding

டெஸ்ட் செய்ய எளிதானது

window.location

டைஜஸ்ட் சைக்கிளிலிருந்து வெளியே

No automatic updates

டெஸ்ட் செய்ய கடினம்

$http சர்வீஸ்

$http சர்வீஸ் AngularJS ஆப்ளிகேஷன்களில் மிகவும் பொதுவாகப் பயன்படுத்தப்படும் சர்வீஸ்களில் ஒன்றாகும்.

இந்த சர்வீஸ் சர்வருக்கு ஒரு கோரிக்கையைச் செய்கிறது, மேலும் பதிலைக் கையாள உங்கள் ஆப்ளிகேஷனை அனுமதிக்கிறது.

எடுத்துக்காட்டு

சர்வரில் இருந்து தரவைக் கோர $http சர்வீஸைப் பயன்படுத்தவும்:

var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope, $http) {
    $http.get("welcome.htm").then(function (response) {
        $scope.myWelcome = response.data;
    });
});

இந்த எடுத்துக்காட்டு $http சர்வீஸின் மிகவும் எளிய பயன்பாட்டை நிரூபிக்கிறது.

$http சர்வீஸ் பற்றி மேலும்:

$http சர்வீஸ் பற்றிய முழுமையான தகவலுக்கு, எங்கள் AngularJS HTTP டுடோரியலைப் பார்க்கவும்.

$timeout சர்வீஸ்

$timeout சர்வீஸ் என்பது window.setTimeout செயல்பாட்டின் AngularJS பதிப்பாகும்.

எடுத்துக்காட்டு

இரண்டு வினாடிகளுக்குப் பிறகு ஒரு புதிய செய்தியைக் காண்பி:

var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope, $timeout) {
    $scope.myHeader = "Hello World!";
    $timeout(function () {
        $scope.myHeader = "How are you today?";
    }, 2000);
});

$timeout vs setTimeout

$timeout: AngularJS டைஜஸ்ட் சைக்கிளுடன் ஒருங்கிணைக்கப்பட்டது, தானாக scope புதுப்பிப்புகள்

setTimeout: நேடிவ் JavaScript, கைமுறையாக $scope.$apply() அழைக்க வேண்டும்

$interval சர்வீஸ்

$interval சர்வீஸ் என்பது window.setInterval செயல்பாட்டின் AngularJS பதிப்பாகும்.

எடுத்துக்காட்டு

ஒவ்வொரு வினாடியும் நேரத்தைக் காண்பி:

var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope, $interval) {
    $scope.theTime = new Date().toLocaleTimeString();
    $interval(function () {
        $scope.theTime = new Date().toLocaleTimeString();
    }, 1000);
});

முக்கிய கவனம்:

$interval சர்வீஸைப் பயன்படுத்தும் போது, நீங்கள் அதை சரியாக நிறுத்தவும் முடியும் என்பதை உறுதி செய்யுங்கள். பக்கத்திலிருந்து வெளியேறும்போது $interval ஐ நிறுத்த மறக்காதீர்கள், இல்லையெனில் மெமரி கசிவு ஏற்படலாம்.

உங்கள் சொந்த சர்வீஸை உருவாக்கவும்

உங்கள் சொந்த சர்வீஸை உருவாக்க, உங்கள் சர்வீஸை மாட்யூலுடன் இணைக்கவும்:

hexafy என்ற பெயரில் ஒரு சர்வீஸை உருவாக்கவும்:

app.service('hexafy', function() {
    this.myFunc = function (x) {
        return x.toString(16);
    }
});

உங்கள் தனிப்பயன் சர்வீஸைப் பயன்படுத்த, கன்ட்ரோலரை வரையறுக்கும் போது அதை ஒரு சார்பு என சேர்க்கவும்:

எடுத்துக்காட்டு

ஒரு எண்ணை ஹெக்ஸாடெசிமல் எண்ணாக மாற்ற hexafy என்ற தனிப்பயன் சர்வீஸைப் பயன்படுத்தவும்:

app.controller('myCtrl', function($scope, hexafy) {
    $scope.hex = hexafy.myFunc(255);
});

ஒரு பில்டருக்குள் தனிப்பயன் சர்வீஸைப் பயன்படுத்தவும்

நீங்கள் ஒரு சர்வீஸை உருவாக்கி, அதை உங்கள் ஆப்ளிகேஷனுடன் இணைத்தவுடன், எந்த கன்ட்ரோலர், டைரக்டிவ், பில்டர் அல்லது மற்ற சர்வீஸ்களுக்குள் கூட சர்வீஸைப் பயன்படுத்தலாம்.

ஒரு பில்டருக்குள் சர்வீஸைப் பயன்படுத்த, பில்டரை வரையறுக்கும் போது அதை ஒரு சார்பு என சேர்க்கவும்:

myFormat பில்டரில் பயன்படுத்தப்படும் hexafy சர்வீஸ்:

app.filter('myFormat',['hexafy', function(hexafy) {
    return function(x) {
        return hexafy.myFunc(x);
    };
}]);

ஒரு பொருளிலிருந்து அல்லது வரிசையிலிருந்து மதிப்புகளைக் காண்பிக்கும் போது பில்டரைப் பயன்படுத்தலாம்:

<ul>
    <li ng-repeat="x in counts">{{x | myFormat}}</li>
</ul>

பொதுவான உள்ளமைக்கப்பட்ட சர்வீஸ்கள்

சர்வீஸ் விளக்கம் பயன்பாடு
$http HTTP கோரிக்கைகளை செயல்படுத்துகிறது சர்வர் தொடர்பு
$location பிரௌசர் URL ஐ கையாள்கிறது URL மேலாண்மை
$timeout window.setTimeout wrapper தாமத செயல்பாடுகள்
$interval window.setInterval wrapper தொடர் செயல்பாடுகள்
$rootScope மூல scope object குளோபல் டேட்டா
$filter பில்டர்களை அணுகுகிறது தரவு வடிவமைப்பு
$window பிரௌசர் window object reference பிரௌசர் API அணுகல்
$document பிரௌசர் document object reference DOM அணுகல்

பயிற்சிகள் மூலம் கற்றல்

ஒரு கன்ட்ரோலரில் சர்வீஸைப் பயன்படுத்துவது எப்படி?

சர்வீஸை கன்ட்ரோலர் function argument ஆக சேர்க்கவும்
✓ சரி! சர்வீஸ்கள் கன்ட்ரோலர் function arguments ஆக பாஸ் செய்யப்படுகின்றன
சர்வீஸை HTML இல் வரையறுக்கவும்
✗ தவறு! சர்வீஸ்கள் JavaScript இல் வரையறுக்கப்படுகின்றன
சர்வீஸை CSS இல் வரையறுக்கவும்
✗ தவறு! சர்வீஸ்கள் CSS உடன் தொடர்பு இல்லை
சர்வீஸை AngularJS மாட்யூலில் பதிவு செய்யவும்
✓ சரி! சர்வீஸ்கள் முதலில் மாட்யூலில் பதிவு செய்யப்பட வேண்டும்

சர்வீஸ் சிறந்த நடைமுறைகள்

Single Responsibility

ஒவ்வொரு சர்வீஸும் ஒரு குறிப்பிட்ட பொறுப்பை மட்டுமே கொண்டிருக்க வேண்டும்

Dependency Injection

சர்வீஸ்களை கன்ட்ரோலர்களில் நேரடியாக உருவாக்காமல் inject செய்யவும்

கன்ட்ரோலரில் நேரடி லாஜிக் தவிர்க்கவும்

மீண்டும் பயன்படுத்தக்கூடிய லாஜிக் அனைத்தையும் சர்வீஸ்களுக்கு நகர்த்தவும்

Singleton Pattern

AngularJS சர்வீஸ்கள் Singleton ஆகும் - ஒரு மாதிரி முழு ஆப்ளிகேஷனிலும் பகிரப்படுகிறது

Testable Services

சர்வீஸ்களை சுயாதீனமாக டெஸ்ட் செய்ய எளிதாக வடிவமைக்கவும்

சர்வீஸ் உருவாக்கும் முறைகள்

.service()

கன்ஸ்ட்ரக்டர் function

new keyword உடன் instantiated

Properties/methods: this keyword

.factory()

Factory function

function இலிருந்து return value

மிகவும் நெகிழ்வானது

.provider()

மிகவும் கான்ஃபிகரேபிள்

கான்ஃபிக் phase இல் கான்ஃபிகர் செய்ய முடியும்

மிகவும் சிக்கலானது