Webflow es una herramienta excelente para crear sitios estáticos, blogs e incluso tiendas online. Pero hay momentos en los que querrás ir un paso más allá, y ahí es donde entra en juego la potencia de React. En este artículo, te mostraré cómo integrar tus componentes de React en tu sitio de Webflow.
Actualización (noviembre de 2023): Webflow está trabajando actualmente en las Bibliotecas de Código (Code Libraries), que mejorarán significativamente la capacidad de los desarrolladores para añadir y aprovechar componentes de React en Webflow. Para ver un adelanto de lo que está en desarrollo, mira nuestra sesión de Webflow Conf.
___
Webflow es una herramienta de diseño increíble que te permite crear sitios web impresionantes sin tener que escribir ni una sola línea de código. Cuenta con funciones de CMS y recientemente lanzaron Webflow Ecommerce.
Pero a veces, es posible que necesites la potencia de React para aplicaciones más complejas y personalizadas. En este artículo, te enseñaremos cómo hacerlo.
Por ejemplo, hace poco me encargaron trasladar un componente de búsqueda de un sitio antiguo a un sitio de Webflow hecho a medida. El componente consulta una base de datos de horarios de buques de carga para encontrar una lista de barcos que coincidan con los criterios de búsqueda. El usuario introduce su puerto de carga y su puerto de destino, y el componente devuelve una lista de las líneas navieras que coinciden con su búsqueda.
Crear esa función directamente en Webflow habría requerido mucho código personalizado y complicado. React me permitió desarrollar la aplicación fácilmente, y migrarla a Webflow fue igual de sencillo.
Aquí tienes el proceso paso a paso que utilicé para mi proyecto. Puedes usarlo para crear tu propio proyecto de React, configurar un proceso de despliegue e integrar tu proyecto con un sitio de Webflow.
Nota: Este tutorial es bastante más técnico de lo habitual. Para seguirlo, necesitarás estar familiarizado con el uso de la terminal. Obviamente, tener conocimientos generales de JavaScript y, en particular, de React, será de gran ayuda.
Configura tu proyecto de React
Para configurar tu proyecto de React:
- Crea una carpeta y ponle el nombre de tu proyecto
- Ejecuta npm init y rellena la información necesaria
- Instala React y React-DOM ejecutando: npm install --save react react-dom
- Crea dos directorios, uno llamado src y el otro dist, dentro de la carpeta que creaste
- Crea el archivo dist/index.html con el siguiente contenido:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>YOUR APP TITLE</title>
</head>
<body>
<div id="react-target"></div>
<script src="bundle.js"></script>
</body>
</html>
Usarás este archivo para crear una página web que puedas cargar localmente mientras construyes tu componente de React. Asegúrate de reemplazar YOUR APP TITLE en la etiqueta <title> con el título de tu aplicación.
Observa los dos divs en la sección <body>:
- El div vacío con el id “react-target” es donde renderizaremos nuestro componente de React
- La etiqueta script carga un archivo llamado bundle.js que contendrá el código de nuestra aplicación generado por Webpack
A continuación, crea un archivo llamado index.js en tu carpeta src con el siguiente contenido:
import React, {Component} from 'react'
import ReactDOM from 'react-dom'
class App extends Component {
render() {
return (
<div>This is a React component inside of Webflow!</div>
)
}
}
ReactDOM.render(
React.createElement(App, {}, null),
document.getElementById('react-target')
);
La estructura de tu proyecto debería verse así ahora:

Configura Webpack
Webpack es un empaquetador de módulos. Toma todo tu JavaScript, hojas de estilo, imágenes y cualquier otro código que componga tu aplicación, y lo combina en un solo archivo, al que llamamos bundle.js.
Para configurar Webpack en tu proyecto, deberás hacer lo siguiente:
1. Instala Webpack: en tu directorio raíz, ejecuta lo siguiente para instalar Webpack y las herramientas necesarias para ejecutar un servidor de desarrollo local de Webpack. Esto te permitirá ver lo que estás construyendo mientras trabajas en ello.
npm install --save-dev webpack webpack-dev-server webpack-cli
2. Añade lo siguiente a la sección de scripts de tu package.json:
...
"scripts": {
"start": "webpack-dev-server --config ./webpack.config.js --mode development --progress --color --port 3000",
...
},
...
Esto nos permitirá ejecutar un servidor de desarrollo local para que podamos trabajar en nuestra aplicación localmente en un navegador.
3. Configura Webpack: crea un archivo en tu carpeta raíz llamado webpack.config.js con el siguiente contenido:
const path = require('path')
module.exports = {
entry: './src/index.js',
module: {
rules: [
{
test: /\.(js|jsx)$/,
exclude: /node_modules/,
use: ['babel-loader']
},
{
test: /\.css$/,
use: ["style-loader", "css-loader"]
},
{
test: /\.(pdf|jpg|png|gif|svg|ico)$/,
use: [
{
loader: 'url-loader'
},
]
},
{
test: /\.(woff|woff2|eot|ttf|otf)$/,
loader: "file-loader"
}
]
},
resolve: {
extensions: ['*', '.js', '.jsx']
},
output: {
path: __dirname + '/dist',
publicPath: '/',
filename: 'bundle.js'
},
devServer: {
static: {
directory: path.join(__dirname, 'dist')
}
}
};

El proceso de diseño web moderno
Descubre los procesos y herramientas detrás de los sitios web de alto rendimiento en este libro electrónico gratuito.
Configura Babel
Para usar las funciones más recientes de JavaScript, necesitarás instalar Babel. Ejecuta el siguiente código en el directorio de tu proyecto:
npm install --save-dev @babel/core @babel/preset-env babel-loader @babel/preset-react @babel/plugin-proposal-class-properties
En tu directorio raíz, crea un archivo llamado .babelrc (sí, empieza con un punto). Copia y pega el siguiente contenido:
{
"presets": [
"@babel/preset-env",
"@babel/preset-react"
]
}
Ejecuta npm start y abre tu navegador en http://localhost:3000.
Deberías ver un mensaje que dice: “¡Este es un componente de React dentro de Webflow!”
¡Eso es todo para la configuración de React! Ahora vamos a preparar nuestra implementación.
Configura la implementación en S3
Dado que Webflow no permite alojar tus propios archivos de script en sus servidores, tendremos que cargar el script desde un servidor externo. Para esto, usaremos Amazon S3.
- Crea un bucket de S3 y asígnale un nombre único
- Pulsa “siguiente” dos veces
- Desmarca las siguientes opciones
a. Bloquear nuevas ACL públicas y la carga de objetos públicos
b. Eliminar el acceso público concedido a través de ACL públicas - Habilita el acceso público
a. Ve a la pestaña Permisos
b. Haz clic en Lista de control de acceso > Todos
c. Marca Listar objetos y Escribir objetos > Guardar
Habilita CORS
Los navegadores modernos aplican reglas de intercambio de recursos de origen cruzado (CORS) que impiden que tu sitio cargue contenido desde una URL externa. Para saltarnos esta limitación, debemos decirle a S3 que envíe una cabecera CORS especificando que cualquier origen puede hacer GET de los archivos en nuestro bucket. Para ello:
- Haz clic en Configuración de CORS
- Copia y pega lo siguiente
[
{
"AllowedMethods": [
"GET"
],
"AllowedOrigins": [
"*"
]
}
]
Ahora tendrás que instalar la interfaz de línea de comandos (CLI) de AWS en tu equipo.
Para hacerlo, ejecuta lo siguiente:
curl "https://s3.amazonaws.com/aws-cli/awscli-bundle.zip" -o "awscli-bundle.zip"
unzip awscli-bundle.zip
sudo ./awscli-bundle/install -i /usr/local/aws -b /usr/local/bin/aws
Crea un usuario de CLI para S3
Ahora vamos a crear un usuario para que lo utilice la CLI de AWS:
- En el panel de control de AWS, ve a Servicios > IAM > Usuarios
- Añade un usuario y ponle un nombre
- Marca Acceso mediante programación > Siguiente
- Adjuntar políticas existentes > marca AmazonS3FullAccess
- Haz clic en Siguiente > Siguiente > Crear
- Mantén esta página abierta y abre una terminal
- Escribe aws configure
- Introduce tu ID de clave de acceso y tu clave de acceso secreta cuando se te solicite
Crea un script de compilación
Para empaquetar una aplicación usando Webpack, solo tienes que usar el comando “webpack”, así que adelante, añade el siguiente script a tu package.json:
"build": "webpack",
Crea un script de despliegue
Añade el siguiente script a tu package.json, asegurándote de reemplazar BUCKETNAME con el nombre de tu bucket de S3:
"deploy": "aws s3 cp ./dist/bundle.js s3://BUCKETNAME/ --acl public-read"
Compila y despliega el script
Cuando ejecutes el script de compilación, se creará un archivo bundle.js. Este es el archivo que queremos cargar en el sitio de Webflow. En tu terminal, ejecuta:
npm run build && npm run deploy
Normalmente me gusta crear un script de acceso directo que haga ambas cosas, así que adelante, añade el siguiente script a tu package.json. (bd significa build and deploy, es decir, compilar y desplegar):
"bd": "npm run build && npm run deploy"
Añade el componente a Webflow
Una vez superado todo esto, por fin estamos listos para cumplir la promesa de este artículo: añadir tu componente de React a tu proyecto de Webflow.
Carga la librería de React
- Abre tu proyecto de Webflow
- Abre la página en la que quieres añadir tu componente de React
- Haz clic en el icono del engranaje
- Busca la sección Inside <head> tag y pega las siguientes etiquetas de script para cargar React y React DOM:
<script src="https://unpkg.com/react@16.4.1/umd/react.production.min.js"></script>
<script src="https://unpkg.com/react-dom@16.4.1/umd/react-dom.production.min.js"></script>
Ahora tu página cargará tanto la librería de React como React DOM, que es la parte de React que te permite adjuntar elementos al Document Object Model (DOM), que es como los técnicos llamamos a la estructura de la página.
Carga tu archivo de aplicación empaquetado
A continuación, tendremos que decirle a Webflow que cargue nuestro paquete de aplicación compilado. Busca la sección Before </body> tag y pega el enlace del script a tu bundle.js compilado.
<script src="https://<YOUR_BUCKET>.s3.<YOUR_S3_REGION>.amazonaws.com/bundle.js"></script>
Crea un div de destino
Lo último que tendrás que hacer es crear un div para que la aplicación de React lo rellene:
- Busca el lugar de tu página donde quieras renderizar el componente de React y crea un div
- Asigna al div el ID react-target (el mismo nombre que especificamos en nuestro index.js)
- Publica el proyecto de Webflow
Ahora, al ver tu sitio de Webflow, tu aplicación de React debería aparecer en el div que indicaste.
¡Felicidades! Si has llegado hasta aquí, ya tienes React funcionando en Webflow. Si tienes alguna duda, envíame un correo. ¡Mucha suerte!











