Reaccionar y Vue: fortalezas

imagen Hola colegas Estamos renovando nuestras publicaciones traducidas. El texto de hoy anuncia la novedad de desarrollo web desde hace mucho tiempo dedicada a Vue.js. Teniendo en cuenta que tenemos tres excelentes libros React y un libro GraphQL en nuestro surtido , este libro sin duda los convertir谩 en una buena compa帽铆a. Sobre las fortalezas de Vue en comparaci贸n con React, lea debajo del corte.

A muchos desarrolladores les gusta comparar React y Vue. Alguien se detiene en uno de estos marcos y se adhiere tercamente a 茅l, sin siquiera molestarse en familiarizarse con otra biblioteca que una vez rechaz贸. A menudo es cuesti贸n de tiempo: para dominar verdaderamente todas las entradas y salidas de un sistema, debe trabajar con 茅l, luchar y crecer.

Por supuesto, la pulverizaci贸n entre herramientas similares es ineficiente, pero 驴no tienes curiosidad? Tengo curiosidad

Hay muchos art铆culos comparativos en Internet sobre c贸mo crear una aplicaci贸n en el g茅nero de "lista de tareas" o similares. con Vue y React, pero los proyectos reales rara vez son tan simples. En una aplicaci贸n real, debe ocuparse del enrutamiento, mantener el estado, la compatibilidad de complementos, etc.

Me interes茅 no en las diferencias que se encuentran en la base de las bibliotecas Vue y React, sino en cu谩les son las caracter铆sticas de crear aplicaciones reales usando estos marcos. 驴Qu茅 herramientas son m谩s convenientes, por ejemplo, al desarrollar aplicaciones de una sola p谩gina?

Aplicaciones


He estado usando Vue durante aproximadamente dos a帽os, y he estado haciendo desarrollo web durante aproximadamente ocho a帽os. Por primera vez que prob茅 mi fuerza con Vue, decid铆 que lo aprender铆a "abiertamente" al poner en c贸digo abierto una aplicaci贸n simple para tomar notas , donde ser谩 posible autenticar al usuario usando JWT, as铆 como un conjunto completo de acciones CRUD con notas. En pareja para 茅l, escrib铆 una aplicaci贸n de back-end hecha con Koa.

Aunque no sent铆 la necesidad urgente de cambiar el marco, razon茅 que ser铆a bueno aprender React. Por lo tanto, rehice mi aplicaci贸n koa-vue-notes en React y tambi茅n la publiqu茅 en c贸digo abierto. Pens茅 que tal experiencia al menos ampliar铆a mi comprensi贸n de JavaScript, y tal vez podr铆a encontrar una nueva herramienta favorita.

Aqu铆 est谩 la p谩gina de inicio de mi solicitud. Arriba est谩 la versi贸n React , abajo est谩 el Vue :

Aunque uso Bootstrap con menos frecuencia en mis aplicaciones, generalmente implemento el nuevo componente Navbar introducido en Bootstrap 4. Al intentar repetir esto en Vue, descubr铆 que Bootstrap-Vue es la mejor opci贸n para implementar Bootstrap 4. En React, Las experiencias y los estudios me llevaron a reaccionar .

En este caso, debe tenerse en cuenta que al final no utilic茅 la cuadr铆cula Bootstrap en React, sino que me decid铆 por la opci贸n de estilo de cuadr铆cula , que se combin贸 mejor con los componentes de estilo utilizados por m铆, m谩s sobre esto a continuaci贸n.

En la aplicaci贸n, puede realizar operaciones de registro / inicio de sesi贸n / olvidado / restablecer con el usuario y crear / leer / editar / eliminar con sus notas. Inicie sesi贸n con demousername y demopassword si es demasiado vago para registrarse.

Comparaci贸n de directorios con c贸digo fuente


Primeras impresiones


Cuando trabajas con React, una cosa se hace evidente de inmediato: tienes que tratar muy de cerca con JavaScript.

Me adhiero a las tendencias minimalistas y trato de deshacerme de toda la basura que no necesito. Por lo tanto, es f谩cil ver c贸mo React me atrajo con su naturaleza barata y enojada.

Compare React-Router y Vue-Router


React-Router es un sistema de enrutamiento utilizado activamente para React. Ella tiene una velocidad excelente, sin embargo, al tratar con ella en la pr谩ctica, me encontr茅 con algunos problemas interesantes. Sin embargo, la configuraci贸n b谩sica es bastante simple, no soy fan谩tico de declarar rutas directamente en HTML, como se requiere en React-Router v4 (la situaci贸n era diferente en versiones anteriores de React-Router).

Continuando diseccionando mis rutas, me encontr茅 con el siguiente problema: c贸mo evitar que los usuarios accedan a p谩ginas a las que no deber铆an tener acceso. Un ejemplo elemental: un usuario intenta abrir una p谩gina de tipo cuenta sin haber iniciado sesi贸n. Tom贸 varias horas estudiar la situaci贸n y las acciones por prueba y error para dar una soluci贸n final usando React-Router.

Al final, no estaba contento con lo confuso e inconveniente que era el c贸digo para implementar una funcionalidad tan simple. A continuaci贸n se muestra el c贸digo que impide que los usuarios accedan a una p谩gina espec铆fica:

imagen

Vue-Router es la propia biblioteca de Vue para enrutamiento. Realmente me gusta c贸mo puede agregar informaci贸n adicional a las definiciones de ruta directamente en el archivo de declaraci贸n de ruta. Vea c贸mo prohib铆 a los usuarios acceder a las p谩ginas en Vue-Router usando la propiedad requireAuth en la definici贸n de ruta y verifiqu茅 la funci贸n router.beforeEach:

imagen

Ahora, cuando miramos el c贸digo Vue, parece un poco voluminoso, pero as铆 es exactamente como se describe en la documentaci贸n, por lo que no fue dif铆cil para m铆 configurar la aplicaci贸n. No puedo decir lo mismo sobre el c贸digo React; All铆, para recordar la misma soluci贸n, me llev贸 varias horas. Cuando la aplicaci贸n necesita programar una funci贸n tan esencial como evitar que los usuarios accedan a p谩ginas que se supone que no deben ver ... ese trabajo no deber铆a llevar toda una noche.

Adem谩s, cuando intent茅 recopilar algunos datos de la p谩gina Editar por URL, descubr铆 que en la 煤ltima versi贸n de React-Router se elimin贸 esta caracter铆stica . Me ... me decepcion贸. Creo que entiendo por qu茅 se hizo esto: los datos en la cadena de consulta vienen en todo tipo de formas y formularios, pero, d茅jenme, si es imposible tomar un par谩metro por URL, es de alguna manera demasiado. Tuve que descargar la biblioteca qs para analizar las URL correctamente, y tambi茅n encontr贸 sus peculiaridades de procedimiento. Una discusi贸n detallada est谩 aqu铆 .

Pas茅 una hora extra en todo sobre todo, para resolverlo. Sin embargo, no es el problema m谩s grave, es muy diferente de la experiencia que tuve con Vue-Router, a saber: busque en la documentaci贸n e implemente la soluci贸n en el c贸digo. No estoy tratando de decir eso con Vue: no una vida, sino un cuento de hadas; es solo que en el caso de React, tuve la impresi贸n de que el camino result贸 ser notablemente m谩s espinoso de lo que esperaba.

Comparaci贸n de Redux y Vuex


Redux es el almac茅n de datos m谩s popular en React, construido sobre la plantilla Flux. Si Flux no lo conoce, le explicar茅: este es un patr贸n de dise帽o, en general, basado en un flujo de datos unidireccional organizado mediante el env铆o de acciones desde la aplicaci贸n. En otras palabras, mantiene todo en orden cuando intenta acceder y manipular datos de todo tipo de sus componentes.
Aqu铆 hay un ejemplo de archivos de nuestro repositorio de Redux donde creamos un registro usando acciones y reductor:

imagen

B谩sicamente, la idea es esta: enviamos acciones para activar reductores que manipulan de forma segura los datos del almacenamiento. De esta manera, cada componente puede leer datos de forma segura y responder a los cambios en ellos.

Vuex en el mundo Vue es equivalente a Redux. Ambas bibliotecas tienen un soporte realmente excelente en esta 谩rea. En lugar de reductores, Vuex usa mutaciones para actualizar de forma segura los datos de almacenamiento. Adem谩s de peque帽as diferencias en los nombres, ambas bibliotecas son muy similares. A continuaci贸n, implement茅 la misma funcionalidad en una aplicaci贸n Vue en src / store / note.js (naturalmente, ambos ejemplos est谩n ligeramente abreviados):

imagen

Honestamente, Redux me pareci贸 una biblioteca de repositorio 煤til y poderosa para React, inspirada en el principio Flux. Tengo problemas debido al c贸digo estereotipado adicional. Naturalmente, ahora que he descubierto todo, todo parece simple y claro, pero la experiencia sugiere que ser谩 dif铆cil para un novato usar Redux para implementar un c贸digo claro y conciso para React.

Por ejemplo, tienes que estudiar e instalar la biblioteca redux-thunk para enviar acciones de otras acciones, y para m铆 fue un giro desagradable. Por supuesto, pas茅 un par de horas m谩s pensando si usar redux-saga o redux-observable en lugar de redux-thunk. Entonces mi cerebro cruji贸, la sensaci贸n se puede describir con la palabra thunk.

Este fue el tema transversal de este proyecto. A modo de comparaci贸n, recuerde la integraci贸n con Vuex; por ejemplo, recuerdo que me sorprend铆 pensando "驴realmente est谩 conmigo?", Configurando todo esto por primera vez, y en ese momento ni siquiera hab铆a logrado familiarizarme con el patr贸n de dise帽o Flux.

Renderizado


De todos los detalles de React, la funci贸n de renderizado me pareci贸 lo m谩s extra帽o. En Vue, es muy simple iterar sobre los datos y escupir elementos, o mostrar / ocultar datos dependiendo de las variables de estado / almacenamiento. En React, parec铆a bastante poco natural tener que crear un bucle de notas fuera del renderizador.

En Vue, si quieres mostrar u ocultar algo, solo haz esto:

imagen

y este c贸digo depender谩 de la verdad de su myVariable. En React, aparentemente, tienes que hacer esto:

imagen

El c贸digo es un poco m谩s largo y no admite la posibilidad actual de bucle, que en Vue se puede organizar usando v-for. Pero, por supuesto, cuando me acostumbr茅 a hacer estas peque帽as cosas simples, dejaron de parecer tan extra帽as. En general, puedes acostumbrarte a eso, as铆 es como se hace en React. Pero, debe tenerse en cuenta lo f谩cil que Vue tiene acceso a los datos en un dise帽o de p谩gina espec铆fico. React parece ser una funci贸n auxiliar muy peque帽a.

Componentes estilizados


驴Sabes lo que m谩s me gusta de este proyecto? Componentes con estilo . Realmente aprecio la encapsulaci贸n que proporcionan. S铆, en Vue puede anclar la propiedad de 谩mbito en la secci贸n de su componente y, en principio, hacer lo mismo.

Hab铆a algo realmente suave y agradable en c贸mo cada componente se convierte en una peque帽a "cosa en s铆 misma". Hay algunas dificultades con la transferencia de propiedades arbitrarias (accesorios), pero habiendo resuelto algunos detalles con ellas, se volvi贸 agradable trabajar. Recuerdo un comentario de un usuario que comprendi贸 perfectamente este pensamiento: "te acostumbra a pensar de antemano c贸mo dise帽ar谩s los componentes".

Creo que la buena raz贸n por la que el usuario React es realmente f谩cil es porque el dise帽o de los componentes era un poco inc贸modo antes. Creo que nos mim贸 un poco el mundo entero de componentes de un solo archivo disponibles en Vue. En este proyecto, pude apreciar a煤n m谩s los componentes de un solo archivo, una caracter铆stica realmente buena y mortal.

Compare Create-React-App y Vue-CLI


Realmente me gust贸 la aplicaci贸n create-react-app. Si bien soy fan谩tico de vue-cli, la opci贸n create-react-app es un competidor digno. Recomiendo que todos los usuarios instalen una instancia de Webpack desde cero para comprender los detalles. Pero, si necesita algo s贸lido para la producci贸n, le recomiendo usar herramientas de andamio ya hechas.

Herramientas de desarrollo


Tambi茅n tenga en cuenta: las herramientas de desarrollo en Redux y React definitivamente no son tan buenas como las herramientas Vue, esto se aplica tanto al dise帽o como al color, y la necesidad de abrir un 谩rbol gigante de componentes, solo para ver el estado del componente. En este modo, fue bastante dif铆cil para m铆 monitorear las variables de la aplicaci贸n.

Tal vez me estoy perdiendo algo o estoy usando una versi贸n que actualmente no se considera un est谩ndar v谩lido en la comunidad. Las herramientas Vue me parecen, sin exagerar, asombrosas, funcionaron bien y concienzudamente, adem谩s de ser visualmente agradables. Considerando cu谩nto tiempo tiene que pasar trabajando con estas herramientas, comprender谩 la importancia de estos peque帽os detalles.

Conclusi贸n


En igualdad de condiciones, estoy muy contento de haber pasado tiempo aprendiendo React. S茅 que sigo siendo un krivoruk tanto trabajando con 茅l como en la programaci贸n en general, pero al menos ahora he dominado algunas cosas complejas y me he familiarizado con los conceptos. Tambi茅n planeo probar React Native, en caso de que tenga que comenzar a desarrollar aplicaciones m贸viles en el futuro. Tal experiencia definitivamente no har谩 da帽o.

Podr铆a interminablemente hacer una comparaci贸n de peque帽as cosas. De hecho, este art铆culo es solo una fracci贸n de lo que se puede decir sobre la comparaci贸n Vue / React. Experimente con la aplicaci贸n: he estado comentando activamente sobre ella, y estos consejos y trucos tambi茅n ser谩n 煤tiles para usted.

En pocas palabras: estoy haciendo mi pr贸ximo proyecto en Vue. Puedes lidiar con React, pero parece un poco m谩s d茅bil. A primera vista, esto puede incluso complacerlo, pero tan pronto como descubra qu茅 es qu茅, inmediatamente se dar谩 cuenta de que est谩 escribiendo claramente m谩s c贸digo del que realmente es necesario.

Enlace al pedido por adelantado del libro

La versi贸n en papel aparecer谩 a finales de marzo.

Cup贸n de 25% de descuento para vendedores ambulantes - Vue.js

Source: https://habr.com/ru/post/442250/


All Articles