モジュールパターンについては、次のようなことをしています:
(function(namespace) {
// tons of code
// blabla
})(window.myGlobalNamespace);
コードを分割するにはどうすればよいですか? 名前空間の階層を使用したり、window.myGlobalNamespace.additionalFunc = function () {//blabla}
. 他の方法は何ですか?長所と短所は何ですか?どちらがより良い習慣と考えられていますか?
2 つの回答はどちらも RequireJS を示唆しています。RequireJS がこれらの問題をどのように解決できるか説明してください。
first.js:
(function(context) {
var parentPrivate = 'parentPrivate';
})(window.myGlobalNamespace);
second.js:
(function(context) {
this.childFunction = console.log('trying to access parent private field: ' + parentPriavte);
}(window.myGlobalNamespace.subNamspace);
main.js:
window.myGlobalNamespace.subNamspace.childFunction(); // doesn't work
そして人はできる
window.myGlobalNamespace.subNamspace.childFunction = function() {alert("a new function");}
コードの動作を変更するには!
ここで、次の 2 つの問題があります。
子からはアクセスできるが、外部のパブリックにはアクセスできない (つまり、保護されている) フィールドを持つことはできません。それを達成する方法はありますか?
そうでない場合、つまり、eparentPrivate にアクセスできるようにしたい場合は、公開する必要があります。その後、ユーザーはそれを変更できるようになります!
さらに、すべてのパブリック関数を変更および置換できます。そうなってほしくない。
RequireJS がこれらの問題をどのように解決するのかわかりません。誰かが光を当てることができますか?