QNA > R > React Native È Effettivamente Nativo O Ibrido?

React Native è effettivamente nativo o ibrido?

Questa è una domanda così grigia. Cosa significa "nativo"? In un senso MOLTO stretto "nativo" significa che si codifica in codice macchina direttamente per l'hardware, che gira e non si otterrebbe mai nulla di utile fatto in tutta la vita. Completamente non "nativo" potrebbe essere qualcosa come un'app HTML5 messa insieme con un editor di app WYSIWYG drag-n-drop dove c'è una web app e una macchina virtuale ben definita tra le tue "idee di codice" e l'hardware. Con questi sistemi molto non-nativi avete bisogno di pensare molto poco all'hardware su cui il vostro codice gira.

Qualunque codice fatto in un ambiente specifico del fornitore, diciamo l'"ambiente nativo" Xcode di Apple, dipende ancora da un sacco di librerie collegate staticamente/dinamicamente, servizi del sistema operativo e un framework di widget virtuali dell'interfaccia utente. Per alcune definizioni questo non è molto "nativo".

Non sono un utente o (profondo utente) di React Native. Da quello che vedo in superficie è una combinazione di:

  1. Librerie collegate staticamente e dinamicamente che sono fornite per entrambi, Android e iOS dai venditori della piattaforma e dagli sviluppatori di React Native.
  2. Codice di parsing/traduzione/compilazione del testo (la nuova parola divertente per questo è 'transpiled', perché la gente del software ama e combatte per le loro nuove parole buzz non potrò mai capire)
  3. Servizi runtime dal codice del framework che è incluso nel bundle dell'app tramite librerie.

Sì, è nativo in quanto:

  1. Non è in esecuzione in una VM astratta generalizzata come i browser forniscono a HTML5.
  2. Fornisce accesso ai widget UI della piattaforma.

No, non è nativo in quanto:

  1. Non è scritto direttamente per l'hardware specifico.
  2. Erediterà specifiche limitazioni se la tua app non funziona nei modi in cui il framework è stato ottimizzato.

La domanda più importante è se si adatta alle esigenze della tua app/strategia aziendale? Se hai bisogno che l'app funzioni offline allora sì, può funzionare come un'app "nativa" in questo senso, mentre una VM per browser non lo fa facilmente. Fornisce una chiara chiamata ai widget UI che sono "nativi" per l'ambiente invece di qualche altro widget UI? Sì. Può essere ottimizzato al livello dettagliato del vero "nativo" (codice macchina) no - ha importanza? Assolutamente no nel 99,99999% dei casi.

Questi sono i tipi di domande che trovo spesso degenerino in una battaglia di parole d'ordine e hype.

Credo che ci sia troppa poca discussione/comprensione/educazione sui fondamenti di come l'hardware/il software interagiscono e come il software moderno è costruito a strati.

Se non avete mai studiato l'architettura di sistema hardware/software ve lo consiglio vivamente come un modo per capire meglio le sfumature di quanto grigia possa essere la questione "nativo".

Di Westfahl Amela

Quale Pokemon è meglio Scyther o Scizor? :: Perché Google ha usato il linguaggio Go per Kubernetes?
Link utili