フレークワーク MVCのV(ビュー)に関して

フルスタックに限らず、フレームワークの乗り換えって面倒ですよね。


そして乗り換えの際、一番面倒なのがビューじゃないか?と最近は感じてます。

Webアプリに限っていえば、データはデータベースが持ってるのが一般的だと思います。

最近の流行はORマッピング部分を自動生成して、ロジック部分からフレームワークの提供するapiを呼び、

永続化されてるデータを取得しましょう。です。

ORマッピングは難しい所だし、自動生成してくれるから許容できるんですが、ビューはいかんともしがたいです。


ビューみたいにコロコロ変わりやすいものの、専用の記法とかを覚える気力がもう湧かないわけです。

strutsとかJSFとか、超クールと盲信してた頃と違い、もうすぐ31のオジンですから。


今はrailsからrubyの世界に迷いこんで、rubyという言語を使えるようになりたい。と思ってますが、

数年後、railsを淘汰するようなグレートなフレームワークが、例えばhaskellで出たとしたら宗旨変えせずにいられるかは分からないです。


だから、永続化はデータベースで決まっているように、

テンプレート言語を使ってサーバサイドでビューを生成するんじゃなくて、

非同期じゃなくてもいい処理も全部、 .to_jsonみたいにjsonxmljavascriptにデータを渡して

素の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>";