SlickGridのJavaScriptソースコードを調べていました。
slick.grid.jsの構造が次のようになっていることに気づきました。
(function($) {
// Slick.Grid
$.extend(true, window, {
Slick: {
Grid: SlickGrid
}
});
var scrollbarDimensions; // shared across all grids on this page
////////////////////////////////////////////////////////////////////////////
// SlickGrid class implementation (available as Slick.Grid)
/**
* @param {Node} container Container node to create the grid in.
* @param {Array,Object} data An array of objects for databinding.
* @param {Array} columns An array of column definitions.
* @param {Object} options Grid options.
**/
function SlickGrid(container,data,columns,options) {
/// <summary>
/// Create and manage virtual grid in the specified $container,
/// connecting it to the specified data source. Data is presented
/// as a grid with the specified columns and data.length rows.
/// Options alter behaviour of the grid.
/// </summary>
// settings
var defaults = {
...
};
...
// private
var $container;
...
////////////////////////////////////////////////////////////////////////
// Initialization
function init() {
/// <summary>
/// Initialize 'this' (self) instance of a SlickGrid.
/// This function is called by the constructor.
/// </summary>
$container = $(container);
...
}
////////////////////////////////////////////////////////////////////////
// Private & Public Functions, Getters/Setters, Interactivity, etc.
function measureScrollbar() {
...
}
////////////////////////////////////////////////////////////////////////
// Public API
$.extend(this, {
"slickGridVersion": "2.0a1",
// Events
"onScroll": new Slick.Event(),
...
// Methods
"registerPlugin": registerPlugin,
...
});
init();
}
}(jQuery));
簡潔さと明確さのために一部のコードは省略されていますが、これで一般的な考え方がわかります。
次の目的は何ですか:
(function($) { // code }(jQuery));これは私が話したモジュールパターンですか?これは、グローバル名前空間をクリーンに保つことを意味しますか?行はどういう
$.extend()意味ですか?:上部$.extend(true, window, { // code });は「名前空間」に関係しているように見えます。名前空間とは何ですか?$.extend(this, { // code });下部は「公開」メンバーと機能を公開するために使用されているように見えますか?プライベート関数または変数をどのように定義しますか?必要に応じて、複数の「SlickGrid」をどのように初期化しますか?彼らはどれだけ共有し、どのように相互作用しますか?「コンストラクタ」関数に注意してください
function SlickGrid(...) { // code }。このスタイルでのコーディングに関する本、リンク、およびその他のリソースは何ですか?誰がそれを発明したのですか?
ありがとう!♥</p>