フレークワーク MVCのV(ビュー)に関して
フルスタックに限らず、フレームワークの乗り換えって面倒ですよね。
そして乗り換えの際、一番面倒なのがビューじゃないか?と最近は感じてます。
Webアプリに限っていえば、データはデータベースが持ってるのが一般的だと思います。
最近の流行はORマッピング部分を自動生成して、ロジック部分からフレームワークの提供するapiを呼び、
永続化されてるデータを取得しましょう。です。
ORマッピングは難しい所だし、自動生成してくれるから許容できるんですが、ビューはいかんともしがたいです。
ビューみたいにコロコロ変わりやすいものの、専用の記法とかを覚える気力がもう湧かないわけです。
strutsの
今はrailsからrubyの世界に迷いこんで、rubyという言語を使えるようになりたい。と思ってますが、
数年後、railsを淘汰するようなグレートなフレームワークが、例えばhaskellで出たとしたら宗旨変えせずにいられるかは分からないです。
だから、永続化はデータベースで決まっているように、
テンプレート言語を使ってサーバサイドでビューを生成するんじゃなくて、
非同期じゃなくてもいい処理も全部、 .to_jsonみたいにjsonかxmlでjavascriptにデータを渡して
素のhtmlのdiv要素を更新していく。なんてのはどうかなぁ?と考えたりする訳です。
共通のview
<html> <head> <title>Ajax (prototype.js used)</title> <script type="text/javascript" src="./javascript/prototype.js"></script> <script language="JavaScript"> function request(data, method, uri, async) { var parm1 = $F('txt1'); var uri = uri + '?txt1=' + parm1; var myAjax = new Ajax.Request(uri, { method: method, parameters: '', onComplete: on_loaded }); } function on_loaded(obj) { $('test').innerHTML = obj.responseText; } </script> </head> <body> <form> <input type="text" id="txt1"> <input type="button" value="SUBMIT" onclick="request('', 'GET', '呼び出すuri', true)" /> </form> <div id="test"></div> </body> </html>
package ajax; import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class AjaxServlet extends HttpServlet { public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { String result = req.getParameter("txt1"); PrintWriter pw = res.getWriter(); pw.write("<p>hello " + result + " </p>"); } }
なぜだか例はしょぼいperl
use CGI; $q = new CGI; $txt1 = $q->param('txt1'); print "Content-type: text/html; charset=iso-8859-1\n\n"; print "<p>hello"; print $txt1; print "</p>";