お世話になります。
現在、趣味でWeb開発をしているのですが、編集可能な表を実装したいと思っています。
一から作るのは大変すぎるのでライブラリを導入しようと考えていろいろ調べてみました。
するとhttp://jspreadsheets.com というサイトに
主だったものがまとまっているようで、この中から検討中です。
JavaScriptのGridライブラリ決定版 - SlickGrid という記事があり、最初はこれにしようかと思ったのですが、開発が止まってるっぽい。いちおう別の人がメンテを継続しているようですが若干不安
ということで、DataTablesを試してみたのですが、これは編集機能が有料のようなので趣味開発では却下!!!
ということで、SlickGridに戻ってきたのですが、Exampleをいくつか見てるとデータがJavaScriptで書かれています。 (ちなみにDataTablesは、通常のTableタグにIDを入れる形式)
最近ぽい開発の知識は、この開発をしながらキャッチアップ中なのでちょっと悩んでいるのですが。
JSにデータがある場合にどうやって吐くのがいいの?ということです。
- HTMLの中に埋め込んだJavaScriptに出力
- JavaScriptファイルをPHPなりでJavaScriptソースとして動的に作成して出力
- 2と似ていますが、データ部分のみのJavaScriptをPHPなりで動的に出力
- その他
やりたいこととしては、
- ページごとにいろいろな形の表を出したいので行列とも可変の表を出力したい
- ページ遷移せずに編集可能となり、ページ遷移せずに更新したい(要は多分Ajax)
なので、上記のことが解決できれば、SlickGridで無くても良いのですが、
JavaScriptにデータが来る形式のライブラリの場合、同じことで悩まないといけなくなります。
あと先のことも考えると最新のライブラリよりも多少枯れているくらいの方が良いかなと思っています。
仕事ではないので、あまり縛られることも無いのですが、作り始めてから、「あ!」ってなると乗り換えたりとかも大変であまりうれしくないので、みなさんだったらどうするかなーということを聞いてみたいです。
よろしくお願い致します
2016/07/04 13:11追記
言葉が足りずにすいません、吐くといってるのは出力のことです。
SlickGridのサンプルを見るとHTMLに中のJavaScriptを埋め込む形式で書かれています。
https://github.com/mleibman/SlickGrid/blob/gh-pages/examples/example-autotooltips.html
ヘッダ部分
JavaScript
1 2 var columns = [ 3 {id: "title", name: "Title", field: "title"}, 4 {id: "duration", name: "Duration", field: "duration"}, 5 {id: "%", name: "% Complete", field: "percentComplete"}, 6 {id: "start", name: "Start", field: "start"}, 7 {id: "finish", name: "Finish", field: "finish"}, 8 {id: "effort-driven", name: "Effort Driven", field: "effortDriven"} 9 ];
データ部分
JavaScript
1var data = []; 2 for (var i = 0; i < 500; i++) { 3 data[i] = { 4 title: "Task " + i, 5 duration: "5 days", 6 percentComplete: Math.round(Math.random() * 100), 7 start: "01/01/2009", 8 finish: "01/05/2009", 9 effortDriven: (i % 5 == 0) 10 }; 11 }
要は連想配列ですがこのような場合にどう出力するのがいいのかということです
「JavaScriptにデータが来る形式」と書いたのは、DataTablesの場合は、HTMLのTableでの出力を加工する形式のためこのような表現になりました。
データは、外部APIは使用しません。
サーバ側のデータベースに入っていて更新したいですが、
件数としては、1ページに最大10万件ほどのものを扱えるようにしたいです。
(一度に表示するのは、非現実というのは理解できていますが、この辺はまだ、自分の中でまとまっていないです)
今のところPHPからHTMLを直接出力していますが、将来的にはWeb以外の形でも
入出力を行いたいので、最初からAPI化しておいて非同期で取得するのが良いのかなと
質問をしてから思いました。
知識が古いため最近のモダンな仕組みを少しは取り入れたいと思っていますが、これもどうしようとちょっと思案しています。
質問が長くなってしまいましたが、最近はこうじゃないのとか、スキルアップのためにこうするとか、ざっくばらんな回答で構いませんので、たくさん回答が頂けたら嬉しく思います。
では、改めてよろしくお願い致します。
回答2件
あなたの回答
tips
プレビュー