ホームページ ウェブフロントエンド jsチュートリアル JavaScriptプラグイン開発チュートリアル(1)_JavaScriptスキル

JavaScriptプラグイン開発チュートリアル(1)_JavaScriptスキル

May 16, 2016 pm 04:17 PM
javascript 開発する

1、分析を開始します

皆さん、こんにちは!今日の連載は主に「JavaScript」をベースにしたプラグイン開発についてお話します

「プラグイン」という言葉をご存知の方も多いと思います。

それを「コンポーネント」または「コンポーネント」と呼ぶ人もいるかもしれませんが、重要なのは、どのように設計するか、そしてどのように総合的に検討するかです。皆さんが正しいと思います

「jQuery プラグインのメソッド」についてはある程度理解しました。このトピックについて一緒に議論し、最終的には継続的に能力を向上させるための関連する実装計画を提示しましょう。

2 番目に、プラグインのメイントピックに入ります

一般的に、jQuery プラグインの開発は 2 つのタイプに分けられます。1 つは、jQuery 名前空間にぶら下がっているグローバル関数で、静的メソッドとも呼ばれます。

もう 1 つは、jQuery オブジェクト レベルのメソッドです。つまり、jQuery プロトタイプの下にハングするメソッドです。そのため、セレクターを通じて取得された jQuery オブジェクト インスタンスもこのメソッドを共有できます。

(1)、クラスレベルのプラグイン開発

クラスレベルのプラグイン開発を最も直接的に理解するには、クラス メソッドを「jQuery」クラスに追加することです。これは、静的メソッドを追加するものとして理解できます。典型的な例は、jQuery 名前空間で関数を定義する「$.ajax()」関数です。クラスレベルでのプラグイン開発は、次の形式で拡張できます:

1.1 グローバル関数を追加します。次のように定義するだけです。コードを見てください:

コードをコピーします コードは次のとおりです:

$.hello = function(){
alert("こんにちは、ビッグベア!") ;
} ;

1.2 複数のグローバル関数を追加します。これらは次のように定義できます:

コードをコピーします コードは次のとおりです:

$.extend({
こんにちは: 関数(名前){
// ここにコードを入力してください
} 、
ワールド : function(){
// ここにコードを入力してください
}
}) ;

説明: "$.extend(target, [object1], [objectN])" (このメソッドは主に、2 つ以上のオブジェクトの内容 (プロパティ) を最初のオブジェクトにマージし、マージされた最初のオブジェクトを返すために使用されます。 。

メソッドにパラメーター ターゲットが 1 つだけある場合、このパラメーターは jQuery 名前空間を拡張します。つまり、静的メソッドとして jQuery グローバル オブジェクトの下にハングされます)。

(2)、オブジェクトレベルのプラグイン開発

オブジェクトレベルのプラグイン開発には、次の 2 つの形式が必要です:

2.1 "$.fn.extend()" を使用して、関連する属性をプロトタイプとして動的にマウントします。

コードをコピーします コードは次のとおりです:
(関数($){
$.fn.extend({
プラグイン名 : function(opts){
// ここにコードを入力してください
                                                                            });
})(jQuery) ;


2.2 プロトタイプチェーンに動的プロパティを直接追加します。

コードをコピーします コードは次のとおりです: (関数($) {
$.fn.pluginName = function(){
// ここにコードを入力してください
} ;
})(jQuery) ;

説明: この 2 つは同等です。jQuery プラグインの場合、基本的な関数は適切に機能しますが、より複雑なプラグインの場合は、さまざまなメソッドとプライベート関数を提供する必要があります。

プラグインにさまざまなメソッドを提供するために異なる名前空間を使用できますが、追加する名前空間が多すぎるとコードが混乱し、堅牢性が低下します。したがって、最善の解決策は、プライベート関数とメソッドを適切に定義することです。

そこで、上記の例と同様に、自己実行関数とクロージャを組み合わせて、シミュレートされたプライベート プラグイン ユニットを実装します。

(3)、実装プロセスを確認するための簡単な例を次に示します:

(1)、次のような「html」フラグメント コード:

コードをコピーします コードは次のとおりです:



style="margin-top:10px;
margin-bottom:30px;"
>8


(2)、「data.json」は次のように定義されます。

コードをコピーします コードは次のとおりです:
{
"text" : "こんにちは、ビッグベア {{bb}} ;
}

(3)、「bb.js」のコードは次のとおりです:

コードをコピーします コードは次のとおりです:
$(関数(){
$("#bb").bigbear() ;
}) ;
(関数($){
$.fn.bigbear = function(opts){
opts = $.extend({},$.fn.bigbear.defaults,opts) ;
return this.each(function(){
var elem = $(this) ;
elem.find("span").text(opts["title"]) ;
$.get(opts["url"],function(data){
elem.find("div").text(data["text"]) ;
}) ;
}) ;
} ;
$.fn.bigbear.defaults = {
タイトル: 「これは簡単なテストです」
URL:「data.json」
} ;
})(jQuery) ;

操作効果:

を要約すると:

(1) 「$.fn.bigbear.defaults」は、プラグインのデフォルトのパラメータ オプションを提供します。拡張性の高いプラグインでは、ユーザーが必要に応じてパラメータ オプションをカスタマイズし、プラグインの動作を制御できる必要があります。 -in なので、デフォルトに復元する機能が提供されます。オプションが必要です。これらのオプションは、jQuery の extend メソッドを通じて設定できます。

(2)、「return this.each(){...}」は、Sizzle セレクター エンジンを使用して複数の要素を走査し、jQuery を返します。Sizzle は関数に複数要素の操作を提供できます (たとえば、すべてのクラス名には同じ要素です)。これは jQuery の数少ない優れた機能の 1 つであり、プラグインに複数要素のサポートを提供しない場合でも、そのための準備としては良い方法です。また、jQuery にはチェーン呼び出しとも呼ばれるメソッドのカスケードを実行できるという非常に優れた機能があるため、この機能を壊さず、メソッド内で常に要素を返す必要があります。

(4)、最終まとめ

(1)、jQuery はプラグインを開発するための 2 つのメソッドを提供します。 jQuery.fn.extend(object); jQuery オブジェクトにメソッドを追加します。
jQuery.extend(object); jQuery クラス自体を拡張するには、クラスに新しいメソッドを追加します。

(2)、すべてのコードをクロージャ(即時実行関数)に入れる。このときクロージャはプライベートスコープに相当し、外部から内部の情報にアクセスすることはできず、汚染されることはない。グローバル変数の。作成および開発仕様の公式の説明は次のとおりです: a) グローバルな依存関係を回避する; b) サードパーティの損傷を回避する; c) jQuery 演算子 '$' および 'jQuery ' と互換性がある。

(3) プラグインにデフォルトのパラメータ オプションを提供する 拡張性の高いプラグインでは、ユーザーが必要に応じてパラメータ オプションをカスタマイズし、プラグインの動作を制御できるようにする必要があります。デフォルトの復元オプション。これらのオプションは、jQuery の extend メソッド

を通じて設定できます。

(4)、複数の要素を走査し、jQuery を返して Sizzle セレクター エンジンを使用すると、関数に複数要素の操作 (たとえば、同じクラス名を持つすべての要素) を提供できます。これは jQuery の数少ない優れた機能の 1 つであり、プラグインに複数要素のサポートを提供しない場合でも、プラグインの開発中にそのための準備をしておくことをお勧めします。また、jQuery にはチェーン呼び出しとも呼ばれるメソッドのカスケードを実行できるという非常に優れた機能があるため、この機能を壊さず、メソッド内で常に要素を返す必要があります。

(5). ワンタイム コードをメイン ループの外側に配置することは重要ですが、無視されることがよくあります。簡単に言えば、一連のデフォルト値であり、プラグイン関数が呼び出されるたびではなく、一度だけインスタンス化する必要があるコードがある場合は、このコードをプラグイン メソッドの外側に置く必要があります。 。

(6) 全員が勉強した後、プロジェクトのテクノロジの選択が変更され、これらのプラグインが「jQuery」メカニズムに強く依存する場合、以前に作成したプラグインは使用できなくなります。使用されている場合 (jQuery が使用されていないと仮定して)、それをリファクタリングするにはどうすればよいでしょうか?

明日の記事ではこの問題について説明し、プラグインの主要なロジックを再構築しますので、ご期待ください。 。 。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

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

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

おすすめのAI支援プログラミングツール4選 おすすめのAI支援プログラミングツール4選 Apr 22, 2024 pm 05:34 PM

この AI 支援プログラミング ツールは、急速な AI 開発のこの段階において、多数の有用な AI 支援プログラミング ツールを発掘しました。 AI 支援プログラミング ツールは、開発効率を向上させ、コードの品質を向上させ、バグ率を減らすことができます。これらは、現代のソフトウェア開発プロセスにおける重要なアシスタントです。今日は Dayao が 4 つの AI 支援プログラミング ツールを紹介します (すべて C# 言語をサポートしています)。皆さんのお役に立てれば幸いです。 https://github.com/YSGStudyHards/DotNetGuide1.GitHubCopilotGitHubCopilot は、より少ない労力でより迅速にコードを作成できるようにする AI コーディング アシスタントであり、問​​題解決とコラボレーションにより集中できるようになります。ギット

Go 言語を使用してモバイル アプリケーションを開発する方法を学ぶ Go 言語を使用してモバイル アプリケーションを開発する方法を学ぶ Mar 28, 2024 pm 10:00 PM

Go 言語開発モバイル アプリケーション チュートリアル モバイル アプリケーション市場が活況を続ける中、ますます多くの開発者が Go 言語を使用してモバイル アプリケーションを開発する方法を検討し始めています。シンプルで効率的なプログラミング言語として、Go 言語はモバイル アプリケーション開発でも大きな可能性を示しています。この記事では、Go 言語を使用してモバイル アプリケーションを開発する方法を詳しく紹介し、読者がすぐに始めて独自のモバイル アプリケーションの開発を開始できるように、具体的なコード例を添付します。 1. 準備 始める前に、開発環境とツールを準備する必要があります。頭

どのAIプログラマーが一番優れているでしょうか? Devin、Tongyi Lingma、SWE エージェントの可能性を探る どのAIプログラマーが一番優れているでしょうか? Devin、Tongyi Lingma、SWE エージェントの可能性を探る Apr 07, 2024 am 09:10 AM

世界初の AI プログラマー Devin の誕生から 1 か月も経たない 2022 年 3 月 3 日、プリンストン大学の NLP チームはオープンソース AI プログラマー SWE-agent を開発しました。 GPT-4 モデルを利用して、GitHub リポジトリの問題を自動的に解決します。 SWE ベンチ テスト セットにおける SWE エージェントのパフォーマンスは Devin と同様で、平均 93 秒かかり、問題の 12.29% を解決しました。専用端末と対話することで、SWE エージェントはファイルの内容を開いて検索したり、自動構文チェックを使用したり、特定の行を編集したり、テストを作成して実行したりできます。 (注: 上記の内容は元の内容を若干調整したものですが、原文の重要な情報は保持されており、指定された文字数制限を超えていません。) SWE-A

最も人気のある 5 つの Go 言語ライブラリの概要: 開発に不可欠なツール 最も人気のある 5 つの Go 言語ライブラリの概要: 開発に不可欠なツール Feb 22, 2024 pm 02:33 PM

最も人気のある 5 つの Go 言語ライブラリの概要: 特定のコード例が必要な、開発に不可欠なツール Go 言語は、その誕生以来、広く注目され、応用されてきました。新しい効率的で簡潔なプログラミング言語としての Go の急速な開発は、豊富なオープンソース ライブラリのサポートと切り離すことができません。この記事では、Go 言語ライブラリの中で最も人気のある 5 つを紹介します. これらのライブラリは Go 開発において重要な役割を果たし、開発者に強力な機能と便利な開発エクスペリエンスを提供します。同時に、これらのライブラリの用途と機能をよりよく理解するために、具体的なコード例を示して説明します。

PHP は Web 開発におけるフロントエンドですか、それともバックエンドですか? PHP は Web 開発におけるフロントエンドですか、それともバックエンドですか? Mar 24, 2024 pm 02:18 PM

PHP は Web 開発のバックエンドに属します。 PHP はサーバー側のスクリプト言語であり、主にサーバー側のロジックを処理し、動的な Web コンテンツを生成するために使用されます。フロントエンド テクノロジーと比較して、PHP はデータベースとの対話、ユーザー リクエストの処理、ページ コンテンツの生成などのバックエンド操作に多く使用されます。次に、特定のコード例を使用して、バックエンド開発における PHP のアプリケーションを説明します。まず、データベースに接続してデータをクエリするための簡単な PHP コード例を見てみましょう。

VSCode について: このツールは何に使用されますか? VSCode について: このツールは何に使用されますか? Mar 25, 2024 pm 03:06 PM

「VSCode について: このツールは何に使用されますか?」 》初心者でも経験豊富な開発者でも、プログラマーとしてはコード編集ツールを使わずにはいられません。数ある編集ツールの中でも、Visual Studio Code (略して VSCode) は、オープンソースで軽量かつ強力なコード エディターとして開発者の間で非常に人気があります。では、VSCode は正確に何に使用されるのでしょうか?この記事では、VSCode の機能と使用法を詳しく説明し、読者に役立つ具体的なコード例を提供します。

Go 言語のフロントエンド テクノロジーの探求: フロントエンド開発の新しいビジョン Go 言語のフロントエンド テクノロジーの探求: フロントエンド開発の新しいビジョン Mar 28, 2024 pm 01:06 PM

Go 言語は、高速で効率的なプログラミング言語として、バックエンド開発の分野で広く普及しています。ただし、Go 言語をフロントエンド開発と結びつける人はほとんどいません。実際、フロントエンド開発に Go 言語を使用すると、効率が向上するだけでなく、開発者に新たな視野をもたらすことができます。この記事では、フロントエンド開発に Go 言語を使用する可能性を探り、読者がこの分野をよりよく理解できるように具体的なコード例を示します。従来のフロントエンド開発では、ユーザー インターフェイスの構築に JavaScript、HTML、CSS がよく使用されます。

Android 開発に最適な Linux ディストリビューションはどれですか? Android 開発に最適な Linux ディストリビューションはどれですか? Mar 14, 2024 pm 12:30 PM

Android 開発は多忙で刺激的な仕事であり、開発に適した Linux ディストリビューションを選択することが特に重要です。数多くある Linux ディストリビューションの中で、Android 開発に最適なのはどれでしょうか?この記事では、この問題をいくつかの側面から検討し、具体的なコード例を示します。まず、現在人気のある Linux ディストリビューション (Ubuntu、Fedora、Debian、CentOS など) をいくつか見てみましょう。これらにはそれぞれ独自の利点と特徴があります。

See all articles