Veb proqramlaşdırma sürətlə inkişaf etdikcə, JavaScript əsaslı üç məşhur "front-end" çərçivə (framework) diqqəti cəlb edir: ReactJS, Angular və VueJS. Bu bloq yazısında onların əsas fərqləri, üstünlükləri və çatışmazlıqları barədə danışacağıq. Məqsəd - sizə hansı daha uyğun olduğunu müəyyənləşdirməkdə kömək etməkdir.
ReactJS - bu Facebook (Meta) tərəfindən yaradılmış, komponentlərə əsaslanan kitabxanadır (library). O çərçivə deyil, çünki React yalnız "view layer" üçün cavabdehdir, digər strukturlar adətən əlavə kitabxanalarla istifadə olunur.
React yalnız lazım olan şeyləri təklif edir. Məsələn, routing (yolları idarə etmək) və ya qlobal state management (məlumatların idarə olunması) üçün əlavə kitabxanalar əlavə etməlisiniz.
Virtual DOM React-in ən güclü xüsusiyyətlərindən biridir. UI-nin dəyişməsi lazım olduqda, React əvvəlcə virtual DOM-da hesablamalar aparır, sonra real DOM-da lazımi dəyişiklikləri həyata keçirir. Bu, adətən məhsuldarlığı artırır.
React nisbətən asan öyrənilir, lakin siz əlavə kitabxanalarla (məsələn, React Router, Redux və s.) işləməyi də öyrənməlisiniz.
import React from 'react';
// Kiçik bir React komponenti
function HelloWorld() {
// return-da bir neçə tag qaytarmaq üçün Fragment və ya <> </> istifadə olunur
return (
<>
<h1>Hello World!</h1>
<p>Bu React komponentinin nümunəsidir</p>
</>
);
}
export default HelloWorld;
Angular - bu Google tərəfindən yaradılmış tam "front-end" çərçivəsidir və TypeScript üzərində işləyir. O bütün vacib funksiyaları bir yerdə təmin edir.
Angular komponentlər, xidmətlər və modullar kimi tamamilə dəqiq struktura malikdir.
TypeScript - bu, JavaScript-in genişləndirilmiş versiyasıdır (superset).
import { Component } from '@angular/core';
@Component({
selector: 'app-hello-world',
template: `
<!-- Şablonda iki tərəfli data bağlanması görünüşü -->
<h1>Hello World</h1>
<p>Bu Angular komponent nümunəsidir</p>
`
})
export class HelloWorldComponent {
// Angularda TypeScript-dən istifadə edirik
}
VueJS - bu Evan You tərəfindən yaradılmış "progressive" çərçivədir.
<template>
<!-- Vue-dakı şablon hissəsində məlumat {{ }} ilə çağırılır -->
<div>
<h1>Hello World</h1>
<p>Bu Vue komponentinin nümunəsidir</p>
</div>
</template>
<script>
export default {
name: 'HelloWorld',
data() {
// data - komponentdəki məlumatları saxlayır
return {
message: 'Vue komponentindən salam!'
};
}
};
</script>
<style scoped>
/* Scoped style - yalnız bu komponent daxilində işləyir */
h1 {
color: #42b983;
}
</style>