2017-02-06 6 views
0

サーバー側でレンダリングされた汎用Javascript Webアプリケーションを実行するとき、クライアントとサーバーの間で共通定数を共有するにはどうすればよいですか?このプラグインは文字通りページにこれらの値を注入することのWebPACKのDefinePluginExpress、React、Webpack、SSRアプリケーションでクライアントとサーバーの間で定数を共有する方法

new webpack.DefinePlugin({ 
    PRODUCTION: JSON.stringify(true), 
    VERSION: JSON.stringify("5fa3b9"), 
}) 

注意して

答えて

1

new webpack.DefinePlugin({ FOO: "BAR" }); 

その後のWebPACKは文字通り挿入します:

エラーになります
var FOO = BAR; 

を、裸の文字列BARが存在しない変数のように見えるので、あなたがこのような何かをすれば意味。例はそう

new webpack.DefinePlugin({ FOO: JSON.stringify("BAR") }); 

が正しく挿入されます挿入、引用された値を返します。JSON.stringify、に包まれたほとんどのものを示している理由です:

var FOO = "BAR"; 

はい、これはひどいデザインです。 WebpackのAPIは地雷です。 :あなたはバックエンド側で問題なくそれらにアクセスすることができますし、これは非常に漠然とした質問であるwebpack.DefinePlugin

+0

私も共通の機能を共有したいのですが? – ABC

+0

いいえ、通常のjavascriptのようなものを必要とします –

0

あなたは、環境変数としてそれらを設定することができます

ウェブパックの設定でプラグインを定義してください。

plugins: [new webpack.DefinePlugin({__SERVER_RENDERING__: false})] 
0

使用して、クライアントのjsファイルにそれらを注入することができますが、プラグインを定義し使用することができます -

関連する問題