Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

176
Views
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 4 years ago · Juan Pablo Isaza
1 answers
Answer question

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 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Virtual assistant