webpack
を使用してSSRリポジトリ(libのようなinferno-react)をバンドルしました。それには2つのルートファイルがあります.1つはサーバー用、もう1つはクライアント用ですが、まったく同じですが、クライアント側ではrequire.ensureを使ってチャンクが起こっています。ルートの 一つは、次のようになります。SSRで要求されたルートのダブルスクリプトタグ
<Route path="/home" getComponent={(props, cb) => {
require.ensure([], require => cb(null,
require('../views/containers/Home').default), 'home');
}}/>
意味、ブラウザがブラウザにダウンロードされ.html
とbundle.js
を解析され、WebPACKの意志そしてその後、HTMLとにルートのコンポーネントの.js
スクリプトタグをチャンク挿入がダウンロードされます。しかし、そのルートの.js
は、bundle.js
がダウンロードされた後にのみダウンロードされるため、少し遅くなります。だから、webpack-manifest-plugin
の助けを借りて、要求されたチャンクルートをサーバーから手動で追加します。しかし、今は、要求されたルートごとに、そのチャンクされたコンポーネントのファイル.html
にダブルスクリプトタグがあります。 1つは手動でサーバーに追加したため、もう1つはrequire.ensure
を使用してwebpackでチャンクを作成したためです。
問題はありませんが、2つのスクリプトタグが正常に機能します。 :/
私はそれを避ける方法がありますか、それ以外の方法はクライアント側でチャンクを維持しながらそれを処理することができます。
チャンクが必要なため、追加されました。ええ、複数のポイント入力は簡単な解決策ではありますが、確かに問題は解決しますが、避けようとしているのは、新しいルートを追加するとwebpackの追加/削除の変更につながるためです。 – myDoggyWritesCode
名前付きチャンクを使用すると、マニフェストプラグインを使用して挿入するのではなく、静的スクリプトタグ(例:手動でHTMLに挿入)のみを使用できますか?または、バンドル名にキャッシュバーストハッシュを使用するために必要ですか?私はあなたがここでサーバー上で何をしているのかについていくらか混乱することを認めます。 –
キャッシュバスト処理とは関係ありませんが、正確なファイル名が必要です。私のチャンクが要求される前にbundle.jsがロードされるのを待つのは目的だけです。私のサーバルートは ' 'そして、マニフェストプラグインを使ってビルド時に 'home.js:home_hash.js'としてマッピングすると、実際のファイルを挿入するために' filename'プロップを使ってキーと値のマッピングから正確なファイル名を取得します(チャンク)が要求されている場合は、スクリプトタグ(deferとbundle.jsスクリプトタグの後に追加)をhtmlで追加します。 –
myDoggyWritesCode