本日の社内勉強会のモジュールほげほげの内容補足、というか真面目バージョン。
微妙に修正した資料はこちら。
shobon-kun-no-module-hogehoge // Speaker Deck
対象を絞ったエクスポート
もし対象が特定の環境に依存しているものだったら、素直に記述したほうが可読性はますかもしれない。
(function(root,CS){
var foo = 'x';
CS.Util = {
some: function(){
console.log(foo);
}
};
})(this,this.CS = this.CS || {});
(function(win,CS){
var foo = 'x';
CS.Util = {
some: function(){
console.log(foo);
}
};
})(window,window.CS = window.CS || {});
CS.Util.some();
umd
ユニバーサルなモジュールパターンは、umdプロジェクトで発表されていて、とても参考になる。
underscore.js
資料のなかではunderscoreを読み込んでいるけど、本家のunderscoreはAMDの対応は削除されてしまっている。こちらのバージョンはAMDに対応していたり、lodashも対応しているので、AMDの対応させたい場合はこれらを使うといいかも。
ユニバーサルなモジュールにするべきか
個人的には、最近ではJavaScriptにやさしいビルドツールなどもでてきたので、必ずしも1ファイルですべてに対応しなくても、環境に合わせてビルドするとかでもいい時もあると思う。
reveal.js
reveal.jsを使わせて頂いて、すごく便利だったけど、PDFにプリントするときの調整が大変だった。(てか、ほとんどデフォルトだけど)