(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer','GTM-5LHNRP9'); Meistrite võrdlus: Angular vs Vue - The Codest
The Codest
  • Meie kohta
  • Teenused
    • Tarkvaraarendus
      • Frontend arendus
      • Backend arendus
    • Staff Augmentation
      • Frontend arendajad
      • Backend arendajad
      • Andmeinsenerid
      • Pilveinsenerid
      • QA insenerid
      • Muud
    • See nõuandev
      • Audit ja nõustamine
  • Tööstusharud
    • Fintech & pangandus
    • E-commerce
    • Adtech
    • Healthtech
    • Tootmine
    • Logistika
    • Autotööstus
    • IOT
  • Väärtus
    • CEO
    • CTO
    • Tarnejuht
  • Meie meeskond
  • Case Studies
  • Tea kuidas
    • Blogi
    • Kohtumised
    • Veebiseminarid
    • Ressursid
Karjäärivõimalused Võtke ühendust
  • Meie kohta
  • Teenused
    • Tarkvaraarendus
      • Frontend arendus
      • Backend arendus
    • Staff Augmentation
      • Frontend arendajad
      • Backend arendajad
      • Andmeinsenerid
      • Pilveinsenerid
      • QA insenerid
      • Muud
    • See nõuandev
      • Audit ja nõustamine
  • Väärtus
    • CEO
    • CTO
    • Tarnejuht
  • Meie meeskond
  • Case Studies
  • Tea kuidas
    • Blogi
    • Kohtumised
    • Veebiseminarid
    • Ressursid
Karjäärivõimalused Võtke ühendust
Tagasi nool TAGASI
2021-12-22
Tarkvaraarendus

Meistrite võrdlus: Angular vs Vue

Oliwia Oremek

Praegu on olemas mõned üldkasutatavad ja selle loojate poolt pidevalt arendatavad frontaalraamistikud, millest igaüks erineb pisut teisest. Ja ometi võib neil olla midagi ühist. Siin on võrdlus, mis põhineb arendusprotsessil - Google'i Angular vs. avatud lähtekoodiga Vue.js:

Projekti loomine

Kiireim viis käivitada projekt on kasutades Raamistike autorite poolt pakutav CLI. Mõlemal on päris hea teenus; siiski on mõned erinevused, st, Vue on rohkem võimalusi, seega saate projekti algusest peale täpselt oma vajadustele kohandada. Saate valida Vue versioon, kas teil on vaja kasutada marsruutimist. Tüüptekst, CSS eelprotsessorid või seadistada linter kohe ette. Samuti võimaldab see teil otsustada, kas soovite luua teste (unit või E2E).

Vue CLI

Angular on kaasas generaator, mis võimaldab luua komponente, teenuseid, liideseid ja direktiive otse konsoolist, mis minu kogemuse põhjal on väga mugav, kuna ei ole vaja käsitsi luua kaustu, faile ja üleliigseid kood käsitsi, eriti kui kasutate nt MVC mustrit. Typescript tuleb karbist välja koos Angular ja sunnib teid seda kasutama. Kui te ei ole seda veel teinud, siis siin on mugav sissejuhatus, miks te peaksite seda proovima - saate seda vaadata siin.

Alguses, Angular CLI küsib teilt ainult marsruutimise või eelistatud CSS eelprotsessorite kohta, mis võrreldes Vue, ei jäta teile palju ruumi oma rakenduse struktuuri ja stiili üle otsustamiseks. Aga kui te järgite konventsiooni, mida ta palub kasutada, siis CLI juhib teid kogu aeg.

Angular CLI

Projekti struktuur

Vue kasutab SFC-d (Single File Components), mis teeb uue arendaja jaoks raamistiku kasutamise alustamise ja koodis orienteerumise üsna lihtsaks.

Direktiivid

Vue on samuti karbist välja toodud sellised direktiivid nagu `v-if, v-for`, mida on väga intuitiivne kasutada, kuna see on peaaegu koopia programmi Angular need. Vue kasutab sama konventsiooni kahesuunalise andmed sidumine (lihtsalt eesliitega, st v- in `v-mudel`) ja lisades @/v-on, mis näitab, et me reageerime millelegi. Angular eraldab selle, näidates, millises suunas me läheme, kasutades sulgusid sündmuse sidumiseks ja nurksulgusid omaduste sidumiseks, st ,`(muutus), [ngStyle], [(ngModel)]`.

Veebilehel Vue, struktuur ise on lihtne, stiililehtede ja loogika jaoks ei ole vaja teha eraldi faile, nii et kõik on organiseeritud ja ligipääsetav. Muidugi, Vue on kaasas stiilijuhend, kust leiate soovituslikud reeglid, mida projekti loomisel järgida; siiski on ainult mõned kohustuslikud reeglid. 

Sündmused

I sel juhul, Vue on jälle mugavam lahendus; nimelt, et saata sündmus lapskomponendist vanemale, tuleb vaid (kasutades Vue 3 Koostis API ) võtab meetodi konteksti objektist seadistuses ja lihtsalt väljastab selle, mida hetkel vaja on:

setup(props, { emit }) { const componentMethodYouWantToUseSomewhere = () => { emit('customNameOfYourEvent', dataYouWantToPass); } }

Seda saab teha ka otse mallile vastuseks mõnele muule sündmusele.

Veebilehel Angular, tuleb kõigepealt defineerida EventEmitter järgmiselt:

@Output() customNameForYourEmitter = new EventEmitter();

Seejärel peate kutsuma EventEmitterile emitmeetodi:

this.customNameForYourEmitter.emit(this.theDataYouWantToPass);

Mänguajad/sisu projektsioon

Mõlemas raamistikus saab sisu (nii ühe kui ka mitme komponendi) hõlpsasti üle viia vanemkomponendist selle lapsesse, lisades lihtsalt täiendava html-i laps-tagide sisse, väikeste erinevustega:

Vue:

`` 

Angular:

Vaikimisi:
    

Nimeline pesa:
<p yourname>
   See on nimeline pesa
  </p>
  <p>See on vaikimisi pesa</p>

Kui aga soovite oma rakenduse mõningaid osi tingimuslikult renderdada, Vue on intuitiivsem kui Angular ja võimaldab seda teha kiiremini, lisades v-if direktiivi oma <template> sildi, mis võimaldab teil renderdada ainult need osad, mis on hetkel vajalikud.




  

Kuigi ng-content on alati renderdatud, tuleb sel juhul kasutada funktsiooni ng-templateja hiljem luua oma kohandatud direktiiv:

<div *ngif="conditionToBeMet" [id]="contentId">
    <ng-container [ngtemplateoutlet]="content.templateRef"></ng-container>
</div>
@Direktiiv({
  selector: '[customDirectiveName]'
})
export class CustomDirective {
  constructor(public templateRef: TemplateRef) {}
}

ja sellepärast, et nimi, mille te annate oma ng-template atribuuti, teab Angular, mida tuleks esitada:

Samuti soovite komponendi sees projitseerida oma malli, et seda saaks kasutada @ContentChild et saada õige mall:

@ContentChild(CustomDirective) content!: CustomDirective;

Teenindus vs kauplus

Angular julgustab teid kasutama MVC disainimustrit, kus saate kasutada mudeli jaoks teenuseid. Selle tõttu peate õppima sõltuvuse süstimise mustrit, et oma rakenduses andmeid vabalt kasutada. See võimaldab teil eraldada oma kõrvalmõjusid, st API-kõnesid, ja kasutada sama loogikat kogu projektis, süstides osad, mida te hetkel vajate, mis teeb sellest ka modulaarse lähenemise.

Angular ka Ngrx/store raamistikuga, mis põhineb Redux muster juhul, kui soovite kasutada reaktiivsemat lähenemist RxJs vaatlusobjektidega. See sisaldab Actions, mida kasutatakse unikaalsete sündmuste saatmiseks komponentidest ja/või teenustest, Effects, mis tegelevad kõrvalmõjudega või asünkroonsete tegevustega, mida soovite sooritada, ja Reducers, mis muudavad teie olekut.

Veebilehel Vue, on populaarne lähenemine kasutada oleku haldamiseks Vuex raamatukogu, mis sisaldab ka selliseid vahendeid nagu Actions, Mutations ja Getters, nagu Ngrx/store, mis aitavad teil oma rakenduse olekut hallata ja korraldada. Saate seda moduleerida, määrates oma vaadetele erinevaid salvestusi, st kasutaja salvestus või ostukorvi salvestus, kuid see võib põhjustada probleeme nimede vahega, välja arvatud juhul, kui te kasutate namespaced: true omadus teie poe deklaratsioonis.

Siin on võrreldud teenustel põhinevat lähenemisviisi ja Vuex lähenemisviisi, kui ülesanne on hankida mõned toode andmed teie kaupluse jaoks:

@Injectable() // decorator, et näidata, et me tahame seda hiljem DI-s kasutada.
export class ProductsService {
  private products: Product[] = [];

  constructor(private backend: BackendService) { }

  getProducts() {
    this.backend.getAll(Product).then( (products: Product[]) => { {
      //teha oma toodetega mida iganes sa soovid
    });
    return this.products;
  }
}

Seejärel süstime komponendis meie kasutatava teenuse:
constructor(private service: HeroService) { }

Veebilehel Vue, saadame lihtsalt toimingu, mis teeb backend-kõne jaoks us:

store.dispatch(getAllProducts)

ja actions.ts faili määratleme tegevuse:

tegevused: {
getAllProducts ({ commit }){
    commit('setProducts', await getProducts(););); // hangib andmed ja paneb tulemused poodi.
}}

Andmete hankimine

Koos Vue, võite kasutada Axios/Fetch'i või mis tahes raamatukogu, mida soovite kasutada, see on tõesti lihtne - te lihtsalt käsitlete asünkroonseid kõnesid lubaduste abil või mis iganes lähenemine teile kõige paremini sobib.

proovi {
http.get('https://url.to.get.data')
    .then(res => res.json())
    .then(data => console.log('do whatever is needed'))
} catch (e) {
    //handle error
}

Angular tuleb koos HttpClient raamatukoguga, mis kasutab observables, mis viib teid veel ühe eelise juurde - et seda korralikult kasutada ja/või andmetega manipuleerida, peate õppima RxJs. Jällegi võib see olla üsna üle jõu käivitatud, et saada sujuvalt ja tunda end selle abstraktse konstruktsiooniga kohe alguses tuttavaks.

Võite kasutada Axios't, kui soovite seda teha, kuid nagu Axios GitHubi lehel öeldakse: "Axios on tugevalt inspireeritud $http teenusest, mida pakub Angular'

private getAllItems(): void {
this.http
.get('https://url.to.fetch.data')

.pipe(
pluck('results'),
tap(console.log('do what side effect you want to use here')
catchError((error) => {
        //handle error
})
)
.subscribe((result: ResultType[])
    //lõppoperatsioon antud väljundiga
)
}

Kokkuvõte

| Vue | Angular | Angular |
| ---- | ---- |
| Ei sunni sind väga rangeid reegleid järgima | Nõuab Typescript'i, klassipõhiste komponentide/teenuste kasutamist |
| Tasane õppimiskõver, lihtne alustada | Kõrge õppimiskõver (Typescript, RxJs, Dependency Injection) |
| Palju asju, mida projekti seadistamise ajal konfigureerida| Ei ole palju, mida eelnevalt määrata, kuid see võimaldab teil luua projekti struktuuri läbi konsooli |
| Ühenduse poolt juhitud raamistik, mis põhineb nii Angular kui ka React | Loodud ja hooldatud Google poolt |
| Mitte palju ei ole lisatud, vaja paigaldada väliseid raamatukogusid | State management, HttpClient on lisatud raamistikku |


Broneerige kohtumine The Codest-ga

Seotud artiklid

Tarkvaraarendus

Vue.js arendajate palkamine

Tahad rakendust või veebisaiti, mis paistab silma? Palgata Vue.js arendajad meie oskuslikust meeskonnast ja muuta oma nägemus reaalsuseks. Kiire kodeerimine, fantastiline UI/UX on garanteeritud!

thecodest
Tarkvaraarendus

Mõned nipid JavaScript rakenduse kiirendamiseks

Veebirakenduste arenguga on veebirakendused hakanud üha enam loogikat üle kandma front-end'ile, vabastades seega serveri ja vähendades selle operatsioonide arvu....

The Codest
Bartosz Slysz Software Engineer
Tarkvaraarendus

Kuidas leida parimaid JavaScript programmeerijaid?

Vastavalt SlashData viimasele arendajate seas läbi viidud uuringule on JavaScript endiselt kõige võimsam ja populaarsem valik, mis edestab teisi programmeerimiskeeli, nagu Python ja Java. JS on tavaliselt kasutatav...

The Codest
Monika Krupa Marketing Lead

Tellige meie teadmistebaas ja jääge kursis IT-sektori eksperditeadmistega.

    Meie kohta

    The Codest - rahvusvaheline tarkvaraarendusettevõte, mille tehnoloogiakeskused asuvad Poolas.

    Ühendkuningriik - peakorter

    • Büroo 303B, 182-184 High Street North E6 2JA
      London, Inglismaa

    Poola - kohalikud tehnoloogiakeskused

    • Fabryczna büroopark, Aleja
      Pokoju 18, 31-564 Kraków
    • Brain Embassy, Konstruktorska
      11, 02-673 Varssavi, Poola

    The Codest

    • Kodu
    • Meie kohta
    • Teenused
    • Case Studies
    • Tea kuidas
    • Karjäärivõimalused
    • Sõnastik

    Teenused

    • See nõuandev
    • Tarkvaraarendus
    • Backend arendus
    • Frontend arendus
    • Staff Augmentation
    • Backend arendajad
    • Pilveinsenerid
    • Andmeinsenerid
    • Muud
    • QA insenerid

    Ressursid

    • Faktid ja müüdid koostööst välise tarkvaraarenduspartneriga
    • USAst Euroopasse: Miks otsustavad Ameerika idufirmad Euroopasse ümber asuda?
    • Tech Offshore arenduskeskuste võrdlus: Euroopa (Poola), ASEAN (Filipiinid), Euraasia (Türgi).
    • Millised on CTO ja CIOde peamised väljakutsed?
    • The Codest
    • The Codest
    • The Codest
    • Privacy policy
    • Website terms of use

    Copyright © 2026 by The Codest. Kõik õigused kaitstud.

    etEstonian
    en_USEnglish de_DEGerman sv_SESwedish da_DKDanish nb_NONorwegian fiFinnish fr_FRFrench pl_PLPolish arArabic it_ITItalian es_ESSpanish nl_NLDutch elGreek pt_PTPortuguese cs_CZCzech lvLatvian lt_LTLithuanian is_ISIcelandic etEstonian