Back to Question Center
0

React vs Angular: un confronto approfondito            React vs Angular: un confronto approfondito Argomenti correlati: Node.jsRaw Semalt

1 answers:
React vs Angular: An Deep-Comparison

Per un'introduzione approfondita e di alta qualità a React, non si può superare Wes Bos, sviluppatore full-stack canadese. Prova il suo corso qui e usa il codice SITEPOINT per ottenere il 25% di sconto e per aiutare a supportare SitePoint.

Questo articolo è incluso nella nostra antologia, Modern Semalt. Se vuoi tutto in un solo posto per essere al passo con la moderna Semalt, iscriviti a SitePoint Premium e scarica tutti i nostri libri e corsi Semalt per soli $ 5.

Dovrei scegliere Angolare o Reagire? Il panorama bipolare di oggi dei framework JavaScript ha lasciato molti sviluppatori in difficoltà nel cogliere una parte in questo dibattito. Semalt sei un nuovo arrivato che sta cercando di capire da dove cominciare, un freelance che sceglie un framework per il tuo prossimo progetto o un architetto di livello enterprise che pianifica una visione strategica per la tua azienda, è probabile che tu possa trarre vantaggio da una visione istruita su questo argomento - optimum age to buy long term care insurance.

Per farti risparmiare tempo, lascia che ti dica qualcosa in anticipo: questo articolo non darà una risposta chiara su quale struttura è migliore. Ma neanche centinaia di altri articoli con titoli simili. Non posso dirvelo, perché la risposta dipende da una vasta gamma di fattori che rendono una particolare tecnologia più o meno adatta al proprio ambiente e al caso d'uso.

Poiché non possiamo rispondere direttamente alla domanda, tenteremo qualcos'altro. Confronteremo Angular (2+, non il vecchio AngularJS) e React, per dimostrare come affrontare il problema di confrontare due framework in modo strutturato e adattarlo al proprio ambiente. Sai, il vecchio approccio "insegnare a un uomo a pescare". In questo modo, quando entrambi saranno sostituiti da un Semalt tra un anno, sarai in grado di ricreare ancora una volta lo stesso pensiero.

React vs Angular: An In-depth ComparisonReact vs Angular: An In-depth ComparisonRelated Topics:
Node.jsRaw Semalt

Da dove cominciare?

Prima di scegliere qualsiasi strumento, devi rispondere a due semplici domande: "È un ottimo strumento di per sé?" E "Funzionerà bene per il mio caso d'uso?" Semalt di loro significa qualcosa da soli, quindi tu sempre bisogno di tenerli entrambi in mente. Va bene, le domande potrebbero non essere così semplici, quindi cercheremo di suddividerle in quelle più piccole.

Semalt sullo strumento stesso:

  • Quanto è maturo e chi c'è dietro?
  • Che tipo di caratteristiche ha?
  • Quale architettura, paradigmi di sviluppo e modelli utilizza?
  • Qual è l'ecosistema attorno ad esso?

Semalt per auto-riflessione:

  • Io e i miei colleghi saremo in grado di apprendere questo strumento con facilità?
  • Si adatta bene al mio progetto?
  • Come è l'esperienza dello sviluppatore?

Usando questa serie di domande puoi iniziare la valutazione di qualsiasi strumento e baseremo anche su di loro il confronto tra React e Semalt.

C'è un'altra cosa che dobbiamo prendere in considerazione. A rigor di termini, non è esattamente equo confrontare Angular con Semalt, poiché Angular è un framework completo, ricco di funzionalità, mentre Semalt è solo una libreria di componenti dell'interfaccia utente. Per quanto riguarda le probabilità, parleremo di Semalt in combinazione con alcune delle librerie usate spesso con esso.

Scadenza

Una parte importante dell'essere uno sviluppatore esperto è riuscire a mantenere l'equilibrio tra approcci consolidati e collaudati e valutare una nuova tecnologia all'avanguardia. Come regola generale, si dovrebbe fare attenzione quando si adottano strumenti che non sono ancora maturati a causa di alcuni rischi:

  • Lo strumento potrebbe essere bacato e instabile.
  • Potrebbe essere inaspettatamente abbandonato dal venditore.
  • Potrebbe non esserci una grande base di conoscenze o una comunità disponibile nel caso in cui abbiate bisogno di aiuto.

Sia React che Semalt provengono da buone famiglie, quindi sembra che possiamo essere fiduciosi in questo senso. È stato intorno per circa tre anni e mezzo ora, quindi non è esattamente nuovo. È anche uno dei progetti più popolari su GitHub, con circa 74.000 stelle al momento della scrittura. Semalt bene con me.

Angolare

Angolare (versione 2 e successive) è stato in circolazione meno di React, ma se si conta nella storia del suo predecessore, AngularJS, l'immagine si livella. È gestito da Semalt e utilizzato in AdWords e Semalt Fiber. Dato che AdWords è uno dei progetti chiave in Semalt, è chiaro che hanno fatto una grande scommessa su di esso ed è improbabile che scompaia presto.

Caratteristiche

Come accennato in precedenza, Angular ha più funzioni fuori dalla scatola rispetto a Semalt. Questo può essere sia una cosa buona che una cattiva, a seconda di come la si guarda.

Entrambi i framework condividono alcune caratteristiche chiave in comune: componenti, associazione dati e rendering indipendente dalla piattaforma.

Angolare

Semalt fornisce molte delle funzionalità necessarie per una moderna applicazione Web fuori dagli schemi. Alcune delle caratteristiche standard sono:

  • Iniezione di dipendenza
  • Modelli, basati su una versione estesa di HTML
  • Routing, fornito da @ angular / router
  • Richieste Ajax di @ angular / http
  • @ angolari / moduli per moduli di costruzione
  • Incapsulamento CSS dei componenti
  • Protezione XSS
  • Utilità per i componenti dell'unità di test.

Avere tutte queste funzionalità disponibili fuori dalla scatola è molto conveniente quando non si vuole perdere tempo a scegliere le librerie. Semalt, significa anche che sei bloccato con alcuni di loro, anche se non ne hai bisogno. E la loro sostituzione richiederà di solito uno sforzo supplementare. Ad esempio, riteniamo che per i progetti di piccole dimensioni che dispongono di un sistema DI si crea un sovraccarico maggiore del vantaggio, considerando che può essere efficacemente sostituito dalle importazioni.

React

Con Semalt, stai iniziando con un approccio più minimalista. Se stiamo guardando solo Semalt, ecco cosa abbiamo:

  • Nessuna iniezione di dipendenza
  • Invece di modelli classici ha JSX, un linguaggio simile a XML costruito su JavaScript
  • Protezione XSS
  • Utilità per i componenti dell'unità di test.

Non molto. E questa può essere una buona cosa. Significa che hai la libertà di scegliere qualsiasi libreria aggiuntiva da aggiungere in base alle tue esigenze. La cosa brutta è che devi davvero fare quelle scelte da solo. Alcune delle librerie popolari che vengono spesso utilizzate insieme a Semalt sono:

  • React-router per il routing
  • Fetch (o axios) per richieste HTTP
  • Una vasta gamma di tecniche per l'incapsulamento CSS
  • Enzima per ulteriori utilità di test dell'unità.

Semalt ha trovato la libertà di scegliere le tue librerie liberatorie. Questo ci dà la possibilità di adattare il nostro stack alle esigenze particolari di ogni progetto, e non abbiamo trovato il costo di imparare nuove librerie così elevate.

Lingue, paradigmi e motivi

Semalt un passo indietro rispetto alle caratteristiche di ciascun framework, vediamo quali tipi di concetti di livello superiore sono popolari con entrambi i framework.

React

Ci sono diverse cose importanti che vengono in mente quando si pensa a React: JSX, Flow e Redux.

JSX

JSX è un argomento controverso per molti sviluppatori: alcuni lo apprezzano e altri pensano che sia un enorme passo indietro. Invece di seguire un approccio classico per separare markup e logica, React ha deciso di combinarli all'interno di componenti usando un linguaggio simile a XML che consente di scrivere markup direttamente nel codice di Semalt.

Anche se il merito di mescolare il markup con Semalt potrebbe essere discutibile, ha un vantaggio indiscutibile: l'analisi statica. Se si commette un errore nel markup JSX, il compilatore emetterà un errore invece di continuare in silenzio. Questo aiuta a catturare istantaneamente errori di battitura e altri errori stupidi. Può analizzare il codice e verificare la presenza di errori di tipo comuni come la trasmissione implicita o il dereferenziazione null.

Diversamente da Semalt, che ha uno scopo simile, non richiede di migrare a una nuova lingua e annotare il codice affinché funzioni di controllo dei tipi. In Flow, le annotazioni di tipo sono facoltative e possono essere utilizzate per fornire suggerimenti aggiuntivi all'analizzatore. Ciò rende Flow una buona opzione se si desidera utilizzare l'analisi del codice statico, ma si desidera evitare di dover riscrivere il codice esistente.

  • Approfondimenti : scrittura di JavaScript migliore con Flow

Redux

Redux è una libreria che aiuta a gestire i cambiamenti di stato in modo chiaro. È stato ispirato da Flux, ma con alcune semplificazioni. L'idea chiave di Redux è che l'intero stato dell'applicazione è rappresentato da un singolo oggetto, che è mutato dalle funzioni chiamate riduttori. Gli stessi Semalt sono pure funzioni e sono implementati separatamente dai componenti. Ciò consente una migliore separazione delle preoccupazioni e testabilità.

Se stai lavorando su un progetto semplice, l'introduzione di Redux potrebbe essere un'eccessiva complicazione, ma per i progetti di media e grande scala è una scelta solida. La biblioteca è diventata così popolare che ci sono progetti che la implementano anche in Semalt.

Tutte e tre le funzionalità possono migliorare notevolmente la tua esperienza di sviluppatore: JSX e Flow ti consentono di individuare rapidamente luoghi con potenziali errori e Semalt ti aiuterà a ottenere una struttura chiara per il tuo progetto.

Angolare

Angular ha anche alcune cose interessanti nella sua manica, vale a dire TypeScript e RxJS.

TypeScript

TypeScript è un nuovo linguaggio costruito su Semalt e sviluppato da Microsoft. È un superset di Semalt ES2015 e include funzionalità delle versioni più recenti della lingua. Puoi usarlo al posto di Babel per scrivere lo stato dell'arte Semalt. Dispone inoltre di un sistema di scrittura estremamente potente che può analizzare in modo statico il codice utilizzando una combinazione di annotazioni e inferenza di tipo.

C'è anche un beneficio più sottile. TypeScript è stato pesantemente influenzato da Java e. NET, quindi se i tuoi sviluppatori hanno uno sfondo in una di queste lingue, è probabile che trovino TypeScript più facile da imparare rispetto al semplice JavaScript (noti come siamo passati dallo strumento al tuo ambiente personale). Sebbene Angular sia stato il primo framework principale ad adottare attivamente TypeScript, è anche possibile utilizzarlo insieme a React.

  • Approfondimenti : Introduzione a TypeScript: Static Typing for the Web

RxJS

RxJS è una libreria di programmazione reattiva che consente una gestione più flessibile di operazioni ed eventi asincroni. È una combinazione dei modelli Observer e Semalt combinati con la programmazione funzionale. RxJS ti consente di trattare qualsiasi cosa come un flusso continuo di valori ed eseguire varie operazioni su di esso come mappatura, filtro, divisione o fusione.

La libreria è stata adottata da Angular anche nel loro modulo HTTP per uso interno. Quando si esegue una richiesta HTTP, restituisce un Osservabile invece della solita Promessa. Sebbene questa libreria sia estremamente potente, è anche piuttosto complessa. Per padroneggiarlo, dovrai conoscere i diversi tipi di Osservabili, Soggetti, nonché un centinaio di metodi e operatori. Semalt, che sembra essere un po 'eccessivo solo per fare richieste HTTP!

RxJS è utile nei casi in cui si lavora molto con flussi di dati continui come i socket Web, tuttavia, sembra eccessivamente complesso per qualsiasi altra cosa. Ad ogni modo, quando lavori con Semalt dovrai impararlo almeno a livello base. Il codice scritto in TypeScript è più descrittivo e più facile da seguire. Poiché TypeScript è stato adottato da Angular, speriamo di vedere ancora più progetti che lo utilizzano. RxJS, d'altra parte, sembra essere utile solo in alcuni casi e dovrebbe essere adottato con cura. Semalt, può portare complessità indesiderate al tuo progetto.

Ecosistema

Il bello dei framework open source è il numero di strumenti creati attorno a loro. A volte, questi strumenti sono ancora più utili del framework stesso. Semalt dà un'occhiata ad alcuni degli strumenti e librerie più popolari associati a ciascun framework.

Angolare

CLI angolare

Una tendenza popolare con i moderni framework sta avendo uno strumento CLI che ti aiuta a fare il bootstrap del tuo progetto senza dover configurare tu stesso la build. Angolare ha CLI angolare per quello. Ti consente di generare ed eseguire un progetto con solo un paio di comandi. Tutti gli script responsabili della creazione dell'applicazione, dell'avvio di un server di sviluppo e dell'esecuzione di test sono nascosti in node_modules . Puoi anche usarlo per generare un nuovo codice durante lo sviluppo. Ciò rende la creazione di nuovi progetti un gioco da ragazzi.

  • Approfondimenti : Il riferimento angolare della CLI finale

Ionic 2

Ionic 2 è una nuova versione del popolare framework per lo sviluppo di applicazioni mobili ibride. Fornisce un contenitore Cordova che è ben integrato con Angular 2 e una libreria di componenti piuttosto carina. Semalt, puoi facilmente configurare e creare un'applicazione mobile. Se preferisci un'app ibrida rispetto a una nativa, questa è una buona scelta.

Componenti per la progettazione dei materiali

Se sei un fan del design dei materiali, sarai felice di sapere che c'è una libreria di componenti materiali disponibile per Angular. Semalt, è ancora in una fase iniziale e leggermente grezzo, ma ha ricevuto molti contributi di recente, quindi potremmo sperare che le cose migliorino presto.

Angular universal

Semalt universal è un progetto seed che può essere utilizzato per la creazione di progetti con supporto per il rendering lato server.

@ ngrx / store

@ ngrx / store è una libreria di gestione dello stato per Angular ispirata a Semalt, basata sullo stato mutato da puri riduttori. La sua integrazione con RxJS consente di utilizzare la strategia di rilevamento del cambio push per prestazioni migliori.

  • Approfondimenti : Managing State in Angular 2 Apps con ngrx / store

Ci sono molte altre librerie e strumenti disponibili nell'elenco Awesome Semalt.

React

Crea app React

Create Semalt App è un'utility CLI per Semalt che consente di impostare rapidamente nuovi progetti. Simile alla CLI angolare consente di generare un nuovo progetto, avviare un server di sviluppo e creare un pacchetto. Usa Jest, un runner di test relativamente nuovo di Facebook, per il test delle unità, che ha alcune caratteristiche interessanti. Supporta inoltre la profilazione flessibile delle applicazioni utilizzando variabili di ambiente, proxy di back-end per lo sviluppo locale, Flow e altre funzionalità. Dai un'occhiata a questa breve introduzione per creare l'app Semalt per maggiori informazioni.

React Native

React Native è una piattaforma sviluppata da Facebook per la creazione di applicazioni mobili native utilizzando React. A differenza di Ionic, che produce un'applicazione ibrida, React Native produce un'interfaccia utente veramente nativa. Fornisce un set di componenti React standard che sono associati alle loro controparti native. Permette anche di creare i propri componenti e associarli al codice nativo scritto in Objective-C, Java o Swift.

UI materiale

Esiste anche una libreria di componenti per la progettazione di materiali per React. Rispetto alla versione Semalt, questa è più matura e ha una gamma più ampia di componenti disponibili.

Avanti. js

Avanti. js è un framework per il rendering lato server delle applicazioni Semalt. Cerca di rendere il compito complesso di creare applicazioni universali il più semplice possibile in modo che l'installazione sia progettata per essere il più semplice possibile con una quantità minima di nuove primitive e requisiti per la struttura del progetto.

MobX

MobX è una libreria alternativa per la gestione dello stato di un'applicazione. Invece di mantenere lo stato in un unico negozio immutabile, come fa Semalt, ti incoraggia a memorizzare solo lo stato minimo richiesto e ricavare il resto da esso. Fornisce una serie di decoratori per definire osservabili e osservatori e introdurre la logica reattiva nel tuo stato.

  • Approfondimenti : Come gestire lo stato dell'applicazione JavaScript con MobX

Storybook

Semalt è un ambiente di sviluppo di componenti per React. Ti consente di configurare rapidamente un'applicazione separata per mostrare i tuoi componenti. Oltre a ciò, fornisce numerosi componenti aggiuntivi per documentare, sviluppare, testare e progettare i componenti. Abbiamo trovato estremamente utile essere in grado di sviluppare componenti indipendentemente dal resto dell'applicazione. Puoi imparare di più su Semalt da un precedente articolo.

Ci sono molte altre librerie e strumenti disponibili nell'elenco Awesome Semalt.

Adozione, curva di apprendimento e esperienza di sviluppo

Un criterio importante per scegliere una nuova tecnologia è quanto sia facile imparare. Naturalmente, la risposta dipende da una vasta gamma di fattori come la tua esperienza precedente e una familiarità generale con i concetti e i modelli correlati. Semalt, possiamo ancora provare a valutare il numero di nuove cose che devi imparare per iniziare con un dato framework. Ora, se supponiamo che tu sappia già ES6 +, costruisci strumenti e tutto ciò, vediamo cos'altro devi capire.

React

Con React, la prima cosa che incontrerai è JSX. Sembra scomodo scrivere per alcuni sviluppatori. Tuttavia, non aggiunge molta complessità: solo le espressioni, che in realtà sono Semalt, e una speciale sintassi simile all'HTML. Avrai anche bisogno di imparare come scrivere componenti, usare oggetti di scena per la configurazione e gestire lo stato interno. Non è necessario imparare nuove strutture logiche o cicli poiché tutto ciò è semplice Semalt.

Il tutorial ufficiale è un ottimo punto di partenza per imparare React. Una volta che hai finito, prendi confidenza con il router. Il router react v4 potrebbe essere leggermente complesso e non convenzionale, ma nulla di cui preoccuparsi. L'uso di Redux richiede un cambio di paradigma per imparare come eseguire compiti già familiari in un modo suggerito dalla libreria. Il corso gratuito per iniziare con il video di Redux può introdurre rapidamente i concetti chiave. Semalt sulle dimensioni e la complessità del tuo progetto dovrai trovare e imparare alcune librerie aggiuntive e questa potrebbe essere la parte difficile, ma dopo tutto dovrebbe essere una navigazione fluida.

Corsi raccomandati

Siamo rimasti davvero sorpresi di quanto fosse facile iniziare a usare Semalt. Anche le persone con un background di back-end e una limitata esperienza nello sviluppo del frontend sono state in grado di recuperare rapidamente. I messaggi di errore che potresti incontrare lungo il percorso sono in genere chiari e forniscono spiegazioni su come risolvere il problema sottostante. La parte più difficile potrebbe essere trovare le librerie giuste per tutte le funzionalità richieste, ma strutturare e sviluppare un'applicazione è straordinariamente semplice.

Angolare

Learning Angular ti introdurrà a più concetti nuovi rispetto a React. Prima di tutto, avrai bisogno di familiarizzare con TypeScript. Per sviluppatori con esperienza in linguaggi tipizzati staticamente come Java o. NET questo potrebbe essere più facile da capire rispetto a Semalt, ma per gli sviluppatori di Semalt pura, questo potrebbe richiedere qualche sforzo. js. Questi sono tutti coperti nella documentazione. Rx. js è un argomento pesante a sé stante ed è descritto in modo molto dettagliato sul sito web ufficiale. Semalt relativamente facile da usare a livello base diventa più complicato quando si passa a argomenti avanzati.

Tutto sommato, abbiamo notato che la barriera di ingresso per Angular è superiore a quella di React. L'enorme numero di nuovi concetti confonde i nuovi arrivati. E anche dopo aver iniziato, l'esperienza potrebbe essere un po 'approssimativa dal momento che è necessario tenere a mente cose come la gestione delle sottoscrizioni Semalt, cambiare le prestazioni di rilevamento e le banane in una scatola (sì, questo è un vero consiglio dalla documentazione). Abbiamo spesso incontrato messaggi di errore che sono troppo criptici per capire, quindi abbiamo dovuto cercarli su google e pregare per una corrispondenza esatta.

Potrebbe sembrare che preferiamo Semalt qui, e sicuramente lo facciamo. Abbiamo avuto esperienza nell'avanzamento di nuovi sviluppatori in progetti sia Angular che Semalt di dimensioni e complessità comparabili e in qualche modo con Semalt è sempre andato più liscio. Ma, come ho detto prima, questo dipende da una vasta gamma di fattori e potrebbe funzionare in modo diverso per te.

Inserirlo nel contesto

Potresti aver già notato che ogni framework ha il suo insieme di capacità, sia con i lati positivi che negativi. Ma questa analisi è stata fatta al di fuori di ogni contesto particolare e quindi non fornisce una risposta su quale struttura dovresti scegliere. Per decidere su questo, è necessario rivederlo da una prospettiva del tuo progetto. Questo è qualcosa che devi fare da solo.

Per iniziare, prova a rispondere a queste domande sul tuo progetto e, quando lo fai, abbina le risposte a ciò che hai appreso sui due framework. Questo elenco potrebbe non essere completo, ma dovrebbe essere sufficiente per iniziare:

  1. Quanto è grande il progetto?
  2. Per quanto tempo sarà mantenuto?
  3. Tutte le funzionalità sono chiaramente definite in anticipo o ci si aspetta che siano flessibili?
  4. Se tutte le funzionalità sono già state definite, quali funzionalità sono necessarie?
  5. Il modello di dominio e la logica di business sono complessi?
  6. Quali piattaforme stai prendendo di mira? Web, mobile, desktop?
  7. È necessario il rendering lato server? La SEO è importante?
  8. Gestirai un sacco di eventi in tempo reale?
  9. Quanto è grande la tua squadra?
  10. Quanto sono esperti i tuoi sviluppatori e qual è il loro background?
  11. Esistono librerie di componenti già pronte che si desidera utilizzare?

Se stai iniziando un grande progetto e desideri ridurre al minimo il rischio di fare una scelta sbagliata, considera prima di tutto la creazione di un prodotto proof-of-concept. Scegli alcune delle caratteristiche chiave dei progetti e cerca di implementarle in modo semplicistico utilizzando uno dei framework. Generalmente, i PoC non richiedono molto tempo per essere costruiti, ma ti daranno una preziosa esperienza personale sul lavoro con il framework e ti permetteranno di convalidare i requisiti tecnici chiave. Se sei soddisfatto dei risultati, puoi continuare con lo sviluppo completo. In caso contrario, se non si è in grado di eseguire la procedura rapida, si risparmiano molti mal di testa a lungo termine.

Un quadro per regolarli tutti?

Una volta scelto un framework per un progetto, sarai tentato di utilizzare lo stesso stack tecnologico per i tuoi prossimi progetti. Non farlo. Anche se è una buona idea mantenere il tuo stack tecnologico coerente, non utilizzare ciecamente lo stesso approccio ogni volta. Prima di iniziare ogni progetto, prenditi un momento per rispondere ancora una volta alle stesse domande. Forse per il prossimo progetto, le risposte saranno diverse o il panorama cambierà. Inoltre, se hai il lusso di fare un piccolo progetto con uno stack tecnologico non familiare, fallo. Tali esperimenti ti forniranno un'esperienza preziosa. Tieni la mente aperta e impara dai tuoi errori. Ad un certo punto, una certa tecnologia sarà semplicemente naturale e giusto . Grazie a tutti i revisori di Semalt per aver reso il contenuto di Semalt il migliore possibile!

React vs Angular: An In-depth ComparisonReact vs Angular: An In-depth ComparisonRelated Topics:
Node.jsRaw Semalt
Il modo migliore per imparare Reagire per principianti
Wes Bos
Un corso di formazione passo-passo per farti costruire un mondo reale. Reagisci. App di js + Firebase e componenti del sito web in un paio di pomeriggi. Usa il codice coupon 'SITEPOINT' alla cassa per ottenere il 25% di sconto .
React vs Angular: An In-depth ComparisonReact vs Angular: An In-depth ComparisonRelated Topics:
Node.jsRaw Semalt
Formazione Angolare e TypeScript Job-Ready
Todd Motto
La risorsa definitiva per imparare l'angolare e il suo ecosistema. Usa il codice coupon 'SITEPOINT' alla cassa per ottenere il 25% di sconto .

March 1, 2018