私はノード、エクスプレス、ウェブパックについて学び、ミドルウェアについていくらか混乱しています。以下のコードを見ると、Webサーバーを起動してhttp://localhost:7770/を開くと、ブラウザはサーバーに2つのミドルウェアを経由してdist
ディレクトリにメモリを取得しようとしている要求を発行します。その後、要求は以下のヒット:ホットリロードを可能にするためにエクスプレスサーバがウェポンミドルウェアでどのように動作しますか?
app.get('*', function(req, res) {
res.sendFile(path.join(__dirname, 'index.html'));
});
順番にdist
フォルダにbundle.js
を要求しますindex.html
を送るであろう。 webpack-hot-middleware
は、ファイルに保存された変更をリッスンし、サーバー上でホストされる新しいバンドルを自動的に構築します。これは正しいです?私は、ミドルウェアが呼び出されたとき、要求がなされたとき、またはコードに変更(および保存)が行われたときに完全にはわからないのですか?
devServer.js
var path = require('path');
var express = require('express');
var webpack = require('webpack');
var config = require('./webpack.config.dev');
var app = express();
var compiler = webpack(config);
app.use(require('webpack-dev-middleware')(compiler, {
noInfo: true,
publicPath: config.output.publicPath
}));
app.use(require('webpack-hot-middleware')(compiler));
app.get('*', function(req, res) {
res.sendFile(path.join(__dirname, 'index.html'));
});
app.listen(7770, 'localhost', function(err) {
if (err) {
console.log(err);
return;
}
console.log('Listening at http://localhost:7770');
});
webpack.config.dev.js
var path = require('path');
var webpack = require('webpack');
module.exports = {
devtool: 'source-map',
entry: [
'webpack-hot-middleware/client',
'./client/pokeapp'
],
output: {
path: path.join(__dirname, 'dist'),
filename: 'bundle.js',
publicPath: '/static/'
},
plugins: [
new webpack.HotModuleReplacementPlugin(),
new webpack.NoErrorsPlugin()
],
module: {
loaders: [
// js
{
test: /\.js$/,
loaders: ['babel'],
include: path.join(__dirname, 'client')
},
...