jQuery プラグインとメソッドの拡張は非常に強力で、開発時間を大幅に節約できます。この記事では、jQuery プラグイン開発の基本、ベスト プラクティス、およびよくある落とし穴について概説します。
1. はじめに
jQuery プラグインの作成は、新しい function 属性を jQuery.fn に追加することから始まります。ここで追加される object 属性の名前は、プラグインの名前です:
jQuery.fn.myPlugin = function(){
//独自のプラグイン コード
};
ユーザーに人気の $ 記号はどこですか? まだ存在しますが、他の JavaScript ライブラリとの競合を避けるために、jQuery を自己実行の閉じたプログラムに渡し、jQuery が $ 記号にマップされるようにして、$ 記号が他のライブラリによって上書きされるのを避けることをお勧めします。 。
(function ($) {
$.fn .my Plugin = function () {
//独自のプラグイン コード
};
})(jQuery); $ 記号を使用して jQuery 関数を表します。
2. 環境
ここで、実際のプラグイン コードの作成を開始できます。 ただし、その前に、プラグインが配置されている環境について理解しておく必要があります。 プラグインのスコープでは、this キーワードはプラグインが実行する jQuery オブジェクトを表します。これは、コールバックを含む他の jQuery 関数では、this キーワードがネイティブ DOM 要素を表すためです。 。これにより、開発者は、以下に示すように、jQuery で this キーワードを誤って不必要にラップすることがよくあります。
//これはすでに jQuery オブジェクトであるため、$(this) のように $ 記号で囲む必要はありません。 this) です。 $($('#element'));
this.fadeIn('normal', function () {
DOM 要素
});
};
})(jQuery);
$('#element').myPlugin();
jQuery プラグインの基本を理解したので、いくつかのことを行うプラグインを作成しましょう。
コードをコピー
var max = 0;
this.each(function () {
max = Math.max(max, $ (this).height());
});
.maxHeight(); // の高さを返します。高さが最大の div 要素
これは、 .height() を使用して、ページ上で最大の高さを持つ div 要素の高さを返す単純なプラグインです。
4. 連鎖性の維持
多くの場合、プラグインの目的は、収集された要素を何らかの方法で変更し、チェーン内の次のメソッドに渡すことだけです。 これが jQuery の設計の美しさであり、jQuery が人気がある理由の 1 つです。 したがって、プラグインのチェーン可能性を維持するには、プラグインが this キーワードを返すようにする必要があります。
コードをコピー
コードは次のとおりです:
(function ($) {
$.fn.lockDimensions = function (type) {
return this.each(function () {
var $this = $(this);
if (!type || type == 'width') {
$this.width($this.width());
}
if (!type || type == 'height') {
$this.height($this.height());
}
});
};
})(jQuery);
$('div').lockDimensions('width').CSS('color', 'red');
プラグインはこのキーワードを返すため、jQuery によって収集された要素を .css などの jQuery メソッドによって引き続き制御できるように連鎖性を維持します。 したがって、プラグインが組み込み値を返さない場合は、常にスコープ内で this キーワードを返す必要があります。 さらに、プラグインに渡されるパラメータはプラグインのスコープ内で渡されると推測することもできます。 したがって、前の例では、文字列「width」がプラグインの型パラメータになります。
5. デフォルト値とオプション
多くのカスタマイズ可能なオプションを提供するより複雑なプラグインの場合は、プラグインのインストール時に拡張できるものを用意するのが最善です。デフォルト設定 ($.extend を使用) が呼び出されます。 したがって、多数のパラメーターを使用してプラグインを呼び出す代わりに、オーバーライドする設定を含むオブジェクト パラメーターを使用してプラグインを呼び出すことができます。
(function ($) {
$.fn.tooltip = function (options) {
//いくつかのデフォルト値を作成し、提供されたオプションを拡張します
var settings = $.extend({
'location' : 'top'、
>
'場所': '左'
});
この例では、ツールチップ プラグインを呼び出すと、デフォルト設定の場所オプションが上書きされ、背景色のオプションはデフォルト値のままになるため、最終的に呼び出される設定値は次のようになります:
コードをコピー
コードは次のとおりです:
'location': 'left',
'background-color': ' blue'
プラグインに適切な名前を付けることは、プラグイン開発の非常に重要な部分です。 適切な名前空間を使用すると、プラグインが他のプラグインや同じページ上の他のコードによって上書きされる可能性が非常に低いことが保証されます。 また、名前空間を使用すると、メソッド、イベント、データをより適切に追跡できるため、プラグイン開発者としての作業が容易になります。
7. プラグイン方式
いかなる状況でも、単一のプラグインが jQuery.fnjQuery.fn オブジェクト内に複数の名前空間を持つべきではありません。
コードは次のとおりです。
(function ($) {
$.fn.tooltip = 関数 (オプション) {
$.fn は $.fn 名前空間を乱雑にするため、これはお勧めできません。 この問題を解決するには、オブジェクト テキスト内のすべてのプラグインのメソッドを収集し、メソッドの文字列名をプラグインに渡してそれらを呼び出す必要があります。
(function ($) {
varmessages = {
init: function (options) {
},
show: function () // is
},
Hide: Function () {
// 良い
}、
更新: 関数 (コンテンツ) {
// !!!
}
}; fn.tooltip = function (メソッド) ) {
// メソッド呼び出し (引数、1));
} else if (typeof method === 'object' || !method) {
returnmethod.init.apply(これ、引数) 🎜> >// init メソッドを呼び出します
$('div').tooltip();
// init メソッドを呼び出します
$('div')。 tooltip({
foo: ' bar'
});
//非表示メソッドを呼び出します
$('div').tooltip('hide');
//Update メソッドを呼び出します
$('div').tooltip('update', 'これは新しいツールヒントの内容です!');
このタイプのプラグイン アーキテクチャでは、すべてのメソッドを親パッケージにカプセル化し、メソッドの文字列名とこのメソッドに必要な追加パラメータを渡すことでメソッドを呼び出すことができます。 このタイプのカプセル化とアーキテクチャは jQuery プラグイン コミュニティの標準であり、jQuery UI のプラグインやウィジェットを含む無数のプラグインで使用されています。
8. イベント
bind メソッドのあまり知られていない機能により、イベントの名前空間をバインドできます。 プラグインがイベントをバインドする場合、このイベントに名前空間を付けることをお勧めします。 こうすることで、バインドを解除するときに、すでにバインドされている可能性のある同じタイプの他のイベントに干渉することがなくなります。これを行うには、「.
コードをコピー
(function ($) {
varmethods = {
init: function (options) {
return this.each(function () {
$(window).bind('resize.tooltip',methods.reposition);
});
},
destroy: function () {
これを返します。 each(function () {
$(window).unbind('.tooltip');
})
},
reposition: function () {
//。 ..
},
show: function () {
//...
},
hidden: function () {
//...
} ,
update: function (content) {
//...
}
};
$.fn.tooltip = function (メソッド) {
if (メソッド[メソッド]) {
return メソッド[メソッド].apply(this, Array.prototype.slice.call(arguments, 1));
} else if (メソッドの種類 === 'オブジェクト' || !method) {
returnmethod.init.apply(this, argument);
} else {
$.error('メソッド ' メソッド ' は jQuery.tooltip に存在しません');
}
};
})(jQuery);
$('#fun').tooltip();
//第一段階间之後... ...
$('#fun').tooltip('destroy');
この例では、ツールチップが init メソッドによって初期化されるときに、再配置メソッドがサイズ変更イベントに設定され、再配置メソッドでは追加.tooltip によって名前空間が与えられます。これにより、再配置のメソッドとサイズ変更イベントの設定を、再配置の指定名空間を介して、このアプリ以外の設定に影響を与えずに安全にキャンセルできます。 >
九、データ
通常、ファイルの公開時には、転送されるファイルがエレメントに基づいて初期化されているかどうかを確認または検査する必要がある場合があります。大量の異なる名前の分離データを確認するには、単一のオブジェクトを使用してすべての量を保持し、個別の命名空間を通じてこのオブジェクトを失わずに取得するのがより良い方法です。复制代码
(function ($) {
varmethods = {
init: function (options) {
return this.each(function () {
var $this = $(this),
data = $this.data('tooltip'),
ツールヒント = $('', {
テキスト: $ this.attr('title')
});
// プラグインがまだ初期化されていない場合
if (!data) {
/*
ここでその他のセットアップ作業を行います
*/
$(this).data('tooltip', {
ターゲット: $this,
ツールヒント: ツールヒント
});
}
});
},
destroy: function () {
return this.each(function ()
var $this = $(this)、
data = $ this.data( 'tooltip');
// namespacing ftw
$(window).unbind( '。tooltip');
data.tooltip.remove();
$this.removeData('tooltip');
})
},
reposition: function () {
/ / ...
},
show: function () {
// ...
},
Hide: function () {
// ...
},
update: function (content) {
// ...
}
};
$.fn.tooltip = function (メソッド) {
if (メソッド[メソッド]) {
return メソッド[メソッド].apply(this, Array.prototype.slice.call(arguments, 1));
} else if (メソッドの種類 === 'オブジェクト' || !method) {
returnmethod.init.apply(this, argument);
}else {
$.error('メソッド ' メソッド ' は jQuery.tooltip に存在しません') >
名前空間を通じてオブジェクト内のデータをカプセル化すると、一元化された場所からすべてのプラグイン プロパティを簡単に読み取ることができます。
10. 概要とベストプラクティス
jQuery プラグインを作成すると、最も便利な機能を再利用可能なコードに統合するライブラリを作成できるため、開発者の時間を節約し、開発をより効率的にすることができます。 jQuery プラグインを開発するときは、次の点に注意してください:
1. 常に閉じたプラグインでラップされます:
5. プラグイン内で異なるメソッドに複数の名前を付けないでください。
3. 常にメソッド、イベント、データに名前空間を付けます。

Web開発におけるJavaScriptの主な用途には、クライアントの相互作用、フォーム検証、非同期通信が含まれます。 1)DOM操作による動的なコンテンツの更新とユーザーインタラクション。 2)ユーザーエクスペリエンスを改善するためにデータを提出する前に、クライアントの検証が実行されます。 3)サーバーとのリフレッシュレス通信は、AJAXテクノロジーを通じて達成されます。

JavaScriptエンジンが内部的にどのように機能するかを理解することは、開発者にとってより効率的なコードの作成とパフォーマンスのボトルネックと最適化戦略の理解に役立つためです。 1)エンジンのワークフローには、3つの段階が含まれます。解析、コンパイル、実行。 2)実行プロセス中、エンジンはインラインキャッシュや非表示クラスなどの動的最適化を実行します。 3)ベストプラクティスには、グローバル変数の避け、ループの最適化、constとletsの使用、閉鎖の過度の使用の回避が含まれます。

Pythonは、スムーズな学習曲線と簡潔な構文を備えた初心者により適しています。 JavaScriptは、急な学習曲線と柔軟な構文を備えたフロントエンド開発に適しています。 1。Python構文は直感的で、データサイエンスやバックエンド開発に適しています。 2。JavaScriptは柔軟で、フロントエンドおよびサーバー側のプログラミングで広く使用されています。

PythonとJavaScriptには、コミュニティ、ライブラリ、リソースの観点から、独自の利点と短所があります。 1)Pythonコミュニティはフレンドリーで初心者に適していますが、フロントエンドの開発リソースはJavaScriptほど豊富ではありません。 2)Pythonはデータサイエンスおよび機械学習ライブラリで強力ですが、JavaScriptはフロントエンド開発ライブラリとフレームワークで優れています。 3)どちらも豊富な学習リソースを持っていますが、Pythonは公式文書から始めるのに適していますが、JavaScriptはMDNWebDocsにより優れています。選択は、プロジェクトのニーズと個人的な関心に基づいている必要があります。

C/CからJavaScriptへのシフトには、動的なタイピング、ゴミ収集、非同期プログラミングへの適応が必要です。 1)C/Cは、手動メモリ管理を必要とする静的に型付けられた言語であり、JavaScriptは動的に型付けされ、ごみ収集が自動的に処理されます。 2)C/Cはマシンコードにコンパイルする必要がありますが、JavaScriptは解釈言語です。 3)JavaScriptは、閉鎖、プロトタイプチェーン、約束などの概念を導入します。これにより、柔軟性と非同期プログラミング機能が向上します。

さまざまなJavaScriptエンジンは、各エンジンの実装原則と最適化戦略が異なるため、JavaScriptコードを解析および実行するときに異なる効果をもたらします。 1。語彙分析:ソースコードを語彙ユニットに変換します。 2。文法分析:抽象的な構文ツリーを生成します。 3。最適化とコンパイル:JITコンパイラを介してマシンコードを生成します。 4。実行:マシンコードを実行します。 V8エンジンはインスタントコンピレーションと非表示クラスを通じて最適化され、Spidermonkeyはタイプ推論システムを使用して、同じコードで異なるパフォーマンスパフォーマンスをもたらします。

現実世界におけるJavaScriptのアプリケーションには、サーバー側のプログラミング、モバイルアプリケーション開発、モノのインターネット制御が含まれます。 2。モバイルアプリケーションの開発は、ReactNativeを通じて実行され、クロスプラットフォームの展開をサポートします。 3.ハードウェアの相互作用に適したJohnny-Fiveライブラリを介したIoTデバイス制御に使用されます。

私はあなたの日常的な技術ツールを使用して機能的なマルチテナントSaaSアプリケーション(EDTECHアプリ)を作成しましたが、あなたは同じことをすることができます。 まず、マルチテナントSaaSアプリケーションとは何ですか? マルチテナントSaaSアプリケーションを使用すると、Singの複数の顧客にサービスを提供できます


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

PhpStorm Mac バージョン
最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

SAP NetWeaver Server Adapter for Eclipse
Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

SublimeText3 英語版
推奨: Win バージョン、コードプロンプトをサポート!

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

Dreamweaver Mac版
ビジュアル Web 開発ツール
