• Empleos
  • Sobre nosotros
  • Empleos
    • Inicio
    • Empleos
    • Cursos y retos
  • Empresas
    • Inicio
    • Publicar vacante
    • Nuestro proceso
    • Precios
    • Evaluaciones
    • Nómina
    • Blog
    • Comercial
    • Calculadora de salario

0

111
Vistas
Calcule las tablas de búsqueda en el momento de la compilación en una pila de nodo/babel/webpack para compilación de producción

Estoy trabajando en una aplicación de JavaScript que usa la pila clásica de nodo/babel/webpack que hace un uso intensivo de las tablas de búsqueda. El código típico se ve así:

 const computeLookupTable = () => { // Expensive computation here }; export const LookupTable = computeLookupTable();

Esto funciona bien en general, pero hay una desventaja importante: el dispositivo del usuario tiene que hacer todo el cálculo previo cuando se inicia la aplicación. Esto parece bastante innecesario ya que el resultado del cálculo siempre será el mismo. Vale la pena especificar un tiempo de compilación para la compilación de producción para mejorar la experiencia del usuario.

¿Cómo puedo cambiar este comportamiento, como la ejecución de computeLookupTable durante el proceso de compilación y obtener directamente los datos allí en el blob generado que se envía a los usuarios?

over 3 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Opción 1

No estoy seguro de si esta es la mejor manera, pero puede usar el complemento de definición de Webpack para reemplazar los valores:

En webpack.config.js :

 import webpack from "webpack"; import { LookupTable } from "./computeLookupTable"; module.exports = { // ... plugins: { new webpack.DefinePlugin({ "lookupResults": JSON.stringfify(LookupTable) }) } }

Sin embargo, tenga en cuenta que no puede pasar funciones ni nada, solo objetos simples o primitivos. En su código, podría pretender que la variable existe mágicamente:

 export default function Something() { const results = lookupResults; return results.data; }

Una advertencia es que debe crear una nueva variable para evitar una sintaxis no válida como { data: "..." }.data , pero en su lugar const results = { data: "..." }; results.data .

opcion 2

La forma más obvia y no tan rara/natural de hacerlo es generar archivos estáticos antes de agruparlos y luego permitir que Webpack los empaquete por nosotros.

En webpack.config.js :

 import fs from "fs"; import webpack from "webpack"; import { LookupTable } from "./computeLookupTable"; module.exports = (staticData => { fs.writeFileSync("./src/data/generated.js", "export default " + JSON.stringify(staticData)); // change this to something // or with JSON (needs plugin): fs.writeFileSync("./src/data/generated.json", JSON.stringify(staticData)); return { /* webpack configs... */ }; })(LookupTable);

Y luego digamos que su archivo JS es src/index.js :

 import table from "./data/generated"; // do something with it...
over 3 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Nuestro proceso Comercial
Legal
Términos y condiciones Política de privacidad
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recomiéndame algunas ofertas
Necesito ayuda