🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
nginx

nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

ビルド

ソースコードを単体で実行可能なソフトウェアへ変換する過程をビルド(build)と呼びます

Express

ExpressはNode.jsのWebアプリケーションフレームワークです。 マルチページを構築するための機能セットおよびハイブリッドのWebアプリケーションを提供します。

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

Q&A

解決済

1回答

3382閲覧

node.js・expressのバックエンドはwebpack等でバンドルする必要があるのか?

teraha

総合スコア59

nginx

nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

ビルド

ソースコードを単体で実行可能なソフトウェアへ変換する過程をビルド(build)と呼びます

Express

ExpressはNode.jsのWebアプリケーションフレームワークです。 マルチページを構築するための機能セットおよびハイブリッドのWebアプリケーションを提供します。

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

0グッド

0クリップ

投稿2021/03/19 06:52

ビルドやバンドルの概念がいまいち理解できていません。
ブラウザで表示しない場合はそもそもバンドルの必要性はないのでしょうか?

フロントエンド: React
バックエンド: express

フロントエンドは
http://myserver.com:3000(URLは仮のもの)
にアクセスするとReactで作った画面を表示する。
画面を表示するときにバックエンドからデータを取ってくる。

バックエンドは
http://myserver.com:4000/api/users
http://myserver.com:4000/api/products
などにアクセスするとMySQLからデータを読み込んでjsonを返す。

こんな感じの構成です。

フロントエンドは
create-react-scriptsで作り始めたところ、
npm run buildというコマンドがついてきました。
ビルドで作成されたbuildというディレクトリを本番サーバーの
/usr/share/nginx/html/frontend/
というパスにコピーし
/etc/nginx/conf.d/default.conf
にいろいろ設定したところ
http://myserver.com:3000のURLでReactの画面が表示されるようになりました。

バックエンドは
npm install express-generator
express --view=ejs
というコマンドでベースとなる環境を作りました。
MySQLで読み書きしてJSONを返す所までは作ってローカル環境で動作確認済み。

しかし、これを本番環境に持って行く時の一般的な手順が分かりません。
gitでファイルをすべて本番サーバーにコピーしてnpm startすれば動きますよね?

しかし、webpackのようなツールを使ってバンドル?ビルド?をする必要があるのかがいまいちわかりません。

個人的なビルド(バンドル)への理解としては
・webpackでバンドルをすると複数のファイルが1つにまとまる
・ブラウザで表示するとき、複数ファイルよりも1つにまとめたファイルを読み込む方が速い

そうすると、バックエンドがjsonを返すだけ、ブラウザでの表示を前提としない場合は
もしかしてバンドルしなくてもいいの?
それともバンドルをするとバックエンドも動作が速くなるの?
と疑問に思っております。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hoshi-takanori

2021/03/19 14:39

バンドルするもう一つの利点として、一つのファイルにまとめる過程で必要な関数やライブラリが揃ってることが確認できるってのがあると思います。
guest

回答1

0

ベストアンサー

ブラウザで表示しない場合はそもそもバンドルの必要性はないのでしょうか?

はい。

個人的なビルド(バンドル)への理解としては

・webpackでバンドルをすると複数のファイルが1つにまとまる
・ブラウザで表示するとき、複数ファイルよりも1つにまとめたファイルを読み込む方が速い

ブラウザの場合は、importを処理できる環境がまだ限られていますし、requireは処理できませんので、それらを事前にWebpackなどで解決しておかないと動作させづらい、あるいは動作できない、ということになります。

投稿2021/03/19 07:06

maisumakun

総合スコア145971

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

teraha

2021/03/19 08:01

Webpackの役割 ・ブラウザによってjavascriptの使える機能が違う ・webpackはブラウザの多様性を吸収できるようにjavascriptを書き換えてくれる フロントエンド ・ブラウザごとの差異を意識する必要がある ・webpackが必要 バックエンド ・ブラウザごとの差異を意識する必要がない ・webpackは不要 ってことですね。 速い・遅いの問題ではなく、 動く・動かないの問題があるのか。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問