2017-02-02 2 views
0

Zur Lokalisierung in meinem Reagieren Projekt, das ich bin mit einem automatisch generierten ES6-Modul, das wie folgt aussieht:Webpack langsam Build Leistung mit großen ES6 Modul

var Resources = new Array(); 
Resources['en-US']={}; 
Resources['en-US'].hello = 'Hello'; 
Resources['en-US'].welcome = 'Welcome'; 

.. snip ... 

Resources['sv-SE']={}; 
Resources['sv-SE'].hello = 'Hej'; 
Resources['sv-SE'].welcome = 'Välkommen'; 

export default Resources; 

Die Ressourcen Array ca. 2500 Elemente enthält.

In meiner React Komponente verwende ich das Ressourcenmodul wie:

import React from 'react'; 
import Resources from '../Assets/Resources'; 

var Test = React.createClass({ 
    propTypes: { 
     culture: React.PropTypes.string 
    }, 

    render: function() { 
     return (
      <div>{Resources[this.props.culture].hello</div> 
     ); 
    }  
}); 

export default Test; 

Das Problem ist, wenn ich Webpack für die Bündelung des Projektes verwenden. Die Buildzeit beträgt 78 Sekunden (78000ms), inkrementelle Builds sind jedoch schnell (etwa 400ms).

Wenn ich die Ressourcen-Array zu einer viel kleineren Menge von Gegenständen Streife (zum Beispiel 10 Stück) die Build-Zeit sinkt auf 7 Sekunden (7000ms), die viel mehr sinnvoll erscheint.

Hat jemand eine Idee, wie man die Bauzeit beschleunigt?

+3

Ressourcen als JSON-Datei beibehalten? damit das webpack es nicht als Javascript verarbeiten muss? –

+0

Warum sind Ressourcen ein Array? – maioman

+0

@maioman, die Array-Lösung ist so, dass ich die Lokalisierungsressourcen aufrufen kann mit [ ‚en-US‘]. Hallo zum Beispiel. Haben Sie eine bessere Implementierung des Ressourcen-Moduls, so dass ich immer noch die richtige Lokalisierung abrufen kann, indem ich die gleiche Syntax (oder eine syntaktische Syntax) verwende? – alkesos

Antwort

1

Die Lösung besteht darin, das Ressourcenmodul als JSON-Datei beizubehalten (wenn die Daten keine durch JavaScript durchgeführte Datenverarbeitung erfordern) und den entsprechenden Loader (json-loader) zu verwenden.

Dadurch verarbeitet Webpack die Datei nicht als JS, daher sollte die Buildzeit schneller sein.

Verwandte Themen