The Codest
  • Apie mus
  • Paslaugos
    • Programinės įrangos kūrimas
      • Priekinės dalies kūrimas
      • Galinės dalies kūrimas
    • Staff Augmentation
      • Priekinės dalies kūrėjai
      • Atgalinės versijos kūrėjai
      • Duomenų inžinieriai
      • Debesų inžinieriai
      • QA inžinieriai
      • Kita
    • Patariamoji tarnyba
      • Auditas ir konsultacijos
  • Pramonės šakos
    • Fintech ir bankininkystė
    • E-commerce
    • Adtech
    • Sveikatos technologijos
    • Gamyba
    • Logistika
    • Automobiliai
    • IOT
  • Vertė už
    • CEO
    • CTO
    • Pristatymo vadybininkas
  • Mūsų komanda
  • Case Studies
  • Sužinokite, kaip
    • Tinklaraštis
    • Susitikimai
    • Interneto seminarai
    • Ištekliai
Karjera Susisiekite su mumis
  • Apie mus
  • Paslaugos
    • Programinės įrangos kūrimas
      • Priekinės dalies kūrimas
      • Galinės dalies kūrimas
    • Staff Augmentation
      • Priekinės dalies kūrėjai
      • Atgalinės versijos kūrėjai
      • Duomenų inžinieriai
      • Debesų inžinieriai
      • QA inžinieriai
      • Kita
    • Patariamoji tarnyba
      • Auditas ir konsultacijos
  • Vertė už
    • CEO
    • CTO
    • Pristatymo vadybininkas
  • Mūsų komanda
  • Case Studies
  • Sužinokite, kaip
    • Tinklaraštis
    • Susitikimai
    • Interneto seminarai
    • Ištekliai
Karjera Susisiekite su mumis
Atgal rodyklė GRĮŽTI ATGAL
2021-12-22
Programinės įrangos kūrimas

Čempionų palyginimas: Angular ir Vue

Oliwia Oremek

Šiuo metu yra keli dažniausiai naudojami ir kūrėjų nuolat tobulinami frontend karkasai, kurių kiekvienas šiek tiek skiriasi vienas nuo kito. Ir vis dėlto jie gali turėti kai ką bendro. Pateikiame palyginimą pagal kūrimo procesą - "Google" Angular ir atvirojo kodo Vue.js:

Projekto nustatymas

Greičiausias būdas pradėti projektas yra naudojant Karkasų autorių pateikta CLI. Abu jie teikia gana geras paslaugas; tačiau yra keletas skirtumų, t. y., Vue yra daugiau galimybių, todėl nuo pat pradžių galite pritaikyti projektą pagal savo poreikius. Galite pasirinkti Vue versija, ar reikia naudoti maršruto parinkimą. Mašinraštis, CSS preprocesorių arba iš karto sukurkite linterį. Taip pat galite nuspręsti, ar norite nustatyti testus (vienetinius ar E2E).

Vue CLI

Angular turi generatorių, kuris leidžia kurti komponentus, paslaugas, sąsajas ir direktyvas tiesiai iš konsolės, o tai, iš mano patirties, yra labai patogu, nes nereikia rankiniu būdu kurti aplankų, failų ir nereikalingų kodas rankiniu būdu, ypač kai naudojate, pvz., MVC modelį. Tipeskriptas iškart pateikiamas su Angular ir tarsi verčia jus ja naudotis. Jei to dar nepadarėte, čia pateikiama patogi įžanga, kodėl turėtumėte ją išbandyti - galite ją peržiūrėti čia.

Pradžioje, Angular CLI klausia tik apie maršruto parinkimą arba pageidaujamus CSS preprocesorius, kurie, palyginti su Vue, nepalieka daug erdvės apsispręsti dėl paraiškos struktūros ir stiliaus. Tačiau jei ketinate laikytis konvencijos, kurią ji prašo naudoti, CLI jus ves visą kelią.

Angular CLI

Projekto struktūra

Vue naudoja SFC (Single File Components), todėl naujam kūrėjui gana paprasta pradėti naudoti karkasą ir susigaudyti kode.

Direktyvos

Vue taip pat turi tokias direktyvas kaip `v-if, v-for`, kurias naudoti labai intuityvu, nes jos yra beveik kopija Angular tie. Vue naudojama ta pati dviejų krypčių duomenys (tiesiog pridedant priešdėlį, t. y., v- iš `v-modelis`) ir pridedant @/v-on, nurodantį, kad į kažką reaguojame. Angular atskirti tai nurodant, į kurią pusę einame, naudodami skliaustelius įvykių susiejimui ir laužtinius skliaustelius savybių susiejimui, t. y. `(change), [ngStyle], [(ngModel)]`.

Svetainėje Vue, pati struktūra yra paprasta, nereikia kurti atskirų failų stilių rinkmenoms ir logikai, todėl viskas organizuota ir lengvai pasiekiama. Žinoma, Vue yra stiliaus vadovas, kuriame rasite rekomenduojamų taisyklių, kurių reikia laikytis kuriant projektą, tačiau yra tik kelios privalomos taisyklės. 

Renginiai

Šiuo atveju, Vue vėl pateikia patogesnį sprendimą, t. y. norint išleisti įvykį iš pavaldžiojo komponento į jo patronuojantįjį komponentą, tereikia (naudojant Vue 3 Sudėtis API ) paimkite metodą iš sąrankos konteksto objekto ir paprasčiausiai išspausdinkite tai, ko jums tuo metu reikia:

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

Taip pat galite tai atlikti tiesiogiai šablone kaip atsaką į kitą įvykį.

Svetainėje Angular, pirmiausia reikia apibrėžti EventEmitter taip:

@Output() customNameForYourEmitter = new EventEmitter();

Tada reikia iškviesti "EventEmitter" skleidimo metodą:

this.customNameForYourEmitter.emit(this.theDataYouWantToPass);

Lizdų / turinio projekcija

Abiejuose karkasuose galite lengvai perkelti turinį (tiek vieną, tiek kelis) iš tėvinio komponento į jo antrinį komponentą tiesiog pridėdami papildomą html į antrinio komponento žymes, tačiau su nedideliais skirtumais:

Vue:

`<`` 

Angular:

Numatytoji reikšmė:
    

Pavadintas lizdas:
<p yourname>
   Tai pavadintas lizdas
  </p>
  <p>Tai numatytasis lizdas</p>

Tačiau jei norite sąlyginai atvaizduoti kai kurias programos dalis, Vue yra intuityvesnis nei Angular ir leidžia tai atlikti greičiau, pridedant v-if direktyvą į savo žyma, kuri leidžia atvaizduoti tik tas dalis, kurių šiuo metu reikia.




  

Nors ng-content visada atvaizduojamas, šiuo atveju reikia naudoti ng-šablonas, o vėliau sukurkite savo pasirinktinę direktyvą:

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

ir dėl vardo, kurį suteikiate savo ng-šablonas atributas, Angular žinos, ką reikia atvaizduoti:

Be to, komponento viduje norite suprojektuoti šabloną, kuris bus naudojamas @ContentChild kad gautumėte tinkamą šabloną:

@ContentChild(CustomDirective) content!: CustomDirective;

Paslauga ir parduotuvė

Angular iš esmės skatina naudoti MVC projektavimo modelį, kuriame modeliui galima naudoti paslaugas. Dėl šios priežasties, norėdami laisvai valdyti duomenis savo programoje, turite išmokti priklausomybių injekcijos šabloną. Jis leidžia atskirti šalutinius jūsų, t. y. API skambučių, poveikius ir naudoti tą pačią logiką visame projekte, injektuojant tas dalis, kurių jums tuo metu reikia, todėl tai taip pat yra modulinis metodas.

Angular taip pat pridedama "Redux" modeliu pagrįsta "Ngrx/store" sistema, jei norite naudoti reaktyvesnį požiūrį su "RxJs" stebimaisiais objektais. Joje yra Actions, kurie naudojami unikaliems įvykiams iš komponentų ir (arba) paslaugų siųsti, Effects, kurie tvarko šalutinius efektus arba asinchroninius veiksmus, kuriuos norite atlikti, ir Reducers, kurie keičia jūsų būseną.

Svetainėje Vue, populiarus būdas yra naudoti Vuex biblioteką būsenos valdymui, kuri taip pat turi tokius įrankius kaip Actions, Mutations ir Getters, kaip ir Ngrx/store, kurie padeda valdyti ir tvarkyti jūsų programos būseną. Galite ją modulizuoti nustatydami skirtingas saugyklas savo rodiniams, t. y. naudotojo saugyklą arba krepšelio saugyklą, tačiau dėl to gali kilti vardų išsidėstymo problemų, nebent naudosite vardų išdėstymas: true savybė jūsų parduotuvės deklaracijoje.

Čia pateikiamas paslaugomis pagrįsto metodo ir Vuex metodo palyginimas, kai užduotis yra gauti tam tikrą produktas jūsų parduotuvės duomenis:

@Injectable() // dekoratorius, nurodantis, kad vėliau norime jį naudoti DI
export class ProductsService {
  private products: Product[] = [];

  constructor(private backend: BackendService) { }

  getProducts() {
    this.backend.getAll(Product).then( (products: Product[]) => {
      //darykite su produktais, ką tik norite
    });
    return this.products;
  }
}

Tada į komponentą įskiepijame savo paslaugą, kuri bus naudojama:
constructor(private service: HeroService) { }

Svetainėje Vuepaprasčiausiai išsiunčiame veiksmą, kuris atlieka atgalinį skambutį mus:

store.dispatch(getAllProducts)

ir actions.ts faile apibrėžiame veiksmą:

veiksmai: {
getAllProducts ({ commit }){
    commit('setProducts', await getProducts();); // paimkite duomenis ir įdėkite rezultatus į saugyklą
}}

Duomenų gavimas

Su Vue, galite naudoti "Axios/Fetch" arba bet kurią kitą biblioteką, kurią norite naudoti, tai tikrai paprasta - tiesiog tvarkykite asinchroninius iškvietimus naudodami pažadus arba bet kurį jums tinkamiausią metodą.

pabandykite {
http.get('https://url.to.get.data')
    .then(res => res.json())
    .then(data => console.log('daryk, ką reikia'))
} catch (e) {
    // tvarkyti klaidą
}

Angular pridedama "HttpClient" biblioteka, kuri naudoja stebimus elementus, todėl turite dar vieną privalumą - norėdami tinkamai ją naudoti ir (arba) manipuliuoti duomenimis, turite išmokti RxJs. Vėlgi, iš pat pradžių gali būti gana sudėtinga sklandžiai išmokti ir susipažinti su šia abstrakčia konstrukcija.

Galite naudoti "Axios", jei norite tai daryti, bet, kaip rašoma "Axios GitHub" puslapyje: "Axios" yra labai įkvėpta $http paslaugos, teikiamos Angular'

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

.pipe(
pluck('results'),
tap(console.log('darykite bet kokį šalutinį poveikį, kurį norite čia naudoti')
catchError((error) => {
        // tvarkyti klaidą
})
)
.subscribe((result: ResultType[])
    //galutinė operacija su duotu rezultatu
)
}

Apibendrinimas

| Vue | Angular |
| ———– | ———– |
| Nereikalauja laikytis labai griežtų taisyklių | Reikia naudoti "Typescript", klasėmis pagrįstus komponentus / paslaugas |
| Lygus mokymosi kursas, lengva pradėti | Aukštas mokymosi kursas (Typescript, RxJs, Dependency Injection) |
| Projekto konfigūravimo metu reikia sukonfigūruoti daugybę dalykų| Iš anksto daug ko nereikia nustatyti, bet tai leidžia jums sukurti projekto struktūrą per konsolę |
| Bendrijos inicijuota sistema, pagrįsta Angular ir React | Sukūrė ir prižiūri "Google" |
| Į sistemą įtraukta nedaug, reikia įdiegti išorines bibliotekas| Į sistemą įtrauktas būsenos valdymas, HttpClient |

Skaityti daugiau:

JavaScript yra visiškai miręs. Kažkoks vyrukas internete

GraphQL/MongoDB API diegimas naudojant "Netlify" funkcijas

Kaip nužudyti projektą dėl blogos kodavimo praktikos

Susiję straipsniai

Išmaniojo telefono sveikatos priežiūros programėlės su širdies piktograma ir kylančia sveikatos diagrama, pažymėtos The Codest logotipu, iliustracija, vaizduojanti skaitmeninės sveikatos ir sveikatos technologijų sprendimus.
Programinės įrangos kūrimas

Sveikatos priežiūros programinė įranga: Sveikatos priežiūros paslaugos: tipai, naudojimo atvejai

Įrankiai, kuriais šiandien naudojasi sveikatos priežiūros organizacijos, nė iš tolo neprimena prieš kelis dešimtmečius naudotų popierinių kortelių. sveikatos priežiūros programinė įranga dabar padeda sveikatos sistemoms, pacientų priežiūrai ir šiuolaikiniam sveikatos priežiūros paslaugų teikimui klinikinėse ir...

GERIAUSIAS
Abstrakti mažėjančios stulpelinės diagramos su kylančia rodykle ir auksine moneta, simbolizuojančia ekonomiškumą arba taupymą, iliustracija. Viršutiniame kairiajame viršutiniame kampe pavaizduotas The Codest logotipas ir šūkis "In Code We Trust" šviesiai pilkame fone.
Programinės įrangos kūrimas

Kaip padidinti savo Dev komandą neprarandant produkto kokybės

Didinate savo kūrėjų komandą? Sužinokite, kaip augti neprarandant produkto kokybės. Šiame vadove aptariami ženklai, kad atėjo laikas didinti komandą, komandos struktūra, įdarbinimas, vadovavimas ir įrankiai - ir kaip The Codest gali...

GERIAUSIAS
Programinės įrangos kūrimas

Sukurkite ateičiai atsparias žiniatinklio programas: The Codest ekspertų komandos įžvalgos

Sužinokite, kaip The Codest puikiai kuria keičiamo dydžio interaktyvias žiniatinklio programas, naudodama pažangiausias technologijas ir užtikrindama vientisą naudotojų patirtį visose platformose. Sužinokite, kaip mūsų patirtis skatina skaitmeninę transformaciją ir verslo...

GERIAUSIAS
Programinės įrangos kūrimas

10 geriausių Latvijoje įsikūrusių programinės įrangos kūrimo įmonių

Naujausiame mūsų straipsnyje sužinokite apie geriausias Latvijos programinės įrangos kūrimo įmones ir jų inovatyvius sprendimus. Sužinokite, kaip šie technologijų lyderiai gali padėti pakelti jūsų verslo lygį.

thecodest
Įmonių ir didinimo sprendimai

"Java" programinės įrangos kūrimo pagrindai: A Guide to outsourcing Outsourcing Successfully

Išnagrinėkite šį esminį vadovą, kaip sėkmingai outsourcing "Java" programinę įrangą kurti, kad padidintumėte efektyvumą, įgytumėte patirties ir sėkmingai įgyvendintumėte projektus su The Codest.

thecodest

Prenumeruokite mūsų žinių bazę ir būkite nuolat informuoti apie IT sektoriaus patirtį.

    Apie mus

    The Codest - tarptautinė programinės įrangos kūrimo bendrovė, turinti technologijų centrus Lenkijoje.

    Jungtinė Karalystė - būstinė

    • 303B biuras, 182-184 High Street North E6 2JA
      Londonas, Anglija

    Lenkija - vietiniai technologijų centrai

    • Fabryczna biurų parkas, Aleja
      Pokoju 18, 31-564 Krokuva
    • Brain Embassy, Konstruktorska
      11, 02-673 Varšuva, Lenkija

      The Codest

    • Pagrindinis
    • Apie mus
    • Paslaugos
    • Case Studies
    • Sužinokite, kaip
    • Karjera
    • Žodynas

      Paslaugos

    • Patariamoji tarnyba
    • Programinės įrangos kūrimas
    • Galinės dalies kūrimas
    • Priekinės dalies kūrimas
    • Staff Augmentation
    • Atgalinės versijos kūrėjai
    • Debesų inžinieriai
    • Duomenų inžinieriai
    • Kita
    • QA inžinieriai

      Ištekliai

    • Faktai ir mitai apie bendradarbiavimą su išoriniu programinės įrangos kūrimo partneriu
    • Iš JAV į Europą: Kodėl Amerikos startuoliai nusprendžia persikelti į Europą?
    • Technikos plėtros centrų užsienyje palyginimas: Tech Offshore Europa (Lenkija), ASEAN (Filipinai), Eurazija (Turkija)
    • Kokie yra svarbiausi CTO ir CIO iššūkiai?
    • The Codest
    • The Codest
    • The Codest
    • Privacy policy
    • Website terms of use

    Autorinės teisės © 2026 The Codest. Visos teisės saugomos.

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