URLDispatcher

WEB+DBPressの第60回にJQueryの特集をしていた。
JQuery好きとしては是非見たいところ。

WEB+DB PRESS Vol.60

WEB+DB PRESS Vol.60

その中に、URLDispatcherというものが紹介されていたので、自分なりに作り変えてみた。
どういうものかと言うと、URLごとに実行するJavascriptのコードを変更するという物。
結構Javascriptって、コードが散らばってたりするので、このJavascriptを1行読み込んで、URLごとに処理を切り出すようにする。


変更を加えた物は以下。

url.dispatcher.js

// 実行するものの定義
dispatcher([
	{
		// 全体の処理。
		path: '.',
		func: function() {
			// 全体に関わる処理を記述する。
		}
	},
	{
		// 「/hoge」で始まるURLでの処理。
		path: '^/hoge',
		func: function() {
			// 「/hoge」配下での処理を記述する。
		}
	}
]);

/**
 * パスによって指定の関数を実行する。
 * @param mappings
 * 	path:現在のパスにマッチする正規表現
 * 	func:実行させたい関数
 */
function dispatcher(mappings) {
	var pathname = location.pathname;

	for(var i = 0, len = mappings.length; i < len; i++) {
		var path = mappings[i]['path'], func = mappings[i]['func'];
		if(path && func) {
			if (pathname.match(new RegExp(path))) {
				func.apply(this);
			}
		}
	}
};