2012-02-22 16 views
0

jquery-ui-picklistというjQueryウィジェットを開発して管理しています。私はjQuery UIの依存関係を削除して、jQueryとjQuery UIの両方のアプリケーションで使用できるようにしたいと思っています。私は考え出したときに、昨日、私は単にこのような何かを行うことができるまでjQuery UIを使用せずにjQuery UIウィジェットファクトリを使用するより良い方法はありますか?

私は、移行を回避しました:

(function($) 
{ 
    if($.widget == null) 
    { 
     // Contents of jquery.ui.widget.js, straight from jQuery UI, goes here. 
    } 

    $.widget("awnry.pickList", 
    { 
     // My widget's actual code goes here. 
    }); 
}(jQuery)); 

(あなたが興味を持っている場合は、ウィジェットの完全なソースcan be found here。)

言うまでもなく、このようなベンダーのコードを逐語的に含めることは、汚い、ハッキーであると感じます。ユーザーが別のJSインクルードを自分のページに追加しなくても、jQuery UI依存関係を削除するより正確でエレガントな、より良い方法がありますか?

+0

jQuery UIに依存しているような音がします。 – jrummell

+0

私は '$ .fn'を実行し、依存関係を完全に削除します。ウィジェットの工場は本当にあなたのためにはあまり効果がありません。プラグインが実行する共通の問題、インスタンスの再接続、データストレージなどを解決するための簡単な方法です。 ... -ck – ckozl

+0

依存関係を追加する理由はありません。 jQueryのUIから使用しているのは、ウィジェットのファクトリです。これは、別のファイルとして利用できます。私は2つの選択肢を提供することを検討しています:jQuery UIを使用するか、ウィジェットファクトリファイルを含める。 私は実際にこのプラグインを$ .fnで起動しました。私は数か月後に移植しました。確かに、ウィジェットの工場はプラグインを作る必要はありませんが、私は自分自身が戻ってくるのを見ません。 –

答えて

0

私のオプションを考えた後、if()ステートメントとウィジェットファクトリコードを私のウィジェットから削除しました。

私のウィジェットのユーザーには2つの選択肢があります。そのページにjQueryのUIが含まれている場合は、余分なことをする必要はありません。そのページに通常のjQueryだけが含まれている場合は、jquery.ui.widget.js(便宜上私のウィジェットとともにパッケージ化されています)も含める必要があります。

意思決定をするための私の理由:

  • ウィジェットコードは、ベンダーコードをアップ雑然とされていません。

  • ウィジェットは、特定のウィジェットファクトリの実装またはバージョンから切り離されています。言い換えれば、$.WidgetはjQuery UIまたはjquery.ui.widget.jsから来ることができます。ウィジェットは気にしない。

  • ウィジェットは引き続き通常のjQueryで動作しますが、まだウィジェットファクトリを使用するとメリットがあります。

  • ウィジェットファクトリをアップグレードするだけで、新しいファイルを削除することができます。

関連する問題