フロントエンドjavascript,jquery、サーバーエンドphp,mySQLでウェブアプリを開発しています。
例えば、動的にデータベースと連携したセレクトボックスを作るとします。
その際、
(1)サーバーサイドはデータの提供だけを行い、フロントエンドでセレクトボックスを作る
(2)サーバーサイドで、セレクトボックスを作ってしまって、フロントエンドでは、それを書き出すだけにする
のどちらがいいのか、迷っています。
(1)のメリットは、通信量が少ない、デバッグがしやすい、ユーザーが爆発的に増えたとき、処理が分散される 等
(2)のメリットは、プログラム資産を秘匿できる、しっかりクラスを設計すれば、フロントサイドのプログラミングが楽 等
今は、両方が混在していて、どちらかにスタイルを統一しようと思っているのですが、どちらが有利なのか、判断しかねています。
今後は、通信はどんどんと速く、大容量になるので、プログラム資産の保護のために、サーバーサイドでできるだけ処理をして、フロントエンドでは、それを書き出すだけにした方がいいのかなという方向に傾きつつあるのですが、皆さんは思われますか?
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答6件
0
プロジェクトの人員形態(技術領域や習熟度)や方針によります。
通信量含めたパフォーマンスは大して変わらないと思います。
なぜなら書き出すHTMLは同じだから。
JavaScriptでガンガン書き換えるようなものだとまた別ですけどね。
基本的には「View側にはロジックは書かない」ようにすべきとは思いますが、
例えば、セレクトボックスに利用する値、検索結果のデータをDBから取得してループする程度はViewに書いても問題ないと思いますし、各種テンプレートエンジンを利用する際でもそれくらいは書きます。
要件により、条件分岐を書くこともありますね。
挙げられた例だと1)ですね。
2)もなくはないです。ほとんどJavaSciptでHTMLを構成する場合、サーバーサイドから非同期通信でデータを得て返ってきた情報を元に画面を作りますが、JavaScriptでHTMLを描画するのはそれなりに負荷がかかり、パフォーマンス的にはサーバーサイドからHTMLそのまま返した方が速くなります。
サーバーサイドから返すHTMLもサーバーサイドの言語にそのまま書くのではなくテンプレートエンジン使うことが多いかと思います。
投稿2020/04/25 21:25
総合スコア80875
0
今は、両方が混在していて、どちらかにスタイルを統一しようと思っているのですが
どちらも方針としてありです。「HTMLでフォームを全部作ってしまう」のも、「サーバサイドはAPIに専念して、HTMLはすべてJavaScriptで生成」というのも、プロジェクトとして成立します。
投稿2020/04/25 23:32
総合スコア146018
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
皆さんの回答を拝見しましたが、SPA という言葉が出てないので、参戦です。
フロントエンドjavascript,jquery、サーバーエンドphp,mySQLでウェブアプリを開発しています。
この内容から、Webアプリ構築技法の分類でいうと Ajax ということになるかと思います。
しかし、最近では、 SPA (Single Page Application)というのが流行っています。
SPA では Ajax と異なり、サーバから最初のHTML/javascriptを受信したあとは API 呼び出ししかしません。イメージ的にはクライアント側のブラウザ上にアプリケーションがダウンロードされて動作する感じです。
ユーザインタフェースのためのHTMLの内容はすべて Javascript でDOM経由で構築することになります。
サーバサイドからの動的なHTML生成は一切なくなります。また、技術的にHTML5と密接に絡んでおり、リッチなユーザインタフェースを提供することが可能です。たとえば、オフラインでの編集や、編集中のテキストボックスの内容がリロードされても消えないなどの機能が実装可能です。
歴史的には Ajax 対RIAという時代があったのですが、HTML5+SPA の出現で、RIAは駆逐されました。
(1)サーバーサイドはデータの提供だけを行い、フロントエンドでセレクトボックスを作る
(2)サーバーサイドで、セレクトボックスを作ってしまって、フロントエンドでは、それを書き出すだけにする
のどちらがいいのか、迷っています。
SPAでは、PHPでは一切のHTML生成は行わず、API経由でのデータの提供しかしなくなります。PHPでビジネスロジック層を REST APIサーバとして書いて、クライアント Javascript でプレゼンテーション層を書くことになります。
Ajax を完全に否定しているわけではありません。SPAについて、まったく初めてであれば、ハードルが高いのも事実だと思います。
ただ、個人的には今から新しくWebアプリケーションを開発されるのであれば、SPAとの比較をしてからアーキテクチャを決定されることをおすすめします。
投稿2020/04/26 00:58
総合スコア3401
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
ベストアンサー
(1)サーバーサイドはデータの提供だけを行い、フロントエンドでセレクトボックスを作る
(2)サーバーサイドで、セレクトボックスを作ってしまって、フロントエンドでは、それを書き出すだけにする
個人的には、2)が99%で、1)が1%です。
以下、これを取る理由です。
- ... 端末のメモリ使用量を少なく出来ることで、ある程度スペックが低くてもラグなく読み込める。
- ... サーバー側とユーザー側で同じような出力をするならサーバー側の方が圧倒的に早い。
- ... 一気に整形したほうが楽。他で使う時も同様の処理が共通化できる。
- ... なんとなく。2)がめんどくさいと思った時に。
- or 2) ... 場所によって、大まかな出力は同じだが、細かな出力が違う場合の対応に対する労力とリターン。
1)を使ったことは、実際、Laravelを使ったときでは1回くらいしかありません。
それも今では、2)に置き換えてますが。
個人開発なので、そこらへんは自由に融通できますが、もし所属団体がある場合は聞いてみたほうが良いと思います。
投稿2020/04/25 21:30
編集2020/04/25 21:38総合スコア10429
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/04/25 22:25 編集
2020/04/25 22:25
2020/04/25 22:27
2020/04/26 00:35
0
おはようございます。日曜プログラマです。
最近、javascriptが活気ずいていますね。
自分は、サーバーサイドではmysql+PHPでJSON形式でデータのみを吐き出す、
Vue.jsでインターフェイスを作成するという流れで勉強しています。
PHP8でJIT対応すると高速化されるらしいので、サーバーサイドで処理を各機会が増えると
思います・・・。というか楽しみでもあります。
色々選択できて迷いますね・・。
投稿2020/04/25 21:18
退会済みユーザー
総合スコア0
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/04/25 21:52
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/04/25 22:23 編集
2020/04/25 23:37