require.context
Un require que funciona con regex
👋 Hey! Soy Richard
@sparragus
Puertorriqueño, web engineer,
hago podcasts
Preámbulo
(tl;dr: Esta plática realmente no de es folder
structuring)
require.context
require.context
require.context
@sparragus
•src/
•pages/
•components/
•index.js
Pero por si tienen curiosidad:
require.context
Un require que funciona con regex
Only
Nada que ver
con el
Context API de React
@sparragus
src 
├── app.js
└── pages
├── home
│ ├── index.css
│   └── index.js
├── about
│ ├── index.css
│   └── index.js
└── contact
├── index.css
  └── index.js
@sparragus
const Home = require("./pages/home");
const About = require("./pages/about");
const Contact = require("./pages/contact");
<Router>
<Route path="/" component={Home} />
<Route path="/about" component={About} />
<Route path="/contact" component={Contact} />
</Router>
@sparragus
function Home() {
return (
<div>
<h1>Hey! Soy Richard</h1>
<nav>
<ul>
<li><Link to="/about">About</Link></li>
<li><Link to="/contact">Contact</Link></li>
</ul>
</nav>
</div>
);
}
module.exports = Home;
@sparragus
• Input <= Expresión regular
• Output => Context
• Una función que nos permite hacer require solamente a los
archivos que hacen “match” con la expresión regular
Un require que funciona con regex
require.context
@sparragus
const context = require.context(
"./pages", // Un punto de partida del contexto
true, // Quiero buscar en los subdirs
/index.js$/ // El regex para encontrar files
);
const Home = context(‘./home/index.js’);
@sparragus
const context = require.context("./pages", true, /index.js$/);
src 
├── app.js <--------------- Estamos aquí
└── pages <--------------- El directorio que especificamos
├── home
│ ├── index.css <----- ❌
│   └── index.js <----- ✅ (Match con el regex)
├── about
│ ├── index.css <----- ❌
│   └── index.js <----- ✅
└── contact
├── index.css <----- ❌
  └── index.js <----- ✅
@sparragus
const styles = context('./home/index.css');
@sparragus
const styles = context('./home/index.css');
💥Error: Cannot find module ‘./home/index.css’
@sparragus
const context = require.context(
"./pages", // A directory
true, // Use subdirectories
/index.js$/ // A regex for matching files
);
const Home = context(‘./home/index.js’);
const About = context(‘./about/index.js’);
const Contact = context(‘./contact/index.js’);
<Router>
<Route path="/" component={Home} />
...
</Router>
@sparragus
🤔
@sparragus
• Input <= Expresión regular
• Output => Context
• Una función que nos permite hacer require solamente a los
archivos que hacen “match” con la expresión regular
• {

keys()

}
Un require que funciona con regex
require.context
@sparragus
🤔🤔🤔
@sparragus
✌
@sparragus
const context = require.context("./pages", true, /index.js$/);
const Home = context('./Home');
const filenames = context.keys();
console.log(filenames);
⮑ [ "./home/index.js", "./about/index.js", "./contact/index.js" ]
Función
Objeto
@sparragus
function getPathFromFilename (filename) { ... }
const context = require.context(...);
const filenames = context.keys();
const routes = filenames.map(filename => ({
path: getPathFromFilename(filename),
component: context(filename)
});
@sparragus
const filenames = context.keys();
const routes = [{...}, {...}, {...}];
<Router>
{routes.map(route =>
<Route path={route.path} component={route.component} />
)}
</Router>
@sparragus
•src/
•pages/
•components/
•index.js
Pero por si tienen curiosidad:
Ver para creer
(Demos)
👋 Hey! Soy Richard
@sparragus
Puertorriqueño, web engineer,
hago podcasts

Más contenido relacionado

PPTX
Láminas
DOCX
Conexion
PDF
Cloud Computing: las nuevas Capas de Persistencia
ODP
Desarrollo de aplicaciones web usando Catalyst y jQuery
ODP
Desarrollando aplicaciones web usando Catalyst y jQuery
PDF
Marchando sobre Rieles
PDF
El Ferrocarril Contra Los Arboles Muertos2
PDF
Front-end Basics for Developers
Láminas
Conexion
Cloud Computing: las nuevas Capas de Persistencia
Desarrollo de aplicaciones web usando Catalyst y jQuery
Desarrollando aplicaciones web usando Catalyst y jQuery
Marchando sobre Rieles
El Ferrocarril Contra Los Arboles Muertos2
Front-end Basics for Developers

Similar a require.context (20)

PDF
Javascript en proyectos reales: jQuery
PDF
Android Tips & Tricks - Boosting your productivity
 
PDF
"Meta datos & Google Rich Snippets" por @iplarodriguez
PDF
Desarrollo web inteligente
ODP
Desarrollo de aplicaciones web usando Catalyst y jQuery
PDF
Android Superstar - Buenas Prácticas
PDF
Varnish para meros mortales
PDF
Web2 Quiensomos
PPT
Mootools Y Otros Frameworks JS
KEY
Presentación Ruby on Rails en Softare Freedom Day 09 Buenos Aires
PDF
Assetic PHPmvd
PDF
Guiapractica de bd completa
PPTX
Rendimiento en aplicaciones web con Symfony2
PDF
Introducción a NodeJS
PDF
Odd2015 scraping
KEY
Creación de plugins con Grails
PPTX
Introducción a groovy & grails
PDF
De HTML a Express
Javascript en proyectos reales: jQuery
Android Tips & Tricks - Boosting your productivity
 
"Meta datos & Google Rich Snippets" por @iplarodriguez
Desarrollo web inteligente
Desarrollo de aplicaciones web usando Catalyst y jQuery
Android Superstar - Buenas Prácticas
Varnish para meros mortales
Web2 Quiensomos
Mootools Y Otros Frameworks JS
Presentación Ruby on Rails en Softare Freedom Day 09 Buenos Aires
Assetic PHPmvd
Guiapractica de bd completa
Rendimiento en aplicaciones web con Symfony2
Introducción a NodeJS
Odd2015 scraping
Creación de plugins con Grails
Introducción a groovy & grails
De HTML a Express
Publicidad

Más de Richard Kaufman (6)

PDF
Internacionalizacion
PDF
Programación de Bots para Slack
PDF
FUTURE Mariachi
PDF
Digital Invaders - Introducción al Prototipaje
PDF
Digital Invaders - Introducción a Programación
PDF
Nodebots Mexico - Tacómetro Twittero
Internacionalizacion
Programación de Bots para Slack
FUTURE Mariachi
Digital Invaders - Introducción al Prototipaje
Digital Invaders - Introducción a Programación
Nodebots Mexico - Tacómetro Twittero
Publicidad

Último (20)

PDF
Diseño y Utiliación del HVAC Aire Acondicionado
PDF
La 5ª Edición del Manual de Ingeniería de Sistemas ( SEH5E ) como base d...
PDF
FUNCION CUADRATICA FUNCIONES RAIZ CUADRADA
PPTX
TECNOLOGIA EN CONSTRUCCION PUBLICO Y PRIVADA
PDF
SESION 10 SEGURIDAD EN TRABAJOS CON ELECTRICIDAD.pdf
PPTX
CNE-Tx-ZyD_Comite_2020-12-02-Consolidado-Version-Final.pptx
PPTX
Identificacion de Peligros mediante GTC 45
PDF
PPT ProChile 2019 beneficios de la construccion con madera
PPTX
ARQUITECTURA INTEGRAL EN OBRA, PRINCIPIOS BASICOS Y TERMINOS
PPTX
PPT PE 7 ASOCIACIONES HUAMANGA_TALLER DE SENSIBILIZACIÓN_20.04.025.pptx
PDF
2. Gestión del alcance gestion de proyetos.pdf
PDF
METODOLOGÍA DE INVESTIGACION ACCIDENTES DEL TRABAJO.pdf
PDF
Presentación Ejecutiva Minimalista Azul.pdf
PDF
Infraestructuras en la seguridad vial.pdf
DOCX
Manual de Capacitación suelos trabajo edwin varon.docx
PPTX
Instalaciones Electricas.pptx cables electricos
PDF
MODULO 1 Base Legal Nacional y sus aplicaciones.pdf
PPT
flujo de caja 2 para la evaluacion de proyectos
PDF
UD3 -Producción, distribución del aire MA.pdf
PDF
SESION 9 seguridad IZAJE DE CARGAS.pdf ingenieria
Diseño y Utiliación del HVAC Aire Acondicionado
La 5ª Edición del Manual de Ingeniería de Sistemas ( SEH5E ) como base d...
FUNCION CUADRATICA FUNCIONES RAIZ CUADRADA
TECNOLOGIA EN CONSTRUCCION PUBLICO Y PRIVADA
SESION 10 SEGURIDAD EN TRABAJOS CON ELECTRICIDAD.pdf
CNE-Tx-ZyD_Comite_2020-12-02-Consolidado-Version-Final.pptx
Identificacion de Peligros mediante GTC 45
PPT ProChile 2019 beneficios de la construccion con madera
ARQUITECTURA INTEGRAL EN OBRA, PRINCIPIOS BASICOS Y TERMINOS
PPT PE 7 ASOCIACIONES HUAMANGA_TALLER DE SENSIBILIZACIÓN_20.04.025.pptx
2. Gestión del alcance gestion de proyetos.pdf
METODOLOGÍA DE INVESTIGACION ACCIDENTES DEL TRABAJO.pdf
Presentación Ejecutiva Minimalista Azul.pdf
Infraestructuras en la seguridad vial.pdf
Manual de Capacitación suelos trabajo edwin varon.docx
Instalaciones Electricas.pptx cables electricos
MODULO 1 Base Legal Nacional y sus aplicaciones.pdf
flujo de caja 2 para la evaluacion de proyectos
UD3 -Producción, distribución del aire MA.pdf
SESION 9 seguridad IZAJE DE CARGAS.pdf ingenieria

require.context