Herramientas para trabajar con Svelte profesionalmente

1

Proyecto del curso y estado del arte de Svelte

2

Setup inicial con Sapper

3

Estructura de un proyecto en Sapper

Estructura de rutas con Sapper

4

Sistema de rutas y rutas din谩micas en Sapper

5

Layout y estructura principal de nuestro blog

6

Ruta 404 con animaciones

7

Rutas principales del blog: about, contact y tags

Construye el Layout y Newsletter del blog

8

Dise帽o y maquetaci贸n del Header

9

Dise帽o y maquetaci贸n del Nav

10

Dise帽o y maquetaci贸n del Sidebar y Footer

11

Construye un Newsletter para el blog

12

Estructura de los blogposts

13

Secci贸n principal del blog y blogposts

Integraci贸n de analytics, comentarios y tiempo de lectura en tu blog

14

Integraci贸n con Google Analytics

15

Calcula el tiempo de lectura de cada blogpost

16

Muestra un emoji aleatorio en cada blogpost

17

Manejo de fechas dentro del blog con JavaScript Vainilla

18

Estructura del blogpost con comentarios

19

Integraci贸n con Disqus para agregar comentarios

Construye tu API usando Ghost CMS

20

Instalaci贸n de Ghost

21

Configuraci贸n de Ghost en Heroku

22

Ghost Core API

23

Integra la API de Ghost en tu blog con Svelte

24

Guardando la informaci贸n de nuestros blogposts

25

Terminando la integraci贸n

Despliega tu aplicaci贸n

26

Compra de un dominio y manejo del DNS con Cloudflare

27

Deploy a Netlify

28

Deploy a Heroku

SEO y optimizaci贸n de tu sitio web

29

Metadatos y optimizaci贸n del SEO

30

Transforma tu blog en una PWA

31

RSS

32

Terminando el RSS

33

Sitemap

34

Agrega pruebas de integraci贸n con Cypress

C贸mo contin煤a tu camino profesional con Svelte

35

Siguientes pasos con Svelte

A煤n no tienes acceso a esta clase

Crea una cuenta y contin煤a viendo este curso

Integra la API de Ghost en tu blog con Svelte

23/35
Recursos

Aportes 6

Preguntas 1

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesi贸n.

index.js

const fetch = require('node-fetch');
const fs = require('fs');
const postsObj = require('./../routes/blog/_posts.json');
require('dotenv').config();

const API = process.env.GHOST_API;

const fetchData = async () => {
  const response = await fetch(API);
  const data = await response.json();
  const posts = await data.posts.map(post => ({
    title: post.title,
    html: post.html,
    slug: post.slug,
    createdAt: post.created_at,
    id: post.id,
    desc: post.meta_description,
    tag: post.meta_title,
    image: post.feature_image,
  }));

  if (postsObj.length >= 15 ) {
    if(posts[0].title === postsObj[0].title) {
      postsObj.shift();
      postsObj.unshift(posts[0]);
      writeFile(postsObj);
    } else {
      postsObj.unshift(posts[0]);
      writeFile(postsObj);
    }
  } else {
    writeFile(posts);
  }
}

Creo que los else est谩n dem谩s, si eliminamos los else podes ahorrar codigo y unas que otras lineas, les dejo como quedo mi logica:
.

if (postsObj.length >= 15) {
        if (posts[0].title === postsObj[0].title) {
            postsObj.shift()
        }
        postsObj.unshift(posts[0])
        writeFile(postObj) 
    }
    writeFile(posts)

Una manera m谩s corta de retorna la estructura de los posts sin 鈥渞eturn鈥
.

    const posts = await data.posts.map(post => ({
        title: post.title,
        html: post.html,
        slug: post.slug,
        createdAt: post.created_at,
        id: post.id,
        desc: post.meta_description,
        tag: post.meta_title,
        image: post.feature_image,
    }))

Tuve que ver esta clase vaaaarias veces para entenderla ya que no se mucho de backend pero se pudo!

Ac谩 una breve explicaci贸n de la validaci贸n final:

if (postsObj.length >= 15 ) {
        /* Si el t铆tulo del 煤ltimo post de ghost es igual al del json local, 
        procede a eliminar el primer elemnto del json y los vuelve a insertar
        desde Ghost para as铆 actualizarlo */
        if(posts[0].title === postsObj[0].title) {
          postsObj.shift();
          postsObj.unshift(posts[0]);
          writeFile(postsObj);
        } 
        /* Si no es el mismo post, procede a insertar en el json local
        el nuevo post creado en ghost */
        else {
          postsObj.unshift(posts[0]);
          writeFile(postsObj);
        }
      } 
      /* Si no es mayor o igual a 15 posts procede a insertar todos los
      posts con la funcion writeFile() */
      else {
        writeFile(posts);
      }

馃憣