window.pipedriveLeadboosterConfig = { base: leadbooster-chat.pipedrive.com', companyId: 11580370, playbookUuid: '22236db1-6d50-40c4-b48f-8b11262155be', version: 2, } ;(function () { var w = window if (w.LeadBooster) { console.warn('LeadBooster on juba olemas') } else { w.LeadBooster = { q: [], on: function (n, h) { this.q.push({ t: 'o', n: n, h: h }) }, trigger: function (n) { this.q.push({ t: 't', n: n }) }, } } })() 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. Typescript, CSS preprocessors või luua linter otse ette. Samuti võimaldab see 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 andmesidumise puhul (lihtsalt lisades sellele eesliite, st v- in `v-model`) 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 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 tuleb ka Ngrx/store raamistik, mis põhineb Reduxi mustril, juhul kui soovite kasutada reaktiivsemat lähenemist RxJs vaatlusobjektidega. Sellega on kaasas 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 teostada, 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 meie jaoks backend-kõne:

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 |
| Kogukonnapõhine raamistik, mis põhineb nii Angular-l kui ka React-l | Google on loonud ja hooldab seda |
| Mitte palju ei ole lisatud, vaja paigaldada väliseid raamatukogusid | State management, HttpClient on lisatud raamistikku |

Loe edasi:

JavaScript on täiesti surnud. Mõni kutt internetis

GraphQL/MongoDB API kasutuselevõtt Netlify funktsioonide abil

Kuidas tappa projekt halva kodeerimispraktikaga

Seotud artiklid

Tarkvaraarendus

Tulevikukindlate veebirakenduste loomine: The Codest ekspertide meeskonna ülevaade

Avastage, kuidas The Codest paistab skaleeritavate, interaktiivsete veebirakenduste loomisel silma tipptehnoloogiatega, mis pakuvad sujuvat kasutajakogemust kõigil platvormidel. Saate teada, kuidas meie eksperditeadmised aitavad kaasa digitaalsele ümberkujundamisele ja äritegevusele...

THECODEST
Tarkvaraarendus

Top 10 Lätis asuvat tarkvaraarendusettevõtet

Tutvu Läti parimate tarkvaraarendusettevõtete ja nende innovaatiliste lahendustega meie viimases artiklis. Avastage, kuidas need tehnoloogiajuhid saavad aidata teie äri edendada.

thecodest
Enterprise & Scaleups lahendused

Java tarkvaraarenduse põhitõed: A Guide to Outsourcing Successfully

Tutvuge selle olulise juhendiga, kuidas edukalt outsourcing Java tarkvara arendada, et suurendada tõhusust, pääseda ligi eksperditeadmistele ja edendada projekti edu The Codest abil.

thecodest
Tarkvaraarendus

Ülim juhend Poola allhanke kohta

outsourcing kasv Poolas on tingitud majanduslikust, hariduslikust ja tehnoloogilisest arengust, mis soodustab IT kasvu ja ettevõtlussõbralikku kliimat.

TheCodest
Enterprise & Scaleups lahendused

Täielik juhend IT-auditi vahendite ja tehnikate kohta

IT-auditid tagavad turvalised, tõhusad ja nõuetele vastavad süsteemid. Lisateavet nende tähtsuse kohta leiate kogu artiklist.

The Codest
Jakub Jakubowicz CTO & kaasasutajad

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 © 2025 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 jaJapanese ko_KRKorean es_ESSpanish nl_NLDutch elGreek etEstonian