読者です 読者をやめる 読者になる 読者になる

by shigemk2

当面は技術的なことしか書かない

ファイル別にコードを読み込ませるようにする

JavaScript

JavaScriptの開発が進むと、
「このコードはこのファイルにしか実行されないようにしたい」とか、
「このコードはこのディレクトリにしか実行させたくない」とか
っていうのが出てくると思うんですよ。

で、それを実現させる方法があるのだろうか。

Yes, you could.
そこそこ規模が大きくても何とかなるjavascriptの設計(URL dispatcherの薦め) | tech.kayac.com - KAYAC engineers' blog

// 第一引数はURLのパス部分にマッチする正規表現 
dispatcher('.', function () {
    $(function () {
        // 全URLで使う内容 
    });
});

// 第一引数はURLのディレクトリ直下のみにマッチする正規表現 
dispatcher('^/$', function () {
    $(function () {
        // 全URLで使う内容 
    });
});

// 第一引数はURLのパス部分にマッチする正規表現 
dispatcher('^/hoge', function () {
    $(function () {
        // /hogeで使う内容 
    });
});

// 第一引数はURLのパス部分にマッチする正規表現 
dispatcher('^/hoge|^/huga', function () {
    $(function () {
        // /hogeと、/hugaで使う内容 
    });
});

// ライブラリ等を読み込む 

function dispatcher (path, func) {
    dispatcher.path_func = dispatcher.path_func || []
    if (func) return dispatcher.path_func.push([path, func]);
    for(var i = 0, l = dispatcher.path_func.length; i < l; ++i) { // >
        var func = dispatcher.path_func[i];
        var match = path.match(func[0]);
        match && func[1](match);
    };
};
dispatcher(location.pathname);

実質10行のコードをjsファイルに追加して、
第一引数にパスを指定する正規表現を追加すればいいだけです。
ね、簡単でしょ?

とはいうものの、正規表現の知識が多少必要ですが。