ホームページ > 記事 > ウェブフロントエンド > Javascript_javascript スキルにおける匿名関数とカプセル化の概要
さまざまな JS ライブラリのカプセル化についてしばらく混乱していましたが、ようやく手がかりが得られました。おおよそ:
そこで、jQuery の初期バージョンを見つけました。バージョン番号は 1.7.1 です。カプセル化コードは次のとおりです。
そのうち
同様のパッケージを作成できます
}
})(ウィンドウ)
1. jQuery シンボルとグローバル呼び出しを定義する
2.非同期サポート
そこで、以前の jQuery パッケージを探しましたが、メソッドはほぼ同じでした。 。
var $ = jQuery;
};
これは魔法のような判定方法なので、前のステップで jQuery を書き換えることはできません。そこで、最新の jQuery パッケージがどのようなものかを調べてみる必要がありました。そこで 2.1.1 を開いてみたところ、多くの機能が追加されているだけでなく、基本的な考え方は変わっていないことがわかりました
if (モジュールのタイプ === "オブジェクト" && module.exports のタイプ === "オブジェクト") {
module.exports = global.document ?
ファクトリー(グローバル、真) :
関数(w) {
if (!w.document) {
throw new Error("jQuery にはドキュメントを含むウィンドウが必要です");
}
工場を返します(w);
};
} else {
工場(グローバル);
}
}(typeof window !== "未定義" ? window : this, function(window, noGlobal) {
var jQuery = function() {
console.log('jQuery');
};
if (typeofdefine === "function" &&define.amd) {
定義("jquery", [], function() {
jQuery を返す;
});
};
strunnamed = 未定義のタイプ;
if (typeof noGlobal === strundefine) {
window.jQuery = window.$ = jQuery;
};
jQuery を返す;
}));
バックボーン封装
打开了バックボーン看了一下
定義(['アンダースコア', 'jquery', 'エクスポート'], 関数(_, $, エクスポート) {
root.Backbone = Factory(root, エクスポート, _, $);
});
var _ = require('アンダースコア');
ファクトリー(ルート、エクスポート、_);
root.Backbone = Factory(root, {}, root._, (root.jQuery || root.Zepto || root.ender || root.$));
}
バックボーン.$ = $;
バックボーンを返す;
アンダースコア封装
以降、また看了看アンダースコア、発行この库また占领了一シンボル _
if (エクスポートの種類 !== '未定義') {
If (モジュールのタイプ !== '未定義' && module.exports) {
エクスポート = module.exports = _;
}
エクスポート._ = _;
} else {
root._ = _;
}
if (define === '関数' && 定義.amd) {
定義('アンダースコア', [], function() {
return _;
});
}
}.call(this));