
Javascript, jQueryを用いてシステムを作っています。
例えば、データベースから取り出したデータを表に表示したり、自作のダイアログボックス(div要素など)を出したり引っ込めたりする、といった場合を考えます。
そのとき、静的な部分(表のtableタグ・ダイアログボックスなど)と動的な部分(表の内部のtrやtdなど)が分かれます。
そこで、静的な部分は極力HTMLに直接書くようにするのか、白紙のHTMLにJavascriptで全ての要素を配置していくのか迷っています。
静的な部分をHTMLで書くようにした場合、後でJavascriptから操作するための空のタグが大量発生し、結局HTMLだけを見ても意味不明ということになり、表の行数など動的に変化する部分は結局要素をJavascriptから生成しなければならず、静的に生成した要素と動的に生成した要素が混ざり合って一貫性が失われるといった問題を個人的には感じています。
逆に、すべてをJavascriptで記述した場合、全体としては記述量は増えることになりますし、読み込みも遅くなりそうに思えます。
どこまでをHTMLで書き、どこまでをJavascriptで書くのか、何か流儀のようなものがあればご教授ください。よろしくお願いします。
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
データベースからデータを取り出すならサーバサイド言語で取り出すのか、クライアントサイド言語で取り出すのか、で実装法が変わると思います。
私は JavaScript はなくても動作するように実装するので 下記のように使い分けます。
- JavaScript が無効ならサーバサイドスクリプトでHTML出力
- JavaScript が有効なら初回出力時だけサーバサイドスクリプトでHTML出力し、動的変更部分はJavaScriptでDOM操作
> 静的な部分をHTMLで書くようにした場合、後でJavascriptから操作するための空のタグが大量発生し
上述のように JavaScript がなくてもサーバサイドスクリプトでHTML出力するので空タグが多量発生する事はありません。
JavaScript はあくまで動的出力に留める事で無駄なHTMLが生まれないようにしています。
これは「でしゃばらないJavaScript」や「控えめなJavaScript」と呼ばれます。
http://www.ibm.com/developerworks/jp/web/library …
# Re: hxwqt563さん
なるほど、Javascriptがなくても動くように実装する、目から鱗です。
適切な設計を考えれば自然と出る結論のはずが、すっかり見失っていました。
ご回答ありがとうございました。
No.1
- 回答日時:
非常に悩ましい問題です。
自分はknockoutjsや、angularjsのような「UI自動制御モジュール」をテンプレートエンジンとして使い、ジレンマに終止符を打ちました。
インターフェース要素を、ユーザの入力経過に合わせてAjaxで取得し、動的に連動表示するケースなどでは大きな威力を発揮します。
モデルの定義など、一度データスキーマを作らねばいけない手間はありますが、慣れれば、バグも発生しにくく、作業を標準化しやすいのでおすすめです。
knockoutjs
http://knockoutjs.com/
http://kojs.sukobuto.com/
いったん理解できれば、イベントハンドラだらけのjavascriptに戻る気はなくなるでしょう。
、
悩ましい問題な割に、調べても解決策や流儀が出てこないので困っていました。
このような問題を解決するモジュールが出ていることはとても参考になりました。有り難うございます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP 掲示板のセキュリティについてアドバイスお願い致します 1 2023/08/11 20:44
- 日本語 [ 5-イ. 先生に本をもらった ] 11 2022/10/28 18:25
- その他(プログラミング・Web制作) WEBアプリ開発に必要な言語 5 2023/06/28 16:57
- JavaScript 読み込んだQRコードをフォームに受け渡したい 1 2023/05/18 11:18
- 哲学 説得力を修辞の巧みさまたは論理の強さの2つに分析するにはどうすると良いでしょうか? 0 2022/07/20 05:46
- ホームページ作成・プログラミング ホームページ作成について。「ワードプレスではありません」。 3 2023/08/13 14:44
- JavaScript HTML&CSS Javascriptによる動的テーブル 1 2023/03/27 19:51
- JavaScript JavaScript|特定URLだった時、特定の要素を変更するコードの書き方を教えてほしいです 2 2023/08/25 21:43
- JavaScript switch文のswitch(n)の部分を複数の値にするか、if文に変えてほしいです。 1 2022/07/27 17:18
- JavaScript Q&Aの掲示板を作成していてヤフー知恵袋やgoo質問のように質問ごとにURLを生成したい 5 2023/08/04 01:22
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
(VBS) テキストファイル読込で...
-
JQuery、セレクトボックスをル...
-
VC++のデバッガでvectorの要素...
-
ページ全体をスクロールするAja...
-
エクセルのシート上に別のシー...
-
デジタル時計の時刻合わせの方...
-
[Java] Edgeでのアドレスバー非...
-
Excelでワードアートや図を常に...
-
Javascript_submit()完了後に処...
-
親ウィンドウから開いた子ウィ...
-
別フォームから戻ったときのイ...
-
PDFを(htmlのように)無限に縦...
-
マイページはどこを開くの
-
一定時間おきにアラームやポッ...
-
VBA ポップアップが表示された...
-
「Cancel = True」とはどういう...
-
Outlookでこのような表示がされ...
-
リストビューをスクロールさせ...
-
スクリプトって、何ですか?ど...
-
PDFファイルの向きを縦から横に...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VC++のデバッガでvectorの要素...
-
(VBS) テキストファイル読込で...
-
[C++] vector<string> の各要素...
-
【VBA/HTML】特定のタグ要素に...
-
ajaxで追加したdom要素にscript...
-
bxSliderで動画をスライドごと...
-
ロールオーバーで大きくバナー...
-
VBA スクレイピング
-
WebサイトのHTMLオブジェクトの...
-
jqueryでtable内容の置き換え
-
ModeSwitchの状態の取得方法
-
JavaScriptでクリップボードの...
-
PL/Iについて、教えてください。
-
JQuery、セレクトボックスをル...
-
フォームで入力時自動で次の項...
-
ajax
-
スプレッドシートのチェックボ...
-
ページ全体をスクロールするAja...
-
ハンバーガーメニューが閉じない
-
Ajax.Updaterで読み込んだ先の...
おすすめ情報