<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/"
    xmlns:atom="http://www.w3.org/2005/Atom" xmlns:media="http://search.yahoo.com/mrss/" version="2.0">
    <channel>
        
        <title>
            <![CDATA[ frontend - freeCodeCamp.org ]]>
        </title>
        <description>
            <![CDATA[ Descubre miles de cursos de programación escritos por expertos. Aprende Desarrollo Web, Ciencia de Datos, DevOps, Seguridad y obtén asesoramiento profesional para desarrolladores. ]]>
        </description>
        <link>https://www.freecodecamp.org/espanol/news/</link>
        <image>
            <url>https://cdn.freecodecamp.org/universal/favicons/favicon.png</url>
            <title>
                <![CDATA[ frontend - freeCodeCamp.org ]]>
            </title>
            <link>https://www.freecodecamp.org/espanol/news/</link>
        </image>
        <generator>Eleventy</generator>
        <lastBuildDate>Mon, 25 May 2026 10:43:21 +0000</lastBuildDate>
        <atom:link href="https://www.freecodecamp.org/espanol/news/tag/frontend/rss.xml" rel="self" type="application/rss+xml" />
        <ttl>60</ttl>
        
            <item>
                <title>
                    <![CDATA[ Como ocultar las llaves API en aplicaciones frontend usando Netlify Functions ]]>
                </title>
                <description>
                    <![CDATA[ Netlify es una plataforma muy popular para desarrollo web que facilita la compilación, despliegue y administración de sitios web. Puedes usar Netlify como hosting para tus sitios y te ayuda a editarlos y publicar los cambios que realices. También te brinda características adicionales como seguridad, servicios de autenticación y autorización ]]>
                </description>
                <link>https://www.freecodecamp.org/espanol/news/como-ocultar-las-claves-api-en-aplicaciones-frontend-usando-netlify-functions/</link>
                <guid isPermaLink="false">64b5b77c363a37071b881189</guid>
                
                    <category>
                        <![CDATA[ api ]]>
                    </category>
                
                    <category>
                        <![CDATA[ frontend ]]>
                    </category>
                
                    <category>
                        <![CDATA[ serverless ]]>
                    </category>
                
                    <category>
                        <![CDATA[ lambda ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Israel Palma ]]>
                </dc:creator>
                <pubDate>Fri, 24 Nov 2023 18:00:00 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/espanol/news/content/images/2023/07/FCC-hide-API-keys-1.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>Artículo original:</strong> <a href="https://www.freecodecamp.org/news/hide-api-keys-in-frontend-apps-using-netlify-functions/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">How to Hide API Keys in Frontend Apps using Netlify Functions</a>
      </p><p>Netlify es una plataforma muy popular para desarrollo web que facilita la compilación, despliegue y administración de sitios web.</p><p>Puedes usar Netlify como hosting para tus sitios y te ayuda a editarlos y publicar los cambios que realices. También te brinda características adicionales como seguridad, servicios de autenticación y autorización de usuarios y más.</p><p>Esta guía se enfoca en mostrarte como configurar una función serverless en Netlify para ocultar las API keys de la aplicación del lado del cliente.</p><p>Para esta lección crearás un motor de búsqueda de imágenes y lo desplegarás en Netlify, que además realizará llamadas a la API de Pixabay usando funciones serverless.</p><p>Este es el mismo proceso para cualquier otra aplicación front-end (cliente) elaborada con JavaScript, con librerías JavaScript o frameworks JS como ReactJS, NextJS, VueJS, Angular, etc.</p><h3 id="prerrequisitos"><strong>Prerrequisitos</strong></h3><p>Para seguir los pasos en este tutorial deberás contar con lo siguiente:</p><ul><li>Una cuenta en Netlify (<a href="https://app.netlify.com/signup">regístrate aquí</a>)</li><li>Entendimiento básico de APIs RESTFUL, funciones Lambda y conceptos de asincronía (async/await).</li></ul><p>El demo terminado lo puedes encontrar en la rama principal de GitHub o en este enlace: <code>https://netlify-func-demo.netlify.app</code>.</p><h2 id="-qu-es-una-funci-n-netlify"><strong>¿Qué es una función Netlify?</strong></h2><p>Una función Netlify es una función serverless o lambda cuyo acceso es provisto por Netlify. Se usan para desplegar código serverless o lógica de "servidor" (back-end) pero sin la necesidad de realmente administrar un servidor dedicado.</p><p>El propósito de una función Netlify es manejar código con base en eventos (event-driven) y enviar solicitudes HTTP que devuelvan una respuesta en formato JSON.</p><blockquote>"Las funciones serverless, llamadas comercialmente "funciones Netlify" por ejecutarse en la plataforma de Netlify, son una manera de desplegar código del lado del servidor en forma de API endpoints" - Documentación Netlify </blockquote><p>La función accede de manera segura el entorno de las variables en segundo plano ("tras bamablinas") mediante una función lambda de Amazon Web Services (AWS).</p><p>Las credenciales secretas como los tokens de acceso o claves API que se ocultan sólo usando variables de entorno son menos seguras. Esto se debe a que pueden ser fácilmente obtenidas usando las "Developer Tools" (herramientas de desarrollo) a traves de la API "fetch request" del navegador.</p><p>Las claves API, si son interceptadas pueden ser mal usadas por actores maliciosos lo que podría afectar a tu aplicación o incrementar tus costos si esta depende de un servicio API de paga.</p><p>Otras funciones serverless utilizadas para ejecutar código sin tener que manejar servidores incluyen: las AWS Lambda Functions, Azure Functions y Google Cloud Functions. </p><h2 id="c-mo-configurar-una-aplicaci-n-cliente"><strong>Cómo configurar una aplicación cliente</strong></h2><h3 id="c-mo-clonar-la-aplicaci-n-demo"><strong>Cómo clonar la aplicación demo</strong></h3><p>Para empezar con este tutorial puedes clonar la "aplicación motor de búsqueda de fotos de stock" desde su &nbsp;<a href="https://github.com/frankiefab100/netlify-serverless-functions-demo/tree/main">repositorio GitHub</a>. Mira la previsualización en Netlify en <a href="https://netlify-func-demo.netlify.app/">https://netlify-func-demo.netlify.app</a>.</p><p>El primer paso es clonar el repositorio:</p><pre><code class="language-bash">git clone https://github.com/frankiefab100/netlify-serverless-functions-demo.git</code></pre><p>Paso siguiente, cambia (ingresa) al directorio <strong><strong>netlify-serverless-functions-demo</strong>.</strong></p><pre><code class="language-bash"> cd netlify-serverless-functions-demo</code></pre><p>Luego tendrás que instalar las dependencias.</p><pre><code class="language-bash">npm install
#OR 
yarn add</code></pre><p>Ahora ejecuta el servidor de desarrollo. Ejecuta el siguiente comando para este propósito:</p><pre><code class="language-bash">netlify dev</code></pre><p>La aplicación estará disponible en: <code>https://localhost:8888</code>.</p><p>Alternativamente puedes omitir los pasos anteriores si quieres crear la aplicación desde cero. En el próximo paso crearás una aplicación JavaScript para la búsqueda de fotos stock. </p><h3 id="c-mo-construir-la-aplicaci-n-demo-usando-javascript"><strong>Cómo construir la aplicación demo usando JavaScript</strong></h3><p>El primer paso es configurar la aplicación front-end (cliente). Abre tu editor de código favorito como, por ejemplo: VS Code.</p><p>A continuación, crea la carpeta <strong>dist</strong> y dentro crea el archivo index.html. Copia y pega ahí el siguiente código:</p><pre><code class="language-html">&lt;!DOCTYPE html&gt;
&lt;html lang="en"&gt;
  &lt;head&gt;
    &lt;meta charset="UTF-8" /&gt;
    &lt;meta http-equiv="X-UA-Compatible" content="IE=edge" /&gt;
    &lt;meta name="viewport" content="width=device-width, initial-scale=1.0" /&gt;
    &lt;link rel="stylesheet" href="style.css" /&gt;
    &lt;title&gt;Stock Photos Search Engine&lt;/title&gt;
  &lt;/head&gt;
  &lt;body&gt;
    &lt;div class="container"&gt;
      &lt;header&gt;
        &lt;h1&gt;Search For Stock Photos&lt;/h1&gt;
        &lt;div class="search-section"&gt;
          &lt;input
            type="text"
            name="search"
            class="search"
            placeholder="Enter a keyword"
          /&gt;
          &lt;input
            id="searchBtn"
            class="search-btn"
            type="submit"
            value="Search"
          /&gt;
        &lt;/div&gt;
      &lt;/header&gt;

      &lt;div class="photo-wrapper"&gt;
        &lt;img src="" alt="" class="photo" /&gt;
      &lt;/div&gt;
    &lt;/div&gt;

    &lt;script src="./script.js" type="module"&gt;&lt;/script&gt;
  &lt;/body&gt;
&lt;/html&gt;</code></pre><p>En el mismo directorio <code>dist</code> agrega la siguiente hoja de estilos en un archivo llamado style.css:</p><pre><code class="language-css">/* dist/style.css */
* {
  box-sizing: border-box;
  margin: 0;
  padding: 0;
}

body {
  color: #222;
  font-family: "Roboto", sans-serif;
  font-size: 1rem;
  margin: 0 auto;
  width: 100vw;
  height: 100vh;
}

.container {
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  text-align: center;
  min-height: 100vh;
  min-width: 100vw;
  width: 100%;
  height: 100%;
}

h1 {
  padding-bottom: 20px;
}

.search-section {
  display: inline;
  text-align: center;
  min-width: 310px;
}

.search,
.search-btn {
  border: none;
  border-radius: 5px;
  font-size: 1rem;
  padding: 15px;
  height: 50px;
}

.search {
  background-color: #d1f3bf;
  color: #222;
  min-width: 225px;
}

.search-btn {
  background-color: #04ab04;
  color: #f6f6f6;
  cursor: pointer;
  margin-left: 5px;
  min-width: 80px;
  transition: all 0.3s ease-in-out;
}

.search-btn:hover {
  background-color: #2dc22d;
}

.photo-wrapper {
  display: flex;
  gap: 15px;
  margin: 30px;
}

.photo-wrapper img {
  width: 200px;
}</code></pre><h2 id="crea-una-cuenta-gratuita-en-pixabay"><strong>Crea una cuenta gratuita en Pixabay </strong></h2><p>El primer paso para utilizar la <a href="https://pixabay.com/api/docs/">Pixabay API</a> es darse de alta una cuenta con tu correo electrónico.</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/02/Pixabay-API-Documentation.png" class="kg-image" alt="Pixabay-API-Documentation" width="600" height="400" loading="lazy"><figcaption>Pixabay API key section</figcaption></figure><p>Como se muestra en la imagen de arriba, tus llaves API las puedes encontrar debajo de la seccion de parámetros en la <a href="https://pixabay.com/api/docs/">página oficial de documentación de Pixabay API</a>.</p><h3 id="crea-una-variable-de-entorno"><strong>Crea una variable de entorno</strong></h3><p>Las variables de entorno (comúnmente abreviadas como "env") son combinaciones pares de clave/valor que pueden afectar el comportamiento y los procesos de un sistema operativo o aplicación.</p><p>Usar variables de entorno se recomienda para configurar servicios de terceros y sus credenciales durante el desarrollo.</p><h3 id="instala-dotenv"><strong>Instala dotenv</strong></h3><p>Una vez que haya completado la creación de tu cuenta en Pixabay, abre tu terminal e instala el paquete <strong>dotenv</strong>. Esto permitirá que tu aplicación pueda leer las variables de entorno del archivo <strong>.env</strong>.</p><figure class="kg-card kg-code-card"><pre><code class="language-javascript">npm install dotenv
#O bien
yarn add -D dotenv</code></pre><figcaption>Usando tu terminal o línea de comandos</figcaption></figure><p>En el próximo paso podrás guardar la clave API en el archivo <strong>.env</strong>.</p><h3 id="crea-el-archivo-env"><strong>Crea el archivo .env</strong></h3><p>En la raíz del directorio de tu aplicación crea el archivo <strong>.env</strong> y almacena las llaves (keys) API copiadas de tu perfil Pixabay.</p><pre><code class="language-plaintext">PIXABAY_API_KEY=123456-7890</code></pre><p>Donde <code>PIXABAY_API_KEY=123456-7890</code> representa la llave y su valor asociado.</p><p><strong><strong>Not</strong>a: </strong>Reemplaza este par clave/valor con el valor apropiado.</p><h3 id="crea-el-archivo-gitignore"><strong>Crea </strong>el archivo<strong> .gitignore</strong></h3><p>Para evitar incluir archivos y valores sensibles como <code>node_modules</code> y <code>secret keys</code> &nbsp;en cada commit en repositorios públicos, crea el archivo <strong>.gitignore</strong> en la misma carpeta raíz del proyecto y agrega lo siguiente:</p><figure class="kg-card kg-code-card"><pre><code class="language-plaintext">node_modules
.env
.netlify</code></pre><figcaption>.gitignore</figcaption></figure><p>La carpeta <strong>.netlify</strong> que contiene funciones serverless compiladas y otros archivos serán excluidos cuando el proyecto se empuje a GitHub o a cualquier otro sistema de control de versiones.</p><h3 id="crea-una-funci-n-get-request"><strong>Crea una función get request</strong></h3><p>Ahora deberás añadir la lógica para realizar la petición fetch en el archivo <strong>script.js</strong>. Ajustaremos la lógica más adelante usando funciones Netlify.</p><pre><code class="language-javascript">/* dist/script.js */
const dotenv = require("dotenv").config();

const searchbar = document.querySelector(".search");
const submitBtn = document.querySelector(".search-btn");
const photoWrapper = document.querySelector(".photo-wrapper");

submitBtn.addEventListener("click", () =&gt; {
  getPhoto(searchbar.value);
  searchbar.value = "";
});

window.addEventListener("keydown", (e) =&gt; {
  if (e.keyCode === 13) {
    getPhoto(searchbar.value);
    searchbar.value = "";
  }
});

async function getPhoto(keyword) {
  const apiKey = PIXABAY_API_KEY;
  let apiURL = `https://pixabay.com/api/?key=${apiKey}&amp;q=${keyword}&amp;image_type=photo&amp;safesearch=true&amp;per_page=3`;

  try {
    const response = await fetch(apiURL, {
      method: "GET",
      headers: { accept: "application/json" },
    });
    const data = await response.json();

    let imageURL = data.hits;

    imageURL.forEach((result) =&gt; {
      let imageElement = document.createElement("img");
      imageElement.setAttribute("src", `${result.webformatURL}`);
      photoWrapper.appendChild(imageElement);
    });
  } catch (error) {
    alert(error);
  }
}</code></pre><p><strong>Nota: </strong>Como he mencionado anteriormente, si se publica este repositorio en GitHub, podremos acceder a la clave API en el "lado del cliente" desde un navegador, aunque hayamos excluido el archivo <code>.env</code>, mas adelante veremos como. </p><p>Para ilustrar esto, selecciona la rama <code>testing</code> <a href="https://github.com/frankiefab100/netlify-serverless-functions-demo/tree/testing">del repositorio de esta aplicación</a>. La <a href="https://testing--netlify-func-demo.netlify.app/">previsualización del sitio </a>mostrara los siguientes errores de referencia (Reference Errors) en la consola del navegador: </p><pre><code class="language-bash">Uncaught ReferenceError: require is not defined
Uncaught ReferenceError: require is not defined at getPhotos
Uncaught ReferenceError: process is not defined at getPhotos</code></pre><p>Esto se debe a que no hay manera de vincular con las variables de entorno especificadas en el archivo <strong>.env, </strong>ya que este no se envió en el commit al repositorio público en GitHub.</p><p>En el siguiente paso, selecciona y clona la rama <code>testing</code> en tu máquina de forma local con los siguientes comandos:</p><pre><code class="language-bash">git clone https://github.com/frankiefab100/netlify-serverless-functions-demo.git
cd netlify-serveless-functions-demo
npm install
netlify dev</code></pre><p>La aplicación estará disponible en tu navegador en la dirección <code>localhost:8888</code>.</p><p>Ahora abre las herramientas para desarrolladores (<strong>Developer Tools) </strong>o<strong> </strong>haz clic derecho y selecciona inspeccionar. O puedes presionar la tecla <strong>F12</strong>. Luego vea la pestaña <strong>Network</strong> y haz clic en la URL de la petición del archivo <code>getPhotos.js</code>. </p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/02/Screenshot--124----Copy.png" class="kg-image" alt="Screenshot--124----Copy" width="600" height="400" loading="lazy"><figcaption>Clave API mostrada en la pestaña Red (Network) en las herramientas de Desarrollo</figcaption></figure><p>Ahora deberías poder ver la clave API expuesta públicamente en la sección de encabezados de la pestaña <strong>Network</strong> donde fue devuelta con los datos de la respuesta en tu navegador.</p><p>Esto es un problema de seguridad ya que la pestaña Network en las herramientas de desarrollo típicamente permite mostrar información tal como la URL de la petición, el estado y los datos de la respuesta.</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/02/Screenshot--127----Copy.png" class="kg-image" alt="Screenshot--127----Copy" width="600" height="400" loading="lazy"><figcaption>Clave de la API devuelta como dato de respuesta y expuesto en el URL de la petición</figcaption></figure><p>En la siguiente sección encontraras la manera segura de ocultas la clave API utilizando las funciones Netlify. </p><h2 id="c-mo-empezar-a-usar-netlify-functions"><strong>Cómo empezar a usar Netlify Functions</strong></h2><p>Primero, necesitarás iniciar sesión en tu terminal e instalar la <strong>Netlify CLI</strong> y <strong>Lambda</strong> como dependencias de desarrollo. Puedes hacerlo al ejecutar este comando:</p><pre><code class="language-bash">npm install -g netlify-cli netlify-lambda
#OR 
yarn add -D netlify-cli netlify-lambda --save-dev</code></pre><h3 id="agrega-los-comandos-personalizados-build-y-dev-en-package-json"><strong>Agrega los comandos personalizados build y dev en package.json</strong></h3><p>Estos comandos, crearán e iniciarán la aplicación en el servidor y también la ejecutarán en el nevegador. &nbsp;Aquí puedes ver un ejemplo de como podrías agregar este script con comandos en <strong>el archivo package.json</strong>:</p><pre><code class="language-bash">"scripts": {
   "build": "npm run-script",
   "dev": "netlify dev"
 }</code></pre><h3 id="instala-axios"><strong>Instala Axios</strong></h3><p>Usaremos el método <code>axios.get</code> porque esta función de Node difiere del método fetch en que este último está pensado para correr en el navegador.</p><p>Para instalar Axios, abre tu terminal e ingresa el comando:</p><pre><code class="language-bash">npm install axios
#OR
yarn add -D axios</code></pre><p>En este caso vamos a trabajar nuestra aplicación solo con JavaScript puro (vanilla JS), es decir sin usar librerías o marcos de trabajo para nuestro frontend, por lo que deberás importar axios de la siguiente manera: </p><pre><code class="language-javascript">const axios = require("axios");</code></pre><p>Para cuando se usan librerias como React, debes importar asi: </p><pre><code class="language-javascript">import axios from "axios";</code></pre><h3 id="crea-una-funci-n-serverless"><strong>Crea una función serverless </strong></h3><p>En la raíz del proyecto, crea una carpeta llamada <code>netlify</code> y a su vez dentro de este crea otra carpeta <code>functions</code>. En esta carpeta <code>functions</code> crea un archivo llamado <code>getPhotos.js</code>.</p><p>Crearás una función serverless en el archivo <code>getPhotos</code>. Esto ocultará efectivamente las llaves API cuando traigamos las imágenes desde la <a href="https://pixabay.com/api">API de Pixabay</a>.</p><pre><code class="language-javascript">//netlify/functions/getPhotos.js 
require("dotenv").config();

const axios = require("axios");

exports.handler = async (event, context) =&gt; {
  try {
    const { keyword } = event.queryStringParameters;
    let response = await axios.get(
      `https://pixabay.com/api/?key=${process.env.PIXABAY_API_KEY}&amp;q=${keyword}&amp;image_type=photo&amp;safesearch=true&amp;per_page=3`,
      {
        headers: { Accept: "application/json", "Accept-Encoding": "identity" },
        params: { trophies: true },
      }
    );

    let imageURL = response.data.hits;

    return {
      statusCode: 200,
      body: JSON.stringify({ imageURL }),
    };
  } catch (error) {
    return {
      statusCode: 500,
      body: JSON.stringify({ error }),
    };
  }
};</code></pre><p>Aquí la clave <code>process.env.PIXABAY_API_KEY</code> hace referencia al entorno de configuración de la clave API especificado en el archivo <code>.env</code> para el modo de desarrollo.</p><p>El parámetro <code>keyword</code> acepta una cadena de texto (string) que es accesible en la propiedad <code>queryStringParameters</code> y devuelve datos commo respuesta almacenados en la variable <code>imageURL</code>. Esta será enviada al archivo <code>script.js</code> como respuesta a la petición (veremos esto más adelante).</p><p>Si la petición GET es exitosa, devolverá una respuesta con el código (<code>statusCode</code>) 200 y el objeto JSON correspondiente. En caso de errores, recibiremos una alerta con el mensaje y código de estado.</p><p>Debido a cambios de versión, Axios podría devolver un Buffer como respuesta en tu terminal que se vera algo como esto:</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/02/netlify-data.JPG" class="kg-image" alt="netlify-data" width="600" height="400" loading="lazy"><figcaption>Buffer de respuesta de Axios en la terminal</figcaption></figure><p>Para evitar esto deberás adjuntar lo siguiente a la petición GET:</p><pre><code class="language-javascript"> let response = await axios.get(
      `https://pixabay.com/api/?key=${process.env.PIXABAY_API_KEY}&amp;q=${keyword}&amp;image_type=photo&amp;safesearch=true&amp;per_page=3`,
      {
        headers: { Accept: "application/json", "Accept-Encoding": "identity" },
        params: { trophies: true },
      }
    );</code></pre><h3 id="crea-un-archivo-de-configuracion-netlify"><strong>Crea un archivo de configuracion Netlify</strong></h3><p>En la raíz del proyecto, crea el archivo <code>netlify.toml</code>. Este archivo especifica como es que Netlify construirá y desplegará tu aplicación.</p><p>Ahora, agrega la siguiente configuración en el archivo <code>netlify.toml</code>:</p><pre><code class="language-bash">[build]
  command = "npm run build"
  functions = "netlify/functions"
  publish = "dist"</code></pre><p><strong><strong>Not</strong>a<strong>:</strong></strong></p><ul><li><code>command = "npm run build"</code> ejecuta la Netlify CLI (Interfaz de Línea de Comandos) para que realice la construcción de la aplicación a partir de las funciones. &nbsp;</li><li><code>functions = "netlify/functions"</code> indica que las funciones en <code>getPhotos</code> existen en ña carpeta <code>netlify/functions</code>. </li><li><code>publish = "dist"</code> identifica <code>dist</code> como la carpeta desde donde será "servido" este archivo. </li></ul><h3 id="edita-el-archivo-script-js-con-la-url-para-las-peticiones-a-netlify-functions"><strong>Edita el archivo script.js con la URL para las peticiones a Netlify functions</strong></h3><p>Siguiente paso, edita la <code>apiURL</code> de esto:</p><pre><code class="language-javascript">let apiURL = `https://pixabay.com/api/?key=${apiKey}&amp;q=${keyword}&amp;image_type=photo&amp;safesearch=true&amp;per_page=3`;</code></pre><p>A esto (el endpoint para la petición HTTP a las Netlify Functions):</p><pre><code class="language-javascript">  let apiURL = `/.netlify/functions/getPhotos?keyword=${keyword}`;</code></pre><p>Esta función "serverless" será consultada desde el lado del cliente de tu aplicación mediante el endpoint: <code>/.netlify/functions/getPhotos</code>. Una vez que la solicitud es enviada, la función <code>getPhotos</code> será invocada desde <code>script.js</code>. </p><p>La respuesta <code>imageURL</code> obtenida de la Netlify functions <code>getPhotos</code> será pasada o enviada como el valor asignado al parámetro <code>keyword</code> en el "query string" (cadena de texto de consulta) de la función. Su contenido será recorrido mediante un ciclo for para devolver las 3 imágenes desde la API de Pixabay. </p><p>El archivo <strong>script.js</strong> debe verse así:</p><pre><code class="language-javascript">/* dist/script.js */
const searchbar = document.querySelector(".search");
const submitBtn = document.querySelector(".search-btn");
const photoWrapper = document.querySelector(".photo-wrapper");

submitBtn.addEventListener("click", () =&gt; {
  getPhoto(searchbar.value);
  searchbar.value = "";
  photoWrapper.innerHTML = "";
});

window.addEventListener("keydown", (e) =&gt; {
  if (e.keyCode === 13) {
    getPhoto(searchbar.value);
    searchbar.value = "";
    photoWrapper.innerHTML = "";
  }
});

async function getPhoto(keyword) {
  let apiURL = `/.netlify/functions/getPhotos?keyword=${keyword}`;

  try {
    const response = await fetch(apiURL, {
      method: "GET",
      headers: { accept: "application/json" },
    });
    const data = await response.json();

    for (let i = 0; i &lt; data.imageURL.length; i++) {
      let imageElement = document.createElement("img");
      imageElement.setAttribute("src", `${data.imageURL[i].webformatURL}`);
      photoWrapper.appendChild(imageElement);
    }
  } catch (error) {
    alert(error);
  }
}</code></pre><p><strong>Nota: </strong>En el código de arriba mantiene tu variable de entorno segura ya que se accede a esta desde una función serverless.</p><p><strong>Ejecuta el servidor de desarrollo</strong></p><p>Ahora, ejecuta tu aplicación con el siguiente comando: </p><pre><code class="language-bash">netlify dev</code></pre><p>Esto hará que se cargue la función <strong>getPhotos</strong> mediante <code>https://localhost:8888/.netlify/functions/getPhotos.</code></p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/02/netlify-dev-terminal.JPG" class="kg-image" alt="netlify-dev-terminal" width="600" height="400" loading="lazy"><figcaption>Resultado en terminal de netlify build</figcaption></figure><p>Luego, inicia el servidor de desarrollo y lanza la aplicación en tu navegador por defecto en &nbsp;<code>localhost:8888</code>.</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/02/netlify-success2.JPG" class="kg-image" alt="netlify-success2" width="600" height="400" loading="lazy"><figcaption>La función Netlify está ahora lista en https://localhost:8888</figcaption></figure><p>En este punto, la configuración de la función Netlify está completa y ya es posible realizar solicitudes <code>GET</code> HTTP.</p><h3 id="c-mo-realizar-solicitudes-para-traer-datos"><strong>Cómo realizar solicitudes para traer datos</strong></h3><p>Ahora que ya tienes la aplicación servida, hagamos una solicitud (fetch) para traer datos. Ingresa algún texto en el campo input y dale <strong>Enter o </strong>haz clic en el botón para traer las imágenes desde la API de Pixabay. </p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/02/Stock-Photos-Search-Engine--1-.png" class="kg-image" alt="Stock-Photos-Search-Engine--1-" width="600" height="400" loading="lazy"><figcaption>Imágenes de flores buscados dese la API de Pixabay</figcaption></figure><p>Para mayor información acerca del API de Pixabay, ve a su <a href="https://pixabay.com/api/docs">sitio oficial de documentación</a>. </p><p>El comando anterior enviará una solicitud a la función serverless y luego devolverá seis respuestas. Aquí cómo se verá la respuesta en la ventana de tu terminal:</p><blockquote>Request from ::1: GET /.netlify/functions/getPhotos?keyword=flower<br>Response with status 200 in 4895 ms<strong>.</strong></blockquote><p>También puedes utilizar las herramientas de desarrollador (<strong>Developer Tools)</strong> en la pestaña <strong>Network </strong>(Red) para validar la solicitud.</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/02/Screenshot--118----Copy.png" class="kg-image" alt="Screenshot--118----Copy" width="600" height="400" loading="lazy"><figcaption>Datos de respuesta de la función serverless de la API</figcaption></figure><p>La solicitud devuelve la URL de nuestra aplicación, la función Netlify <strong>getPhotos</strong>, el script.js y las imágenes de Pixabay.</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/02/Screenshot--120-.png" class="kg-image" alt="Screenshot--120-" width="600" height="400" loading="lazy"><figcaption>Respuesta de la petición realizada a la función Netlify vista en la sección de encabezado en la pestaña de Red (Network) del navegador.</figcaption></figure><h2 id="c-mo-hospedar-la-aplicaci-n-en-el-repositorio-remoto"><strong>Cómo hospedar la aplicación en el repositorio remoto</strong></h2><p>Ahora, deberías empujar tu proyecto al hosting de control de versiones GitHub.</p><pre><code class="language-javascript">git add .
git commit -m"initial commit"
git push origin -u main</code></pre><h2 id="c-mo-desplegar-la-aplicaci-n-y-la-funci-n-serverless-en-netlify"><strong>Cómo desplegar la aplicación y la función serverless en Netlify</strong></h2><p>Una vez que hayas publicado el proyecto en GitHub, inicia sesión en <a href="https://app.netlify.com/">Netlify</a> y conecta tu cuenta GitHub para dar autorización.</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/02/Screenshot--130-.png" class="kg-image" alt="Screenshot--130-" width="600" height="400" loading="lazy"><figcaption>Importar un proyecto para despliegue en Netlify</figcaption></figure><p>Como se muestra en la imagen de arriba, haz clic en <code>Add New Project</code>y luego busca el repositorio de tu aplicación en la lista desplegable. Enseguida, haz clic en <code>Build Your Site</code>. Esto tomará algunos minutos en completarse. </p><p>Acabas de desplegar la aplicación usando la UI de Netlify. Ahora tu aplicación estará disponible en: <code>https://netlify-func-demo.netlify.app.</code></p><p>La URL para peticiones "fetch" (del inglés traer) debería verse como ésta: <code>https://netlify-func-demo.netlify.app/.netlify/functions/getPhotos</code>.</p><h2 id="opcional-c-mo-configurar-la-aplicaci-n-desde-el-tablero-netlify"><strong>Opcional - Cómo configurar la aplicación desde el tablero Netlify </strong></h2><p>Alternativamente, puedes configurar el comando Netlify desde el tablero (o panel de control, del inglés, Dashboard). Si estas configuraciones ya han sido especificadas en el archivo <strong>netlify.toml</strong>, se sobreescribirán cualquier configiracion correspondiente.</p><p>Primero, selecciona la configuración de la carpeta del proyecto en "Site settings". </p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/02/Site-overview-netlify-func-demo1.png" class="kg-image" alt="Site-overview-netlify-func-demo1" width="600" height="400" loading="lazy"><figcaption>Opciones de Sitio para la carpeta del proyecto en Netlify</figcaption></figure><h3 id="configura-el-comando-build-y-el-directorio-p-blico"><strong>Configura el comando Build y el directorio público </strong></h3><p>Ve a <code>Site settings</code>&gt; <code>Deploy</code> &gt; <code>Build &amp; Deploy</code>, edita los siguientes comandos y luego guarda los cambios:</p><ul><li>Commando build: <strong><strong>npm run build</strong></strong></li><li>Directorio público: <strong><strong>dist</strong></strong></li></ul><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/02/Screenshot--132-.png" class="kg-image" alt="Screenshot--132-" width="600" height="400" loading="lazy"><figcaption>Sección de Construcción y despliegue en Netlify</figcaption></figure><h3 id="configura-la-carpeta-de-las-funciones"><strong>Configura </strong>la carpeta de las funciones</h3><p>Por defecto, Netlify utiliza <code>netlify/functions</code> como el directorio en el cual encontrar las funciones a desplegar. En este caso, nuestra función serverless <code>getPhotos</code> se encuentra en la carpeta <code>netlify/funcions</code>.</p><p>Ahora configuraremos una carpeta personalizada donde Netlify puede encontrar tus funciones compiladas. Ve a <code>Site settings</code> &gt; <code>Functions</code> e ingresa la ruta la carpeta en donde se encuentran almacenadas las funciones de tu repositorio.</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/02/Screenshot--131-.png" class="kg-image" alt="Screenshot--131-" width="600" height="400" loading="lazy"><figcaption>Sección de Carpeta de Funciones en Netlify</figcaption></figure><h3 id="c-mo-configurar-variables-de-entorno-para-producci-n"><strong>Cómo configurar variables de entorno para producción </strong></h3><p>En el panel de control de Netlify (Dashboard) haz clic en <code>Site settings</code> &gt; <code>Build &amp; deploy</code> &gt; <code>Environment</code>&gt; <code>Environment varibales</code> y luego configura el par clave/valor de la siguiente manera:</p><pre><code class="language-plaintext">PIXABAY_API_KEY=your-api-key-here</code></pre><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/02/Screenshot--133-.png" class="kg-image" alt="Screenshot--133-" width="600" height="400" loading="lazy"><figcaption>Sección de Variables de Entorno en Netlify</figcaption></figure><p>Haz clic en guardar, y enseguida redespliega la aplicación para que los cambios se apliquen. </p><p>Para redesplegar la aplicación en Netlify, ve a <code>Deploys</code> &gt; <code>Trigger deploy</code>. A continuación, selecciona <code>Clear cache and redeploy site</code>.</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/02/Screenshot--134-.png" class="kg-image" alt="Screenshot--134-" width="600" height="400" loading="lazy"><figcaption>Ejecuta el redespliegue en la pestaña "Deploys" en Netlify</figcaption></figure><p><strong>Nota: </strong>El nombre de la variable de entorno (PIXABAY_API_KEY) debe coincidir con el que se referencia en el código en <code>getPhotos</code>.</p><p>Para una aplicación React, usa el prefijo <code>REACT_APP_</code> para que puedan ser leídas desde el archivo <code>.env</code>.</p><pre><code class="language-plaintext"> REACT_APP_PIXABAY_API_KEY=your-api-key-here</code></pre><h2 id="c-mo-inicializar-la-funci-n-serverless-desde-la-aplicaci-n-remota"><strong>Cómo inicializar la función serverless desde la aplicación remota</strong></h2><p>Para conectar la carpeta de tu proyecto a la aplicación web ya desplegada, inicia sesión en tu cuenta Netlify desde la terminal: </p><pre><code class="language-bash">netlify login</code></pre><p>A continuación, inicializa la aplicación en Netlify ejecutando el siguiente comando en tu terminal:</p><pre><code class="language-bash">netlify init</code></pre><p>Tu aplicación ahora está configurada para despliegues continuos via Netlify.</p><h2 id="c-mo-compilar-la-funci-n-serverless-de-netlify"><strong>Cómo compilar la función serverless de Netlify</strong></h2><p>Necesitas enlazar tu aplicación con el ID del sitio en Netlify antes de poder ejecutar el comando build en tu terminal. Para conectar la carpeta local de tu proyecto con el ID de tu sitio en Netlify, ingresa el siguiente comando en tu terminal: </p><pre><code class="language-bash">netlify link</code></pre><p>Luego de esto, se te pedirá que enlaces la carpeta mediante cualquiera de las siguientes formas:</p><ul><li>Búsqueda por nombre completo o parcial del sitio.</li><li>Elegir de una lista de tus sitios recientemente editados.</li><li>Ingresa el ID de tu sitio.</li></ul><p>Una vez que hayas seleccionado tu opción preferida, se habrá enlazado la carpeta de tu proyecto con el sitio hospedado en Netlify. Esto te permite ejecutar comandos con la <strong>CLI de Netlify </strong> y automáticamente desplegar el proyecto desde el repositorio cada que haya cambios en el código.</p><p>En el siguiente paso, compilarás una función serverless mientras se ejecuta en el servidor. Para correr el comando build definido en el archivo <code>netlify.toml</code>, ejecuta el siguiente comando:</p><pre><code class="language-bash">netlify build</code></pre><p>Esto a su vez, ejecutará el comando <code>npm run-script</code> como fue especificado en el <code>package.json</code>. Ahora, tu función serverless que está en la carpeta <code>netlify/functions</code> será empaquetado ¡exitosamente!</p><h2 id="c-mo-poner-a-prueba-la-aplicaci-n"><strong>Cómo poner a prueba la aplicación </strong></h2><p>Para realizar pruebas y confirmar que la función Netlify funciona correctamente, ejecuta el comando siguiente en tu terminal:</p><pre><code class="language-bash">netlify functions:serve</code></pre><p>Esto inyecta las variables de entorno de tu proyecto del archivo <strong>.env</strong> y ejecuta la función serverless..</p><h3 id="c-mo-confirmar-la-seguridad-de-la-clave-api-keys"><strong>Cómo confirmar la seguridad de la clave API Keys</strong></h3><p>Para inspeccionar tu aplicación y confirmar que las claves API se encuentran ocultas sigue los pasos a continuación:</p><p>Haz clic en la URL de tu aplicación hospedada y una vez abierta, navega a las herramientas de desarrollador (<strong>Developer Tools</strong>) presionando la tecla <strong>F12 </strong>o haciendo clic en cualquier lugar y seleccionando <strong>Inspeccionar</strong>. Navega a la pestaña de Red, donde deberías ver los datos traídos desde la API Pixabay. </p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/02/Screenshot--128-.png" class="kg-image" alt="Screenshot--128-" width="600" height="400" loading="lazy"><figcaption>Clave API ahora oculta de la vista pública usando las herramientas de desarrollador (<strong>Developer Tools).</strong>&nbsp;</figcaption></figure><p>Ahora ya has confirmado que has configurado exitosamente una función serverless y la has desplegado en Netlify.</p><h2 id="conclusi-n"><strong><strong><strong>Conclusi</strong></strong>ó<strong><strong>n</strong></strong></strong></h2><p>Este tutorial introdujo las funciones serverless, JavaScript asíncrono y conceptos de APIs RESTful.</p><p>Espero que ahora sepas cómo crear funciones serverless/lambda y mantener de manera segura cualquier valor sensible como las llaves/claves API que utiliza tu aplicación del lado del cliente. </p><p>Si te atoraste con algo, puedes tener acceso al código completo en el <a href="https://github.com/frankiefab100/netlify-serverless-functions-demo/tree/main">Repositorio en GitHub</a>.</p><p>¡Gracias por leer el artículo! Sígueme en <a href="https://twitter.com/frankiefab100">Twitter</a>.</p><h2 id="enlaces-relevantes"><strong>Enlaces relevantes</strong></h2><ul><li><a href="https://www.freecodecamp.org/espanol/news/como-alojar-repositorio-git-en-subdominio-con-netlify/">Cómo alojar un repositorio de GIT en un subdominio con Netlify</a></li><li><a href="https://www.freecodecamp.org/espanol/news/como-implementar-una-aplicacion-basada-en-react-router-en-netlify/">Cómo implementar una aplicación basada en React Router en Netlify</a></li><li><a href="https://www.freecodecamp.org/espanol/news/como-agregar-un-formulario-netlify-a-una-aplicacion-react-creada-con-create-react-app/">Cómo agregar un formulario Netlify a una aplicación React construida con create-react-app</a></li></ul> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Cómo convertirse en Desarrollador Front-End - Habilidades para Desarrollo Web Front-End ]]>
                </title>
                <description>
                    <![CDATA[ Algunos de los profesionales mejores pagados del mundo son los desarrolladores front-end. Ellos usan sus conocimientos y talento para diseñar sitios web atractivos y amigables para el usuario. Los desarrolladores front-end no necesitan un título de grado para trabajar. Solo deben comprender los conceptos fundamentales del desarrollo front-end, de los ]]>
                </description>
                <link>https://www.freecodecamp.org/espanol/news/como-convertirse-en-desarrollador-front-end-habilidades/</link>
                <guid isPermaLink="false">6536e2e8a37ad203ea2a0c27</guid>
                
                    <category>
                        <![CDATA[ frontend ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Desarrollo Web ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Constanza Areal ]]>
                </dc:creator>
                <pubDate>Mon, 13 Nov 2023 06:00:00 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/espanol/news/content/images/2023/11/cover-template--1-.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>Artículo original:</strong> <a href="https://www.freecodecamp.org/news/how-to-become-a-frontend-developer/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">How to Become a Front End Developer – Front End Web Dev Skills</a>
      </p><p>Algunos de los profesionales mejores pagados del mundo son los desarrolladores front-end. Ellos usan sus conocimientos y talento para diseñar sitios web atractivos y amigables para el usuario.</p><p>Los desarrolladores front-end no necesitan un título de grado para trabajar. Solo deben comprender los conceptos fundamentales del desarrollo front-end, de los lenguajes de programación, y de entornos de desarrollo front-end.</p><p>En esta guía, aprenderás a cómo convertirte en un desarrollador front-end, primero entendiendo de qué trata el desarrollo front-end, las habilidades técnicas y blandas que se necesitan, los lenguajes y entornos de programación existentes, y los primeros pasos necesarios para empezar.</p><p>En Estados Unidos, un desarrollador front-end puede ganar en promedio USD 86.178 al año, de acuerdo con <a href="https://www.glassdoor.co.in/Salaries/us-front-end-developer-salary-SRCH_IL.0,2_IN1_KO3,22.htm" rel="noreferrer nofollow noopener">Glassdoor</a>. De acuerdo con Payscale, un desarollador front-end "típico" puede ganar un ingreso anual de USD 71.350.</p><p>Si recién incursionas en el mundo de la tecnología, quizás no sabes qué significa front-end u otros términos del mundo del desarrollo web como back-end y full-stack. Por eso, vamos a empezar explicándolos.</p><h2 id="-qu-es-el-front-end"><strong>¿Qué es el front-end?</strong></h2><p>Todos los sitios web que navegamos, los sitios de comercio electrónico de donde compramos productos, los blogs que leemos, y demás sitios son sitios amigables con el usuario y estéticamente agradables realizados por desarrolladores front-end.</p><p>Existen dos grandes áreas del desarrollo web que hay que tener en cuenta cuando se diseñan sitios web y aplicaciones web: el front-end y el back-end.</p><p>El desarrollo front-end está relacionado con la cara visible por el usuario de cualquier aplicación web. Es lo que el usuario ve y con lo que interactúa al hacer clic sobre un botón, desplazarse por la página, completar un formulario, etc. Esto es la funcionalidad del lado del cliente de una aplicación web.</p><p>El back-end se refiere a todos los eventos que ocurren por detrás de escena, como la infraestructura, la conexión y comunicación con la base de datos, etc. Full stack se refiere a la combinación de las áreas de front-end y back-end.</p><h2 id="-qu-es-lo-que-hace-un-desarrollador-front-end"><strong>¿Qué es lo que hace un Desarrollador Front-end?</strong></h2><p>Recién hablábamos de las distintas áreas del desarrollo web: front, back-end y full stack. Así también tenemos distintos desarrolladores, especializados en las distintas áreas del desarrollo web. Por lo que tenemos desarrolladores front-end, desarrolladores back-end y desarrolladores full-stack.</p><p>Un desarrollador front-end es un profesional que tiene a su cargo la tarea de crear la interfaz y la experiencia de usuario (UI/UX) con la que los usuarios interactúan para acceder a la aplicación. Son los que resuelven problemas a través de los lenguajes de programación, herramientas, creatividad y la experiencia para crear un sitio web o aplicación que no solo resuelva el problema del usuario y además tiene un buen diseño.</p><p>Un desarrollador back-end, como dijimos anteriormente, es responsable por todo lo relacionado con la lógica, la comunicación de la base de datos, entre otras cosas.</p><p>Por último, un desarrollador full-stack son los que entienden tanto de desarrollo front-end como de back-end. Esto les permite poder comenzar y terminar un proyecto por sí mismos.</p><p>En un ambiente profesional o de empresa, usualmente hay un diseñador UI/UX quién se encarga de diseñar la interfaz y la experiencia del usuario. </p><p>Ellos después le pasan el diseño a los desarrolladores front-end y back-end, quienes se encargan en la implementación para que la aplicación diseñada funcione en la web.<br>El desarrollador front-end va a recrear el diseño al escribir el código en HTML, CSS y JavaScript.</p><h2 id="c-mo-convertirse-en-desarrollador-front-end"><strong>Cómo convertirse en Desarrollador Front-end</strong></h2><p> Hasta ahora hablamos sobre qué significa front-end y quién es un desarrollador front-end. Ahora, veamos cuáles son los requisitos o habilidades necesarias para poder ser un desarrollador front-end.</p><p>Es importante entender que no es necesario saber todo antes de empezar a trabajar como desarrollador front-end, pero hay saberes fundamentales como HTML, CSS, y JavasScript que siempre van a ser esenciales.</p><h3 id="1-aprende-html-css-y-javascript"><strong><strong>1. </strong>Aprende HTML, CSS, y JavaScript</strong></h3><p>Cuando miramos un sitio en la web, las tres cosas más importantes que componen lo que vemos en la web son HTML, CSS, y JavaScript. Estas son las tres cosas que primero tienes que aprender como base para convertirte un desarrollador front-end.</p><p>Son las bases de los sitios web y aplicaciones, por lo que debes aprenderlos si quieren dedicarte al desarrollo web. Por suerte, hay muchos recursos en línea disponibles para ayudarte en aprender y practicar.</p><h4 id="-qu-es-html"><strong>¿Qué es HTML?</strong></h4><p>HTML significa, por sus siglas en inglés, Lenguaje de Marcado de HyperTexto. Es el esqueleto de todas las páginas web y aplicaciones. Es el bloque para construir más básico de todos. El HTML se usa para estructurar tu página en elementos como párrafos, secciones, encabezados, barras de navegación, etcétera. </p><p>El HTML provee de estructura al contenido que aparece en el sitio web, como imágenes, texto o videos. Una página con solo HTML es muy básica y nada atractiva, por lo que se necesitará usar estilos CSS para hacerla más presentable. </p><p>HTML es frecuentemente el primer lenguaje que los desarrolladores aprenden, ya que es esencial para el trabajo de desarrollo web. ¿Quieres aprender más sobre HTML? Puedes empezar con la certificación en <a href="https://www.freecodecamp.org/espanol/learn/2022/responsive-web-design/">Diseño Web Responsive de freeCodeCamp</a> y el <a href="https://www.freecodecamp.org/news/html-crash-course/">nuevo curso completo de HTML de Beau Carnes (en inglés)</a></p><h4 id="-qu-es-css"><strong>¿Qué es CSS?</strong></h4><p>CSS es la abreviatura, en inglés, para Hojas de Estilo en Cascada, y lo usas para mejorar la apareciencia de una página web con estilos CSS. Estos estilos hacen que tu sitio web sea más atractivo y agradable a la vista para el usuario final.</p><p>¿Quieres aprender más sobre CSS? Para empezar, puedas darle un vistazo a la <a href="https://www.freecodecamp.org/espanol/learn/2022/responsive-web-design/">segunda parte de la certificación de Diseño Web Responsive de freeCodeCamp</a>.</p><h4 id="-qu-es-javascript"><strong>¿Qué es JavaScript?</strong></h4><p>HTML es un lenguaje de marcado, CSS es una hoja de estilo, y después tenemos a JavaScript, el tercer bloque básico de construcción. JavaScript es un lenguaje de programación que te permite hacer tus páginas web más interactivas. Esto puede incluir animaciones, estilos dinámicos, efectos cuando se les hacen clic a los botones, game motion, etcétera.</p><p>Si quieres aprender JavaScript, puedes darle un vistazo a la certificación en <a href="https://www.freecodecamp.org/espanol/news/ghost/#/editor/post/6536e2e8a37ad203ea2a0c27:~:text=https%3A/www.freecodecamp.org/learn/javascript%2Dalgorithms%2Dand%2Ddata%2Dstructures/">Algoritmos de Javascript y Estructura de Datos.</a> Puedes complementar tu aprendizaje con este excelente <a href="https://www.freecodecamp.org/news/learn-javascript-full-course/">curso introductorio a JavaScript</a>.</p><h3 id="2-pr-ctica-con-ejercicios-de-programaci-n"><strong><strong>2. </strong>Práctica con ejercicios de programación</strong></h3><p>Hay una frase que dice "la práctica hace al maestro". Esto significa que si haces algo con frecuencia, cada vez irás mejorando.</p><p>Si quieres convertirte en un desarrollador front-end profesional, tienes que practicar constantemente. Esto te ayudará a aprender los conceptos más profundamente (y no solo lo superficial). Cuanto más practiques, mejor entenderás los conceptos.</p><h3 id="3-mejora-tus-habilidades"><strong><strong>3. </strong>Mejora tus habilidades</strong></h3><p>"Aprende constantemente, siempre hay algo más por aprender", decía Steve Jobs. Esto es verdad para todos los aspectos de la vida, incluidos la programación y el desarrollo front-end.</p><p>Mientras nuevas tecnologías, herramientas, sintaxis y maneras de resolver problemas sigan apareciendo, siempre es mejor estar al tanto de las nuevas tendencias en tecnología para no quedarnos atrás.</p><p>Esto te ayudará a que tus habilidades como desarrollador front-end crezcan. Siempre puedes estar al tanto de todo lo nuevo uniéndote e interactuando con comunidades activas de desarrolladores. <br>Existen muchas comunidades como la comunidad de desarrolladores de freeCodeCamp y todas las comunidades locales &nbsp;que existen alrededor nuestro.</p><h3 id="4-aprende-la-l-nea-de-comandos-y-control-de-versiones"><strong><strong>4. </strong>Aprende la Línea de Comandos y Control de Versiones</strong></h3><p>Como desarrollador front-end, debes entender como funciona la línea de comandos porque te permite acceder a funciones del sistema operativo a través de una interfaz de texto. <br>Muchos desarrolladores profesionales prefieren las CLIs (Command Line Interface, por sus siglas en inglés) por su velocidad y rendimiento al instalar librerías y frameworks. </p><p>Los desarrolladores front-end también deben estar familiarizados con sistemas de control de versiones como Git, que es el más usado. Al programar, frecuentemente vas a querer hacer seguimiento de los que vas programando y otras informaciones.</p><p>El control de versiones lo hace mucho más fácil porque te permite a ti y a tu equipo comunicarte y seguir todos los cambios al código original de manera eficiente.<br>También te proporciona información sobre quién hizo el cambio y qué cambio hizo.</p><h3 id="5-entendiendo-las-interfaces-de-programaci-n-de-aplicaciones-apis-"><strong><strong>5. </strong>Entendiendo las Interfaces de Programación de Aplicaciones (APIs)</strong></h3><p>Como desarrollador front-end profesional, tienes que estar familiarizado con las APIs, sobretodo en cómo usarlas. Esto es importante para poder comunicarte con la lógica del back-end y las bases de datos.</p><p>Para interactuar con APIs usando JavaScript, mayormente vas a usar la Fetch API de tu navegador o la librería Axios. Este artículo explica <a href="https://www.freecodecamp.org/espanol/news/fetch-api-como-realizar-un-get-request-y-un-post-request-en-javascript/">cómo usar Fetch API con JavaScript. </a></p><h3 id="6-aprende-c-mo-funcionan-las-librer-as-de-javascript-css"><strong><strong>6. </strong>Aprende cómo funcionan las librerías de JavaScript/CSS</strong></h3><p>Actualmente, hay muchas librerías de JavaScript, todas ellas apuntan a hacer el desarrollo de un aplicación web más fácil. &nbsp;Todas son scripts de JavaScript que hacen que el desarrollo de aplicaciones basadas en JavaScript sea más fácil.</p><p>Hay muchas librerías como React, Vue, o Angular (tres de las más populares), por lo cual es mejor elegir una y profundizar en su aprendizaje. Puedes darle una mirada al <a href="https://www.freecodecamp.org/espanol/learn/front-end-development-libraries/">curso de certificación el librerías de desarrollo frontend de freeCodeCamp</a> para aprender más.</p><p>También hay algunas librerías de estilo para darle estilo a tus páginas web de manera simple como Bootstrap, Sass/Scss, Tailwind, y otras.</p><h3 id="7-construye-tu-portfolio-online"><strong><strong>7. </strong>Construye tu portfolio online</strong></h3><p>Construir tu portfolio es un manera fácil de mostrar tu habilidad como desarrollador front-end.</p><p>Si recién estás comenzando como desarrollador front-end, no es necesario que cada proyecto que muestres en tu portfolio pertenezca a un cliente. Podes tomar la iniciativa y ser creativo.</p><p>Usa nuevas herramientas y librerías para crear algo espectacular. Mientras vayas avanzando en tu carrera, podrás incluir los proyectos en los que vayas trabajando.</p><p>También podes darle una mirada los portfolios de otros desarrolladores front-end para inspirarte y ver qué es lo que te gusta o no. Entonces, al saber que es lo que quieres mostrar al mundo, ya puedes crear tu propio sitio web.</p><p><a href="https://www.freecodecamp.org/news/create-a-portfolio-website-using-html-css-javascript/">Aquí tienes un curso entretenido</a> que te ayudará a construir tu propio portfolio con HTML, CSS y JavaScript- para que puedas practicar esas habilidades de desarrollo web.</p><p>Puedes hacer que tus amigos y miembros de la comunidad te den feedback sobre tu sitio para asegurarte de que todo se ve y funciona bien. No debes olvidarte que todas las palabras que uses en tu sitio web deberían ayudarte a conseguir un buen trabajo. No vas a querer que los textos que incluyas sean demasiados largos o aburridos.</p><p><a href="https://www.freecodecamp.org/news/level-up-developer-portfolio/">Aquí tienes algunos tips</a> que te ayudarán a que tu portfolio desarrollador realmente destaque.</p><h3 id="8-cultiva-tus-habilidades-blandas"><strong><strong>8. </strong>Cultiva tus habilidades blandas</strong></h3><p>Los desarrolladores front-end deben ser comunicadores eficaces, tanto en lo escrito como lo oral, porque interactúan con el equipo técnico y con el cliente.</p><p>También deben ser excelentes comunicadores a través de su código, por lo que es crucial que se tomen el tiempo para comentar dentro del código y escribir la documentación apropiada así tanto tu como otros desarrolladores pueden entenderlo, aún cuando haya pasado tiempo.</p><p>Los desarrolladores front-end también deben prestar atención a los detalles y ser meticulosos en todos los aspectos relacionados con su trabajo. Tienen que tener un buen ojo y ser capaces de darse cuenta de pequeños errores o inconsistencias que pueden existir al momento de crear una página web.</p><p>Y los desarrolladores front-end deben también ser también capaces de seguir aprendiendo durante toda su vida, porque los sitios web siempre están evolucionando y las expectativas en cuanto a accesibilidad y apariencia siempre están cambiando. Los ingenieros front-end deben estar en constante actualización, ya que seguramente necesitarán aprender nuevos lenguajes de programación o librerías, a lo largo del tiempo. &nbsp;</p><h3 id="9-empieza-a-postularte-a-las-pasant-as-o-puestos-de-trabajo-que-quieras"><strong><strong>9. </strong>Empieza a postularte a las pasantías o puestos de trabajo que quieras</strong></h3><p>Una vez que tengas el conocimiento de frontend necesario a través del aprendizaje de las habilidades necesarios y de <a href="https://www.freecodecamp.org/news/how-to-write-a-developer-resume-recruiters-will-read/">la creación de un curriculum vitae simple</a>, puedes empezar a buscar ofertas de trabajo relacionadas con el front-end.</p><p>Chequea los requisitos de las ofertas para ver en que otras áreas necesitas mejorar como desarrollador front-end.</p><p> Finalmente, siempre postúlate a trabajos y nunca tengas miedo de hacerlo. Esto te dará experiencia para ayudarte a comprender cómo son los procesos de contratación de las empresas y qué es lo que se necesita para ser contratados.</p><h2 id="conclusi-n"><strong>Conclusión</strong></h2><p>En este artículo, hemos aprendido qué es un desarrollador front-end y qué es lo que se necesita para convertirse en uno.</p><p>También hemos aprendido que convertirse en un desarrollador front-end sin título no solo es posible, sino que hasta alcanzable.</p><p>Una pregunta final que las personas se hacen mucho es cuánto se tarda para convertirse en desarrollador front-end. Bueno, el tiempo depende totalmente de tu ritmo de aprendizaje y conocimientos previos que tengas.</p><p>Solo recuerda que no debes compararte a ti o tu ritmo de aprendizaje con el de otros mientras estás aprendiendo. Resérvate un momento cada semana o día para aprender, apégate a ese hábito lo mejor que puedas y luego disfruta. <br><br></p> ]]>
                </content:encoded>
            </item>
        
    </channel>
</rss>
