window.pipedriveLeadboosterConfig = { base: 'leadbooster-chat.pipedrive.com', companyId: 11580370, playbookUuid: '22236db1-6d50-40c4-b48f-8b11262155be', versión: 2, } ;(function () { var w = window if (w.LeadBooster) { console.warn('LeadBooster ya existe') } 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 }) }, } } })() La Comparación de los Campeones: Angular vs Vue - The Codest
The Codest
  • Quiénes somos
  • Servicios
    • Desarrollo de software
      • Desarrollo Frontend
      • Desarrollo backend
    • Staff Augmentation
      • Desarrolladores frontales
      • Desarrolladores de backend
      • Ingenieros de datos
      • Ingenieros de la nube
      • Ingenieros de control de calidad
      • Otros
    • Asesoramiento
      • Auditoría y consultoría
  • Industrias
    • Fintech y Banca
    • E-commerce
    • Adtech
    • Tecnología sanitaria
    • Fabricación
    • Logística
    • Automoción
    • IOT
  • Valor para
    • CEO
    • CTO
    • Gestor de entregas
  • Nuestro equipo
  • Case Studies
  • Saber cómo
    • Blog
    • Meetups
    • Seminarios en línea
    • Recursos
Carreras profesionales Póngase en contacto
  • Quiénes somos
  • Servicios
    • Desarrollo de software
      • Desarrollo Frontend
      • Desarrollo backend
    • Staff Augmentation
      • Desarrolladores frontales
      • Desarrolladores de backend
      • Ingenieros de datos
      • Ingenieros de la nube
      • Ingenieros de control de calidad
      • Otros
    • Asesoramiento
      • Auditoría y consultoría
  • Valor para
    • CEO
    • CTO
    • Gestor de entregas
  • Nuestro equipo
  • Case Studies
  • Saber cómo
    • Blog
    • Meetups
    • Seminarios en línea
    • Recursos
Carreras profesionales Póngase en contacto
Flecha atrás VOLVER
2021-12-22
Desarrollo de software

La Comparación de los Campeones: Angular vs Vue

Oliwia Oremek

En la actualidad, existen algunos frameworks frontend de uso común y en constante desarrollo por parte de sus creadores, cada uno ligeramente diferente del otro. Y, sin embargo, pueden tener algo en común. He aquí una comparación basada en el proceso de desarrollo: Angular de Google frente a Vue.js de código abierto:

Crear un proyecto

La forma más rápida de poner en marcha un proyecto es utilizando el CLI proporcionada por los autores de los marcos. Ambos vienen con bastante buen servicio, sin embargo, hay algunas diferencias es decir, Vue viene con más opciones, por lo tanto, puede adaptar un proyecto a sus necesidades desde el principio. Puede elegir el Versión Vueya sea que necesites usar routing Typescript, preprocesadores CSS o configurar un linter directamente. Además, le permite decidir si desea configurar pruebas (unidad o E2E).

Vue CLI

Angular viene con un generador que le permite crear componentes, servicios, interfaces y directivas directamente desde la consola, lo que, según mi experiencia, es muy útil, ya que no hay necesidad de configurar manualmente carpetas, archivos y redundante código a mano, especialmente cuando se utiliza, por ejemplo, el patrón MVC. Typescript viene de fábrica con Angular y te presiona para que lo utilices. Si aún no lo has hecho, aquí tienes una práctica introducción de por qué deberías probarlo - puedes echarle un vistazo aquí.

Al principio, CLI del Angular sólo le pregunta sobre el enrutamiento o los preprocesadores CSS preferidos que, en comparación con Vueno te deja mucho espacio para decidir sobre la estructura y el estilo de tu aplicación. Pero si vas a seguir la convención que te pide que uses, la CLI te va a guiar todo el camino.

Angular CLI

Estructura del proyecto

Vue utiliza SFC (Single File Components), lo que hace que sea bastante sencillo para un nuevo desarrollador empezar a utilizar un framework y encontrar sus pies en el código.

Directivas

Vue también viene de fábrica con directivas como `v-if, v-for`, que son muy intuitivas de usar, ya que son casi una copia de la directiva Angular unos. Vue utiliza la misma convención para la vinculación bidireccional de datos (simplemente anteponiendo el prefijo, es decir, v- en `v-model`) y añadiendo el @/v-on que indica que estamos reaccionando a algo. Angular separa esto indicando en qué dirección vamos utilizando paréntesis para la vinculación de eventos y corchetes para la vinculación de propiedades, es decir, `(change), [ngStyle], [(ngModel)]`.

En VueLa estructura en sí es simple, no hay necesidad de hacer archivos separados para las hojas de estilo y la lógica, por lo que todo está organizado y accesible. Por supuesto, Vue viene con una guía de estilo en la que puedes encontrar reglas recomendadas a seguir a la hora de crear un proyecto; sin embargo, sólo hay unas pocas que sean obligatorias. 

Eventos

En este caso, Vue viene de nuevo con una solución más práctica; a saber, para emitir un evento del componente hijo a su padre todo lo que necesita hacer es (usando Vue 3 Composición API ) toma un método del objeto de contexto en la configuración y simplemente emite lo que necesites en ese momento:

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

También puede hacerlo directamente en la plantilla como respuesta a algún otro evento.

En Angularprimero debe definir un EventEmitter de la siguiente manera:

@Output() customNameForYourEmitter = new EventEmitter();

A continuación, debe llamar a un método de emisión en el EventEmitter:

this.customNameForYourEmitter.emit(this.theDataYouWantToPass);

Ranuras/proyección de contenidos

En ambos frameworks, se puede mover fácilmente el contenido (tanto simple como múltiple) del componente padre a su hijo simplemente añadiendo html adicional dentro de las etiquetas hijo, con ligeras diferencias:

Vue:

``` 

Angular:

Por defecto:
    

Ranura con nombre:
<p yourname>
   Se trata de una ranura con nombre
  </p>
  <p>Esta es una ranura por defecto</p>

Sin embargo, si quieres renderizar condicionalmente algunas partes de tu aplicación, Vue es más intuitivo que Angular y te permite hacerlo más rápido añadiendo el v-if a su directiva que permite mostrar sólo las partes que se necesitan en ese momento.




  

Mientras que el ng-content siempre se renderiza, en este caso es necesario utilizar la opción ng-templatey, posteriormente, cree su propia directiva personalizada:

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

y por el nombre que das a tu ng-template Angular sabrá lo que se debe mostrar:

Además, dentro del componente, querrá proyectar su plantilla para utilizarla en el componente @ContentChild para obtener la plantilla adecuada:

@ContentChild(CustomDirective) ¡contenido!: CustomDirective;

Servicio frente a tienda

Angular en su núcleo te anima a utilizar el patrón de diseño MVC donde puedes utilizar servicios para el modelo. Debido a esto, necesitas aprender el patrón de inyección de dependencias para operar datos libremente en tu aplicación. Te permite separar los efectos secundarios de tus llamadas a la API y utilizar la misma lógica en todo el proyecto inyectando las partes que necesites en cada momento, lo que también lo convierte en un enfoque modular.

Angular también viene con el framework Ngrx/store basado en el patrón Redux en caso de que quieras usar un enfoque más reactivo con observables RxJs. Viene con Acciones que se utilizan para despachar eventos únicos desde componentes y/o servicios, Efectos que manejan efectos secundarios o acciones asíncronas que quieras realizar y Reductores que mutan tu estado.

En VueEl enfoque más popular es utilizar la librería Vuex para la gestión de estados, que también viene con herramientas como Actions, Mutations y Getters, al igual que Ngrx/store, para ayudarte a gestionar y organizar el estado de tu aplicación. Puedes modularizarlo estableciendo diferentes almacenes para tus vistas, por ejemplo, un almacén de usuarios o un almacén de carritos, pero esto puede conducir a problemas de espaciado de nombres, a menos que utilices el método namespaced: true en la declaración de la tienda.

He aquí una comparación entre el enfoque basado en servicios y el Vuex cuando la tarea consiste en obtener unos producto datos para su tienda:

@Injectable() // decorador para indicar que queremos usarlo en DI más adelante
export class ProductosServicio {
  productos privados: Producto[] = [];

  constructor(private backend: BackendService) { }

  getProducts() {
    this.backend.getAll(Product).then( (products: Product[]) => {
      //haz lo que quieras con tus productos
    });
    return this.products;
  }
}

Luego, en el componente, inyectamos nuestro servicio a utilizar:
constructor(private service: HeroService) { }

En Vuesimplemente despachamos una acción que hace una llamada al backend por nosotros:

store.dispatch(getAllProducts)

y en el acciones.ts definimos una acción:

acciones: {
getAllProducts ({ commit }){
    commit('setProducts', await getProducts();); // obtener datos y poner los resultados en el almacén
}}

Obtención de datos

Con VuePuedes usar Axios/Fetch o cualquier librería que quieras usar, es realmente sencillo - sólo tienes que manejar las llamadas asíncronas con promesas o el enfoque que mejor te convenga.

try {
http.get('https://url.to.get.data')
    .then(res => res.json())
    .then(datos => console.log('haz lo que sea necesario'))
} catch (e) {
    /hacer frente a error
}

Angular viene con la librería HttpClient que usa observables, lo que te lleva a otra ventaja - para usarlo apropiadamente y/o manipular datos, necesitas aprender RxJs. De nuevo, puede ser bastante abrumador conseguir fluidez y sentirse familiarizado con esta construcción abstracta al principio.

Puedes utilizar Axios si eso es lo que quieres hacer, pero como dice la página GitHub de Axios: "Axios está fuertemente inspirado en el servicio $http proporcionado en Angular'

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

.pipe(
pluck('resultados'),
tap(console.log('haz el efecto secundario que quieras usar aquí')
catchError((error) => {
        /manejar error
})
)
.subscribe((resultado: TipoResultado[])
    //operación final sobre el resultado dado
)
}

Resumen

| Vue Angular
| ———– | ———– |
| No te obliga a seguir reglas muy estrictas | Requiere el uso de Typescript, componentes/servicios basados en clases |
| Curva de aprendizaje plana, fácil para empezar | Curva de aprendizaje alta (Typescript, RxJs, inyección de dependencias) |
| No hay mucho que configurar, pero te permite generar la estructura del proyecto a través de la consola.
| Marco de trabajo comunitario basado tanto en Angular como en React | Creado y mantenido por Google |
| No se incluye mucho, es necesario instalar librerías externas | Gestión de estado, HttpClient incluido en el framework |

Más información:

JavaScript está totalmente muerto. Un tipo en Internet

Despliegue GraphQL/MongoDB API Usando Funciones Netlify

Cómo matar un proyecto con malas prácticas de codificación

Artículos relacionados

Desarrollo de software

Crear aplicaciones web preparadas para el futuro: ideas del equipo de expertos de The Codest

Descubra cómo The Codest destaca en la creación de aplicaciones web escalables e interactivas con tecnologías de vanguardia, ofreciendo experiencias de usuario fluidas en todas las plataformas. Descubra cómo nuestra experiencia impulsa la transformación...

EL MEJOR
Desarrollo de software

Las 10 mejores empresas de desarrollo de software de Letonia

Conozca las principales empresas de desarrollo de software de Letonia y sus innovadoras soluciones en nuestro último artículo. Descubra cómo estos líderes tecnológicos pueden ayudarle a mejorar su negocio.

thecodest
Soluciones para empresas y escalas

Fundamentos del desarrollo de software Java: Guía para externalizar con éxito

Explore esta guía esencial sobre el desarrollo de software Java outsourcing con éxito para mejorar la eficiencia, acceder a la experiencia e impulsar el éxito de los proyectos con The Codest.

thecodest
Desarrollo de software

La guía definitiva para subcontratar en Polonia

El auge de las outsourcing en Polonia está impulsado por los avances económicos, educativos y tecnológicos, que fomentan el crecimiento de las TI y un clima favorable a las empresas.

TheCodest
Soluciones para empresas y escalas

Guía completa de herramientas y técnicas de auditoría informática

Las auditorías informáticas garantizan sistemas seguros, eficientes y conformes. Obtenga más información sobre su importancia leyendo el artículo completo.

The Codest
Jakub Jakubowicz CTO y Cofundador

Suscríbase a nuestra base de conocimientos y manténgase al día de la experiencia del sector informático.

    Quiénes somos

    The Codest - Empresa internacional de desarrollo de software con centros tecnológicos en Polonia.

    Reino Unido - Sede central

    • Oficina 303B, 182-184 High Street North E6 2JA
      Londres, Inglaterra

    Polonia - Centros tecnológicos locales

    • Parque de oficinas Fabryczna, Aleja
      Pokoju 18, 31-564 Cracovia
    • Embajada del Cerebro, Konstruktorska
      11, 02-673 Varsovia, Polonia

      The Codest

    • Inicio
    • Quiénes somos
    • Servicios
    • Case Studies
    • Saber cómo
    • Carreras profesionales
    • Diccionario

      Servicios

    • Asesoramiento
    • Desarrollo de software
    • Desarrollo backend
    • Desarrollo Frontend
    • Staff Augmentation
    • Desarrolladores de backend
    • Ingenieros de la nube
    • Ingenieros de datos
    • Otros
    • Ingenieros de control de calidad

      Recursos

    • Hechos y mitos sobre la cooperación con un socio externo de desarrollo de software
    • De EE.UU. a Europa: ¿Por qué las startups estadounidenses deciden trasladarse a Europa?
    • Comparación de los polos de desarrollo de Tech Offshore: Tech Offshore Europa (Polonia), ASEAN (Filipinas), Eurasia (Turquía)
    • ¿Cuáles son los principales retos de los CTO y los CIO?
    • The Codest
    • The Codest
    • The Codest
    • Privacy policy
    • Condiciones de uso del sitio web

    Copyright © 2025 por The Codest. Todos los derechos reservados.

    es_ESSpanish
    en_USEnglish de_DEGerman sv_SESwedish da_DKDanish nb_NONorwegian fiFinnish fr_FRFrench pl_PLPolish arArabic it_ITItalian jaJapanese ko_KRKorean nl_NLDutch etEstonian elGreek es_ESSpanish