ChosenとSelect2の違いは何ですか?


157

選ばれたSelectセレクトは selectboxesを拡張するための2つの人気のライブラリです。

どちらも積極的にメンテナンスされているようで、Chosenは古く、jQueryとPrototypeの両方をサポートしています。

Select2はjQueryのみであり、そのドキュメントにはSelect2がChosenに触発されていると記載されていますが、行われた改善(ある場合)やその他の書き換えの理由については詳しく説明されていません。

2つのライブラリの機能セットはほとんど同じですが、私が見つけた唯一の比較は、やや決定的でないjsperfテストページです。

これらのライブラリのいずれかは、他のライブラリよりも優れていますか?


11
プルリクエストの経験は、おそらくSelect2がフォークではなくリライトとして始まった理由の良いヒントになるでしょう。また、Select2の方がドキュメントが優れている(または少なくとも長い)ことに気付きました。
ポール、

1
重要な場合、または違いのために、ChosenはMITで、Select2はApacheライセンスです。
EGL 2-101 2013

2
正確には、Select2はApacheライセンスまたはGPL v2の下で利用できます。is licensed under the Apache License, Version 2.0 (the "Apache License") or the GNU General Public License version 2
ポール

回答:


92

Select2 3.3.1以降、README.mdに記載されている内容は次のとおりです

選択されなかったSelect2サポートの機能

  • 大規模なデータセットの操作:選択すると、データセット全体をoptionDOMにタグとしてロードする必要があるため、小さめのデータセットの操作に限定されます。Select2は、関数を使用してオンザフライで結果を検索するため、結果を部分的に読み込むことができます。
  • 結果のページング:Select2は大規模なデータセットで機能し、一度に少量の一致する結果のみをロードするため、ページングをサポートする必要があります。Select2は、ユーザーが現在ロードされている結果セットの一番下までスクロールすると検索機能を呼び出し、結果の「無限スクロール」を可能にします。
  • 結果のカスタムマークアップ:optionタグでサポートされている唯一のマークアップであるため、テキストの結果のレンダリングのみがサポートされます。Select2は、結果を表すためのあらゆる種類のマークアップを生成するために使用できる拡張ポイントを提供します。
  • その場で結果を追加する機能:Select2は、ユーザーが入力した検索語から結果を追加する機能を提供し、タグ付けに使用できるようにします。

2
選択した人の「結果をその場で追加」機能に取り組んfwiwgithub.com/shezarkhani/chosen/tree/create_new_options ExpressionEngineアドオンMXセレクトプラスで何らかの調整を使用しています(それはSelect2を使用して競合するアドオンがあるため、ここに来ました。
notacouch 2013年

ただし、オプションはAJAXを介して入力されるため、JavaScriptが無効になっている場合、Select2にはフォールバックがないことに注意してください。
デスロック2013

10
AJAX経由でデータをプルするものは、Javascriptなしでは機能しません。Select2は事前入力された値で正常に機能し、AJAXを使用する必要はありません。
zachzurn 2013

@notacouch「マトリックスサポート」、「低変数サポート」、「SafeCrackerサポート」とは何ですか?これらの概念は、ExpressionEngineに固有のものですか?
John Zabroski、2016年

@JohnZabroskiはい、それらは商用のEE 2.xアドオンです(iirc SafeCrackerが組み込まれている可能性があります)。
notacouch 2016年

40

IMHO Chosenは「維持」されていますが、「アクティブに維持」されていません。Chosenの341の問題と51のプルリクエスト。Select2には128の問題と25のプルリクエストがあります。これらのパターンは基本的には

  • 表面的にあなたにとってより魅力的なものを選ぶ
  • 1つまたは2つのアプリで使用する
  • カスタマイズの問題または制限に対抗する
  • 問題やプルリクエストを介してコミュニティと協力してみてください
  • 最終的にうんざりして、このプロセスで学んだことを使用して、自分でビルドしてください

どちらを選択しても、ユースケースがまさにそのスイートスポットにあれば、どちらでも機能します。そうでない場合は、最終的に独自に作成するか、これらを大幅にカスタマイズする必要があります。どちらの場合も、どちらを選択するかはそれほど重要ではありません。ここでは@Andy Rayと@paulの側にいると思いますが、Select2の方がおそらく最初の選択肢として適しています。


4
私の見解では、より多くの問題がより多くの人々の世話と使用を意味します。そして、より大きなコミュニティはより良いコードを生成する傾向があります(これは、選ばれた人に適用する必要はありません)。AngularJS:397の問題、49のプル要求。joyent / node:476件、98件のプルリクエスト。Firefox、Linuxカーネル、またはgccの数値はどうなるのでしょうか。
ポール

ええ、それは単なる発見的方法です。理論的には、自動選択ウィジェットは、joyent / nodeのようなものよりも数桁低い複雑さである必要があります。これらは非常にカスタム化されたものであることが判明したため、人々はプルリクエストを提出しているが、無視され、別のフォークまたはリライトを維持しているように感じます。YMMV。
Peter Lyons、

計画がカスタマイズアプローチを採用する場合の注意点:Chosenのコード量はかなり少なく(約1/3)、CoffeeScriptとSASSで記述されています(JS / CSSにコンパイルされる前)。CoffeeScriptに既に慣れている場合、選択は簡単です。選択したものを理解し、カスタマイズするのが簡単になります。
Tim Dorr 2013年

@Peter Lyonsこれらは、あなたの結論を引き出すために使用されるいくつかのかなり奇妙なメトリックです(私があなたの結論に同意しないというわけではありません)。貢献者の数を見てみましょう(Select2 = 239 v。Chosen = 73)。これも誤解を招く可能性があり、多いほど良いとは限りません。各GitHubプロジェクトのパルスとグラフは、コミット履歴と頻度、および他の大量の有用な統計情報を表示して、どのプロジェクトが「維持」されているのか、「開発中」であるのかについて情報に基づいた決定を下します。
cfx 2014年

FWIW、Chosenはこの数年で多くの更新を行いました。
Charles Wood

21

言及する価値のあるもう1つの違いChosenは、Sassand で開発されているのCoffeeScriptに対し、and Select2はプレーンCSSであるということJSです。これは私の個人的な選択肢であるSassCoffeeScript難しいデバッグ作る複雑さの不要な層です。

両方を試した後、どちらも使用しないことにしました- 要素Select2に接続されているときは単純にそれを行うことができないため、アイテム作成機能を取得しようとすると非常に<select>厄介なことがわかります-私が持っているフープをよく考えていなかったジャンプする。

selectize.jsを使用<option>...</option>して、フォームのDOMに新しい要素を追加するだけで解決しました-それは正気です。それも使用しますLESSが、私はそれをバイパスして、コンパイルCSSされたプロジェクトを直接調整します。


2
selectize.js使用量が少ない。それは現在よりも技術的な行き止まりが少ないSassですか?
Chris Wesseling 2013

いいえ、同じドメインにありますが、3つのselectize.jsのうち、プロジェクトに合わせるための調整は最小限で済みました。
Daniel Sokolowski、2013

selectizeはFirefox 28で視覚的な問題があります。–
MEM

@MEMはもっと具体的になりますか?
Daniel Sokolowski、2014

Firefox 28(Mac OS X)では、各入力フィールドの下に余分な灰色の「マージンまたはパディングまたはボーダー」が表示されます。それは私が推測する効果ではありません。視覚的に矛盾している必要があります。FFでそれらを見ると明らかであり、たとえばChromeでは同じグリッチは発生しません。
MEM 2014

18

chosen.jsとselect2.js

  • 両方のMITライセンス
  • 依存関係:
    • Select2:jQuery
    • 選択:tbc
  • デスクトップブラウザーのサポート:
    • Select2:IE8 +
    • 選択:IE8 +
  • デバイスのサポート:
    • 選択2:不明確
    • 選択済み:iPhone、iPod Touch、およびAndroidモバイルデバイスでは無効
  • 重量(縮小):
    • Select2:57KB
    • 選択:27KB
  • 使用法:Select2は、より「ファンシー」なUIをサポートしています(「テンプレート」を参照)
  • どちらのコードリポジトリもGithubで利用できます
    • Select2:貢献:非常に活発
    • 選択:貢献:Select2の約3分の1

select2.jsの貢献 chosen.jsの貢献

ps。不足しているポイントの詳細が判明したら、この回答を更新してみます


Select2 、他のデバイスと同じ方法でモバイルデバイスサポートする必要があります。私たちは、すべてのデバイスで、意図されたすべての機能が正しく動作することを確認します。
Kevin Brown、

1
select2がよりアクティブになる主な理由は、彼らがselect2 4.xに取り組んでいるからだと思います。これは大幅な書き直しです。正直なところ、人々が寄稿をそれほど重視している理由がわかりません。GitHubに、コードカバレッジやテストケースなどの重要な事項、および問題の平均応答時間を追跡する累積フロー図があったらいいのにと思います!(私はselect2、btwを使用しています。私のポイントは、貢献とソーシャルエンジニアリングに焦点を当てている人々についての一般的な
おしゃべり

13

まず、ChosenとSelect2は2つの優れたプラグインであり、これはChosenに関する私の個人的な体験です。彼らが言っていることはすべてChosenに関して真実です。

問題とPēterisCauneによって指さはselect2歳で、まだ公式の修正はありません。APIの優れたドキュメントはありません。それは何度も指摘されました(問題671を参照)が、まだ何もありません。この問題を解決するのに約2年かかりました。overflow:hidden表示する前にdivを非表示にした場合、選択したものは基本的に機能しません(そしてwitdh:X%、問題を探さないと基本的にわからないオプションを使用する必要があります)。

主な問題は、問題92でDelvarWorldが言ったように修正速度だと思います。

私のプルリクエストはこの問題を修正しますが、他のプルリクエストと同様に、選択されたものの多くは無視されます。このプロジェクトには、コードベースが小さすぎるコントリビューターが多すぎます。

私は最初にMITライセンスでChosenを選択しましたが、これらすべての問題(ドロップダウンカット、APIが見つからない、オーバーフローが非表示になっていないかを探す)があったため、select2に切り替えることにしました。そしてより速い修正。


Select2もMITでライセンスされていることに注意してください。 github.com/select2/select2/blob/master/LICENSE.md
ʙᴀᴋᴇʀᴍᴀᴛᴛ

この答えは本当に古く、もう当てはまらないかもしれません。時間のあるときに編集します。
zipp


6

これらの2つのプラグインで動作することがわかったいくつかの違い:

  • select2を使用すると、オプションの任意の場所で検索できます。たとえば、ABCDEFGというオプションがあり、CDEと入力した場合、そのオプションは検索結果に表示されますが、選択した場合はABと入力する必要があります。

  • より大きなデータセットでは、特にIEで、select2がselect2よりも高速であるように見えます。


2
はい選択された単語は検索されているようです。つまり、サンプルページに入力Kingdomすると戻ります。United Kingdomこれは非常に論理的な方法であり、さらに指定することもできます$("#element").chosen({ search_contains: true });
Daniel Sokolowski、2013

2
私はあなたに同意します、そして、しばしばそれは事実です。あなたは言葉を探しているでしょう。しかし、 'xyz(abc)'のように括弧で囲まれている多くの場合、 'abc'と入力すると、返されない 'xyz'も検索されます。たぶん、それはあなたがそれを使用しているシナリオに要約されます。私のWebアプリでは、関連性のある場所でこれらの両方を使用しました。IEでのレンダリング速度が優れているため、もう少し選択するのが好きです。
reggaemahn 2013

5

Select2はモバイルをサポートしていますが、Chosenは特に iPod、iPhone、モバイルAndroidでそれ自体無効にします。モバイルで「拡張」選択ボックスを使用する場合、これにより選択が簡単になります。


@RezaRahmati thxそのため。たまたまiPhoneを試してみましたか?Harvesthq.github.io/chosen/#faqsには、「iPhone、iPod Touch、およびAndroidモバイルデバイスでは選択が無効になっている」と記載されています。もっと上github.com/harvesthq/chosen/pull/1388
エイドリアンて

@adrienbeはい、サムスンのギャラクシータブとiPadでテストしました
Reza

@RezaRahmati結果はどうでしたか?
Adrien Be

それは私がそれを使用している、働く@AdrienBe medicfa.com/Users/Create?reloadList=falseタブレットでそれを開いて、結果をチェック
レザ

5

Select2での私の経験はデスクトップでは素晴らしいものでしたが、タッチモバイルデバイスでは非常に多様であり、いくつかの癖が常に存在していました。たとえば、xperia st15iでicsとストックブラウザーのドロップダウンは、キーボードを盗むフォーカスのために常に閉じていました。それを再び開く唯一の方法は、メニューを数十回タッチして、指を1秒ほど押したままにすることです。または、ドロップダウンリストが閉じているときに入力を開始し、何人のユーザーがこれを理解するのですか?

Selectize.jsはSelect2よりもはるかにスムーズに見えますが、たとえば、値が選択または入力されると、なんらかの理由でページが左端に移動するなど、モバイル上でも問題があります。また、オーバーフローをサポートしていない古いAndroid 2.xデバイスでは、キーボードがポップアップしないため、いくつかのトップオプションを超えて選択することはできません。:(

それでもChosenをテストする必要があり、モバイルデバイスで無効にすることはそれほど悪い考えではないかもしれませんが、結局のところ、古き良きドロップダウンはいつでもどこでも機能します。

更新:Chosenもテストしましたが、1つの領域ではより優れています。デフォルトではモバイルでは機能しません(素晴らしい!)が、単語のフィルタリングの問題があります。たとえば、は単語の途中で検索しません。また、アラインメントに&nbspハックを使用すると、完全なオプションも無視されます。製図板に戻る。


Chosenで検索を適切に有効にするsearch_contains: trueには、オプションに追加します。Harvesthq.github.io/chosen/options.htmlを
Sicco

1

Chosenよりselect2を選んだ理由

select2が持つ主要な機能は、他のコントロールが自動的に魔法のように持っていないことですが、コントロールの右側に「x」がある「すべてクリア」の選択です。これは私のアプリケーションのキラー機能です。他の選択タグ拡張ライブラリにこの機能がない理由はわかりません。


0

Select2はAJAX Chosenをサポートしていません

Select 2は、選択したものに比べてサイズが少し重いです。

ajax操作の公式サポートがないため、Select2に切り替えました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.