2016-07-05 5 views
0

私はreact getting started tutorialに従っています。 次に、外部パッケージをインポートする方法を理解しようとしたので、npm、browserify、watchifyなどを使い始めました。 同じチュートリアルにはsection dedicated to package managersがあります。最初の質問はReactとReactDOMは、react.min.jsとreact-dom.min.jsより大きいbrowserifyでバンドルされます。

<title>Hello React!</title> 
<script src="build/react.js"></script> 
<script src="build/react-dom.js"></script> 

に従うようチュートリアルでのみbrowserifyから出てくるbundle.js含めるのではなく、彼らは

var React = require('react'); 
var ReactDOM = require('react-dom'); 

を書きますが、後に、彼らはまだRAWファイルを含めるのはなぜ」とは? ないことを私には明確な。私は一種のこれを無視し

。だから私のHTMLはONLYバンドル全体を含めている

<script src="bundle.js"></script> 
私が行くとbundle.jsを見て、私は理解していないものがある大きさならば、これらはある私のindex.jsファイルの中にこのよう

browserify -t [ babelify --presets [ react ] ] index.js | uglifyjs > bundle.js 

で生成され

var React = require('react'); 
var ReactDOM = require('react-dom'); 
var $ = require('jquery'); 

が必要です。合計サイズは520KBです。ちょっとした例のためにあまりにも多くの! require( "jquery")を削除した場合、合計サイズは388 KBに減少します。したがって、jqueryの重さは132 KBですが、jquery.min.jsをダウンロードするとサイズはわずか84 KBになります。 私がrequire( "react-dom")を削除した場合、合計サイズは70KBに減少しました。これは、React DOMが318KBの重さを意味しますが、react-dom.min.jsは1KBです!

ここでは何が起こっていますか? 私はNODE_ENV var(honesltyについて、私はその値を変更する方法を理解できませんでした)を読んで、いくつかの解決法を試しましたが、ファイルサイズは同じままです。 しかし、それはポイントではありません。

react-dom.min.jsは1KB、react-dom.jsは2KBです! それは生産/開発環境ではないようですか、何か不足していますか?

もう少し理解するのを手伝ってくれる誰にも感謝します。

+0

はここを見て試してみてください:http://stackoverflow.com/questions/26540627/how-to-set-process-env-before-a-browserified-script-is-run –

+0

私はそのポストを見た。これをマージするにはどうすればいいですか? 'browserify -t [babelify --DEBUG app:* - NODE_ENV production --FOO bar]> bundle.js' with this ' browserify -t [babelify --presets [ ] index.js | uglifyjs> bundle.js' ? – user2029958

+0

おそらく、非圧縮バージョンが含まれています。おそらく、各ライブラリにはおそらく特定の最適化された構成があるので、自分のサイズを自分のサイズに合わせることはできません。 –

答えて

0

この

browserify -t [ envify --NODE_ENV production babelify --presets [ react ] ] index.js | uglifyjs > bundle.js 
+0

私は動作しません。 私はbabelトランスフォームをpackage.jsonに移動し、browserifyコマンドの横にenvifyトランスフォームをそのまま残しました。今はエラーがなくなりましたが(動作しているようですが)、ファイルのサイズは変わりません。開発者バーに「React DevToolsをダウンロードしてより良い開発体験ができる」というメッセージが表示されます。だから私はまだ開発環境にいると思います。 – user2029958

+0

これは動作しますが、グローバルに変換するには '-t'の代わりに' -g'フラグを使用する必要があります。それ以外の場合は、必要なモジュールではなく、コードを宣言します。 – Mike

関連する問題