¿Quieres aprender Vue.js desde cero? Obtenga una colección completa de libros de Vue que cubren aspectos fundamentales, proyectos, consejos y herramientas y más con SitePoint Premium. Únase ahora por solo $ 9 / mes o pruebe nuestra prueba gratuita de 7 días .

La mayoría de las veces, al crear su aplicación JavaScript, querrá obtener datos de un Fuente remota o consumir una API . Recientemente busqué en algunas API disponibles al público y descubrí que hay muchas cosas interesantes que se pueden hacer con los datos de estas fuentes.

 Una mujer que recopila datos de los estantes de las bibliotecas

Con Vue .js puede, literalmente, crear una aplicación en torno a uno de estos servicios y comenzar a ofrecer contenido a los usuarios en cuestión de minutos.

Mostraré cómo crear una aplicación de noticias simple que muestre los artículos de noticias más importantes del día. usuarios para filtrar por su categoría de interés, obteniendo datos de la API del New York Times . Puede encontrar el código completo para este tutorial aquí .

Aquí se verá la aplicación final:

 La aplicación web de noticias Vue.js

Para seguir este tutorial , necesitarás un conocimiento muy básico de Vue.js. Puede encontrar una gran guía de inicio para aquí . También usaré la Sintaxis de ES6, y puedes actualizarlo aquí .

Estructura del proyecto

Mantendremos las cosas muy simples al limitarnos a solo 2 archivos: [19659011] ./ app.js
./index.html

app.js contendrá toda la lógica de nuestra aplicación, y el archivo index.html contendrá la vista principal de nuestra aplicación.

Comenzaremos con un marcado marcado básico en index.html :



  
    
     La mejor aplicación de noticias de siempre 
  
  

    

VueNews

A continuación, incluye Vue.js y app.js en la parte inferior del índice . html justo antes de la etiqueta de cierre :

https://unpkg.com/vue
http://app.js

Opcionalmente, se puede incluir Foundation para aprovechar algunos estilos prefabricados y hacer que nuestra vista se vea un poco mejor. Incluya esto dentro de la etiqueta :


Creando una aplicación Vue simple

Primero, crearemos una nueva instancia de Vue en el elemento div # app y simularemos la respuesta del API de noticias utilizando algunos datos de prueba:

 // ./app.js
const vm = new Vue ({
  el: '#app',
  datos: {
    resultados: [
      {title: "the very first post", abstract: "lorem ipsum some test dimpsum"},
      {title: "and then there was the second", abstract: "lorem ipsum some test dimsum"},
      {title: "third time's a charm", abstract: "lorem ipsum some test dimsum"},
      {title: "four the last time", abstract: "lorem ipsum some test dimsum"}
    ]
  }
});

Le decimos a Vue en qué elemento se monta, a través de la opción el y especificamos qué datos usaría nuestra aplicación a través de la opción datos .

Para mostrar este simulacro datos en nuestra vista de aplicación, podemos escribir este marcado dentro del elemento #app :


    

.

    
  

La directiva v-for se utiliza para representar nuestra lista de resultados. También utilizamos llaves dobles para mostrar el contenido de cada una de ellas.

Nota: puede leer más sobre la sintaxis de la plantilla de Vue aquí .

Ahora tenemos la trabajo de diseño básico:

 Aplicación de noticias simple con datos simulados

Obtención de datos de la API

Para utilizar la API de NYTimes, deberá obtener una clave API. Entonces, si aún no tiene uno, diríjase a su página de registro y regístrese para obtener una clave de API para el API .

.

Realización de solicitudes de Ajax y manejo de respuestas

Axios es un cliente HTTP basado en la promesa para realizar solicitudes de Ajax, y funcionará muy bien para nuestros propósitos. Proporciona una API simple y rica. Es bastante similar a la fetch API pero sin la necesidad de agregar un polyfill para navegadores antiguos, y algunas otras sutilezas .

Nota: anteriormente, vue-resource se usaba comúnmente en los proyectos de Vue, pero ahora se retiró .

Incluyendo axios:

  
https://unpkg.com/axios/dist/axios.min.js

Ahora podemos hacer una solicitud para obtener una lista de las mejores historias de la sección home una vez que nuestra aplicación Vue esté montada :

 // ./app.js

const vm = new Vue ({
  el: '#app',
  datos: {
    resultados: []
  }
  montado () {
    axios.get ("https://api.nytimes.com/svc/topstories/v2/home.json?api-key=your_api_key")
    .then (response => {this.results = response.data.results})
  }
});

Recuerda: reemplaza your_api_key con tu clave API real obtenida de NYT Dev Network area .

Ahora podemos ver las noticias en nuestra Página de inicio de la aplicación. No te preocupes por la visión distorsionada; llegaremos a eso en un momento:

 News Feed

La respuesta de la API de NYT se ve así, a través de devtools de Vue:

 Respuesta de la API de NYT - Vue .js news app

Sugerencia: Obtenga Vue Devtools para facilitar la depuración de las aplicaciones de Vue.

Para hacer nuestro trabajo un poco más limpio y reutilizable, haremos algunos pequeños refactorizando e introduciendo una función de ayuda para construir nuestras URL. También registraremos getPosts como un método para nuestra aplicación agregándolo a los métodos objeto :

 const NYTBaseUrl = "https: //api.nytimes. com / svc / topstories / v2 / ";
const ApiKey = "your_api_key";

función buildUrl (url) {
  devolver NYTBaseUrl + url + ".json? api-key =" + ApiKey
}

const vm = new Vue ({
  el: '#app',
  datos: {
    resultados: []
  }
  montado () {
    this.getPosts ('home');
  }
  métodos: {
    getPosts (sección) {
      let url = buildUrl (section);
      axios.get (url) .then ((response) => {
        this.results = response.data.results;
      }). catch (error => {console.log (error);});
    }
  }
});

Podemos realizar algunos cambios más en el aspecto de nuestra vista al introducir una propiedad computada con algunas modificaciones a los resultados originales devueltos por la API:

 // ./app.js

const vm = new Vue ({
  el: '#app',
  datos: {
    resultados: []
  }
  montado () {
    this.getPosts ('home');
  }
  métodos: {
    getPosts (sección) {
      let url = buildUrl (section);
      axios.get (url) .then ((response) => {
        this.results = response.data.results;
      }). catch (error => {console.log (error);});
    }
  }
  calculado: {
    procesadoPublicaciones () {
      deja posts = this.results;

      // Añadir atributo image_url
      posts.map (post => {
        vamos imgObj = post.multimedia.find (media => media.format === "superJumbo");
        post.image_url = imgObj? imgObj.url: "http://placehold.it/300x200?text=N/A";
      });

      // Poner Array en Chunks
      sea ​​i, j, chunkedArray = [] chunk = 4;
      para (i = 0, j = 0; i <posts.length; i + = chunk, j ++) {
        chunkedArray [j] = posts.slice (i, i + chunk);
      }
      volver chunkedArray;
    }
  }
});

En el código anterior, en la propiedad computada processingPosts adjuntamos un atributo image_url a cada objeto de artículo de noticias. Hacemos esto en bucle a través de los resultados de la API, y buscando a través de la matriz multimedia de cada resultado para encontrar un tipo de medio con el formato que necesitamos. Luego, asignamos la URL de ese medio al atributo image_url . En los casos en que los medios no están disponibles, hacemos que la URL predeterminada sea una imagen de Placehold.it .

También escribimos un bucle para agrupar nuestra matriz de resultados en trozos de cuatro Esto se encargará de la visión distorsionada que vimos anteriormente.

Nota: También puedes hacer esta fragmentación fácilmente con una biblioteca como Lodash .

Las propiedades computadas son excelentes para manipulando los datos. En lugar de crear un método y llamarlo cada vez que necesitamos dividir nuestro conjunto de publicaciones, simplemente podemos definirlo como una propiedad computada y usarla como deseemos, ya que Vue actualizará automáticamente las procesadoPosts computado propiedades en cualquier momento resultados cambios.

Las propiedades computadas también se almacenan en la memoria caché según sus dependencias, por lo que mientras resultados no cambie, la propiedad processingPosts devuelve Una versión en caché de sí mismo. Esto ayudará con el rendimiento, especialmente cuando se realiza una manipulación de datos compleja.

A continuación, editamos nuestro marcado en index.html para mostrar nuestros resultados calculados:


    

    
  
  

Ahora la aplicación se ve un poco mejor:

 La aplicación de noticias NYT - Vue.js

Presentando un componente de la lista de noticias

Los componentes pueden usarse para mantener La aplicación es modular, y básicamente amplía HTML. La "lista de noticias" se puede refactorizar a un componente para que, por ejemplo, si la aplicación crece y se toma la decisión de usar la lista de noticias en cualquier otro lugar, será fácil:

 // ./app.js

Vue.component ('lista de noticias', {
  utilería: ['results'],
  plantilla: `
    
          

`,   calculado: {     procesadoPublicaciones () {       deja posts = this.results;       // Añadir atributo image_url       posts.map (post => {         vamos imgObj = post.multimedia.find (media => media.format === "superJumbo");         post.image_url = imgObj? imgObj.url: "http://placehold.it/300x200?text=N/A";       });       // Poner Array en Chunks       sea ​​i, j, chunkedArray = [] chunk = 4;       para (i = 0, j = 0; i {         this.results = response.data.results;       }). catch (error => {console.log (error);});     }   } });

En el código anterior, registramos un componente global usando la sintaxis Vue.component (tagName, opciones) . Es recomendable utilizar un guión al definir los nombres de las etiquetas, para que no coincidan con ninguna de las etiquetas HTML actuales o futuras.

Las opciones adicionales que presentamos se explican a continuación.

  • Props : esto es un matriz de datos que queremos pasar el componente desde el ámbito principal. Agregamos resultados porque cargamos eso desde la instancia principal de la aplicación.
  • Plantilla : aquí definimos el marcado para la lista de noticias. Observe que envolvimos nuestra lista en una etiqueta
    . Esto se debe a que un componente debe tener un solo elemento raíz, y no varios (que habrían sido creados por nuestra div.row iteración).

Ajuste de nuestro marcado para usar nuestras noticias -list componente, y pasándole los datos de resultados se ve así:



VueNews

  

Nota: los componentes también se pueden crear como componentes de un solo archivo ( .vue ), y luego se analizan mediante una herramienta de compilación como webpack . Aunque esto está fuera del alcance de este tutorial, se recomienda para aplicaciones más grandes o más complejas.

Para llevar las cosas más lejos, incluso puede decidir ir a hacer de cada artículo un componente y hacer las cosas aún más modulares. .

Implementación de filtros de categoría

Para enriquecer nuestra aplicación, ahora podemos introducir filtros de categoría para permitir a los usuarios mostrar solo ciertas categorías de noticias.

Primero, registraremos la lista de secciones y la sección que está visto en nuestra aplicación:

 const SECTIONS = "hogar, artes, automóviles, libros, negocios, moda, comida, salud, información privilegiada, revista, películas, nacional, nyregion, obituarios, opinión, política, realestate, ciencia, deportes, sundayreview, tecnología, teatro, revista, viajes, resultados, mundo "; // Desde NYTimes

const vm = new Vue ({
  el: '#app',
  datos: {
    resultados: [],
    secciones: SECTIONS.split (','), // crear una matriz de las secciones
    sección: 'home', // establece la sección predeterminada en 'home'
  }
  montado () {
    this.getPosts (this.section);
  }
  // ....
});

A continuación, podemos agregar esto dentro de nuestro div # app contenedor:


Filtrar por categoría
Recuperar       
    
  

Cuando se hace clic en el botón "Recuperar", activamos el método getPosts para la sección seleccionada escuchando el evento click con la sintaxis @click .

Toques finales y demostraciones

Decidí agregar algunos toques menores (opcionales) para mejorar la experiencia de la aplicación, como introducir una imagen de carga.

Puedes ver una demostración en el CodePen a continuación ( funcionalidad limitada):

Vea la aplicación VueJS and NYTimes News de SitePoint ( @SitePoint ) en CodePen . Alternativamente, usted puede ver una versión en vivo aquí .

Conclusión

En este tutorial, hemos aprendido cómo comenzar un proyecto Vue.js desde cero, cómo obtener datos de una API usando axios y cómo manejar las respuestas y manipular los datos utilizando componentes y propiedades computadas.

Ahora tenemos una aplicación funcional Vue.js 2.0 ap p, construido alrededor de un servicio API. Hay un montón de mejoras que podrían realizarse al conectar algunas otras API. Por ejemplo, podríamos:

  • poner en cola automáticamente las publicaciones de los medios sociales de una categoría usando la API de búfer
  • . Marcar las publicaciones para leerlas más tarde, usando la API de bolsillo

… y así

El código completo para este proyecto también está alojado en GitHub por lo que puede clonar, ejecutar y realizar las mejoras que desee.


READ MORE – CLICK HERE

www.Down.co.ve


from Down.co.ve http://bit.ly/2Un8h6e
via www.Down.co.ve