So verwende ich react-router
zusammen mit require.ensure
und Webpack, um meine Routen zu chunk out. Dies hat sich jedoch von vorformulierten in einem viel Folge:Wie erstellt Const in einer Schleife für require.ensure?
const getTermsAndConditions = (nextState, cb) => {
require.ensure([], require => {
cb(null, require('../containers/TermsAndConditions/TermsAndConditions'))
}, 'terms')
}
const getThread = (nextState, cb) => {
require.ensure([], require => {
cb(null, require('../components/Thread/Thread'))
}, 'inbox')
}
const getPrivacyPolicy = (nextState, cb) => {
require.ensure([], require => {
cb(null, require('../containers/PrivacyPolicy/PrivacyPolicy'))
}, 'privacy-policy')
}
Ich habe etwa 25 dieser Erklärungen in einer Reihe, und dann in der eigentlichen Render-Funktion:
<Route path='privacy' getComponent={getPrivacyPolicy} />
...etc
ich nicht Denken Sie daran, dass die Routen fest codiert sind, da sie eine gute Vorstellung vom Gesamtlayout der Anwendung geben, aber ich möchte das Muster für die Typenkennzeichen getPrivacyPolicy
reduzieren. Wie kann ich das machen?
EDIT: Ich habe genommen, nachdem @ Michael Jungo Antwort haben, aber das Ergebnis der getComponentFactory
produziert Funktionen gefunden, die noch var Namen in sich haben, nicht fest einprogrammiert Saiten.
ZB:
const PrivacyPolicy = getComponentFactory('../containers/PrivacyPolicy/PrivacyPolicy', 'privacy-policy')
Und dann console.log(PrivacyPolicy)
kehrt:
PrivacyPolicy: function (nextState, cb) {
require.ensure([], function (require) {
return cb(null, require(path))
}, chunkName)
}
So beide path
und chunkName
nicht durch ihre tatsächlichen String-Werte ersetzt ...
Natürlich gibt es keine fest codierten Zeichenketten sind, das ist nur, wie Verschlüsse funktionieren! (Sie können dies umgehen, indem Sie 'eval' verwenden, aber ich nehme nicht an, dass Sie das wollen). Da Sie jedoch keine explizite Abhängigkeit angeben, sollten Sie in der Lage sein, Ihre 'require'-Aufrufe anzupassen, um die Warnung zu vermeiden. Vielleicht möchtest du [eine separate Frage stellen] (http://stackoverflow.com/questions/ask) darüber. – Bergi
@Bergi Ich wüsste nicht mal, was ich fragen soll. Stört es Sie zu erklären, wie ich die "require" Anrufe anpassen würde? Nach dem Ausführen meines Webpack-Builds sieht es so aus, als ob diese Chunks nicht einmal generiert werden, also ist es kein einfacher Fehler. –
Ah, ich habe verpasst, dass Webpack versucht, diese Dinge zu analysieren, um Chunks zu erstellen. Ich ging davon aus, dass das Skript zumindest ausführbar wäre, wenn man das AMD-Format "require" (mit einem Callback) verwendet. Auch finde ich es ziemlich merkwürdig, dass Sie 'require.ensure' verwenden, aber keine Abhängigkeiten angeben. – Bergi