2016-08-22 5 views
1

NodeJSベースのサーバーを実行しているReactベースのアプリケーションがあり、xhrを使用せずに非静的ファイルをダウンロードできるようにしたいと考えています。混合はExpressと反応しますか?

私はExpressを使用することを考えていますが、同じコンテナにReactと共存させる方法がわかりません。誰も私がこれについてどのように行くかを提案することはできますか?私はまだwebpackとReactを学んでいて、これの例を見つけるのが難しいですか?次のように見て、

node ./node_modules/webpack-dev-server/bin/webpack-dev-server.js --host 0.0.0.0 --port 8081 --hot --inline 

のWebPACK-DEV-server.js付:

module.exports = { 
    entry: [ 
    './src/index.js' 
    ], 
    output: { 
    path: __dirname, 
    publicPath: '/', 
    filename: 'bundle.js' 
    }, 
    module: { 
    loaders: [{ 
     exclude: /node_modules/, 
     loader: 'babel', 
     query: { 
     presets: ['react', 'es2015', 'stage-1'] 
     } 
    }] 
    }, 
    resolve: { 
    extensions: ['', '.js', '.jsx'] 
    }, 
    devServer: { 
    historyApiFallback: true, 
    contentBase: './' 
    } 
}; 

」./src/index.js'を

リアクトサーバーはWebPACKの経由で開始されます反応型コードです。

答えて

2

免責事項:私は一度も自分でwebpack-dev-serverを使用したことはありませんが(少なくとも直接的ではありません)、私は2つの解決策を考えることができます。

webpack-dev-server構成では、setupを使用します。 stated hereとして:私は自分自身を使用する方法であり、また

setup: function(app) { 
    // Here you can access the Express app object and add your own custom middleware to it. 
    // For example, to define custom handlers for some paths: 
    // app.get('/some/path', function(req, res) { 
    // res.json({ custom: 'response' }); 
    // }); 
} 

、Expressのミドルウェアですwebpack-dev-middlewareを、使用することです。したがって、基本的には、webpack-dev-serverと同じ機能を持つ独自のExpressサーバーを作成します。ここで

は(appエクスプレスアプリのインスタンスです)私のプロジェクトの1からの抜粋です:

// Webpack (only when not running in `production` mode): 
if (process.env.NODE_ENV !== 'production') { 
    debug('setting up webpack middleware'); 
    const webpackDevMiddleware = require('webpack-dev-middleware'); 
    const webpackHotMiddleware = require('webpack-hot-middleware'); 
    const webpackConfig  = require('./webpack.dev'); 
    const compiler    = require('webpack')(webpackConfig); 

    app.use(webpackDevMiddleware(compiler, { 
    noInfo  : true, 
    publicPath : webpackConfig.output.publicPath 
    })); 
    app.use(webpackHotMiddleware(compiler)); 
} 
+0

ありがとうございました。私は、npmを必要とせずにReactを使うことができるはずだが、webpackから配布バンドルを作成する方法はわかりません。何か案は? –

+0

@AndreM [これ](https://facebook.github.io/react/downloads.html#individual-downloads)を参照してください(Reactアプリケーションをビルドするときには常にnpm/Webpackを使用しますが、構成を管理し、追加の要件をインストールします)。 – robertklep

+0

私はwebpackを使ってパッケージ化することができて、bundle.jsとnon-Reactリソースをコピーする必要があることがわかりました。パッケージ化するには: '' 'node node_modules/.bin/webpack' ''を実行し、残りはコピーするだけです。伝統的に表現を使用し、Reactのものを静的なファイルのように扱うことができます。 –

0

@のrobertklepの回答に加えて、さらにいくつかの研究をもとに、あなたは「コンパイル」することができ、あなたのプロジェクトに反応しますnodejを使わずにこれらのリソースを利用するだけです。

node node_modules/.bin/webpack 

これは、コンパイル済みのプロジェクトが含まれているbundle.jsファイルが作成されます:プロジェクトを「コンパイル」に

利用ノード&のWebPACK。そして、従来のWebサーバーを経由して提供することができますdistのフォルダ内

cp bundle.js dist/ 
cp index.html dist/ 
cp -rf img css frameworks dist/ 

すべて:画像などの他のファイルは、外部のJavaScriptとスタイルシートは、例えば(distのフォルダがあることを仮定して)、コピーする必要があります。 NginxやApacheなど、NodeJSを使用します。

関連する問題