JavaScript MVC(マイクロ)フレームワークはありますか?[閉まっている]


133

クライアント側のJavaScript MVC(マイクロ)フレームワークはありますか?

私はかなり複雑なHTMLフォームを使用しており、MVCパターンの恩恵を受けるでしょう。

良い解決策は以下を提供すると思います:

  • モデルとビューは、値が変更されるとコントローラーを更新します(オブザーバーパターン)
  • ページが読み込まれたときにフォームデータからモデルにデータを入力する
  • モデルが変更されたときにモデルからフォームに入力する

Ajax、彗星、JSONP、そしてそのすべてのジャズは深刻な過剰です。


2
私は間違っているのでしょうか、それともこれは単に悪い考えですか(あるいは、流行語に準拠しているフレームワークでしょうか)。

2
あなたと同じ気持ちだったので、少し前に作業を始めました。それは、AMDと同じくらい最小限であり、私がそれを得ることができるのと同じくらい、ピノピノなしです。手段がないのjQueryなど私は、これは締め切られましたが、私はこれはと思う知っているかもしれません:あなたが探していたものの一種であることgithub.com/Wolfy87/tarmac私は思ったので、私は最近、それをあまり行っていません-唯一のユーザーになります。
Olical 2013


単純なTODOアプリを実装することで、(ほぼ)すべての利用可能なJavaScriptフレームワークを比較するTodoMVCをご覧ください。
koppor

回答:


71

バックボーンは素晴らしい軽量フレームワークです。試してみてください:http : //backbonejs.org/


2
バックボーンを見つけてよかったです。
アーロングリーンリー、2011年

私は同意します、間違いなくチェックアウトするべきです!
アイヴァンホー

MVCの方法でバックボーンを使用する方法?
IsmailS 2010年

1
@TristanJuricekは、ピープコードの無料の代替手段はありますか?
Matt

バックボーンをスキップして、脊椎に向かって右に進みます。それははるかに論理的なMVC実装を持っています。
Chris Jaynes、2012年

33

JavaScriptMVCは優れたソリューションです。すべてがプラグインアプローチであり、必要な機能のみを選択できます。2.0以降では、jQueryに基づいています。

JMVCが開発のための中間層を提供するだけなので、Webサイトを段階的に拡張することはユーザーに任されます。その設計を自分で選択するのはあなた次第です。

ただし、JavaScriptMVCは、強力なイベント委譲ベースのコントローラーがあるため、単に最も優れた汎用JavaScriptMVCライブラリです。

イベントの委任により、イベントハンドラーをアタッチする必要がなくなり、ページのルールを作成できます。

最後に、JMVCはMVCアーキテクチャ以上のものです。開発サイクルのすべての部分が含まれています。

  • コードジェネレーター
  • SeleniumとEnv.jsの統合テスト
  • ドキュメントエンジン
  • 自動連結+圧縮
  • エラーの検出と報告

1
JavascriptMVCの+1-いくつかのアプリで使用しましたが、とても便利です。Webサイトのコード生成の例をスキップします。私はそれらがRailsファンボーイを鎮めるためだけにあると想像します。:)基本的なJQueryMXオブジェクトモデルから始めて、コントローラーを作成します。
Chris Jaynes、2011

1
このコメントを書いてから、RequireとSpineの使用に切り替えました。最終的には、JMVCよりも小さく、エレガントで、「エンタープライズ」に劣ります。JMVCは、Java開発者のチームがJSに調整を加えることができて良かったですが、JSをよりよく理解し始めると、それは成り立たなくなります...
Chris Jaynes '19

JMVCのMVC部分はcan.jsになりました
PHearst

21

SpineのAPIはBackboneに似ていますが、はるかに小さくなっています。プロトタイプの継承が特徴です。


2
また、CoffeeScriptで書かれており、CoffeeScriptのスタイルのクラスを使用しています。これは大きな勝利ではありませんが、それはちょっといいです。
有料オタク

1
それがバックボーンよりも小さい理由だと思いますか?Coffeescriptコードはよりコンパクトです...
ブレンデン

脊椎が大好きです。純粋な素晴らしさのためにRequireJSと一緒に使用してください。CoffeeScriptであることも怖がらせないでください。通常のJSでも問題なく動作します...
Chris Jaynes

ブラウザのサポートはIE> = 9なので、訪問者のプロファイルと一致していることを確認してください。
リチャード

20

AngularJSはjQueryと連携して機能し、MVC構造と問題の厳密な分離で多くのことを支援します。

完全なテスト環境と依存性注入が含まれています...

http://angularjs.orgで確認してください。


Angularjsは....私は思います....後半に2013年にこれまでの最高である
トニー・バオ

15
angularはマイクロフレームワークではありません:/
iConnor

1
そう、Angularはマイクロフレームワークではありません。
Vojta

2
はい、学習曲線も比例していません。他のフレームワークと比較して利点があります。
vsync 2014年

4
angularは、micro frameworkの正反対です。それは獣です。
hasen


14

これはあなたがチェックすべきもののように見えると思います:http : //knockoutjs.com/

(Silverlight / wpfプログラマーとして、これは私が最終的にjavascriptの学習を開始したライブラリでした。これは、Model-View-View-Model(MVVM)パターンに基づいています。今のところ、私は良い選択のようです!)


Silverlight / wpfプログラマーとして、ノックアウト、バックボーン、およびその他のいくつかを評価しました。その日の終わりに、Angularに切り替えました。それはバインディングとはるかに持っています。
jonperl 2012


8

Ember.js

これらはEmberを使用する喜びにする3つの機能です。

  1. バインディング
  2. 計算されたプロパティ
  3. テンプレートの自動更新

バインディング

バインディングを使用して、2つの異なるオブジェクト間のプロパティを同期させます。バインディングを一度宣言するだけで、Emberは変更が確実にどちらの方向にも伝播されるようにします。

2つのオブジェクト間にバインディングを作成する方法は次のとおりです。

MyApp.president = Ember.Object.create({
  name: "Barack Obama"
});

MyApp.country = Ember.Object.create({
  // Ending a property with 'Binding' tells Ember to
  // create a binding to the presidentName property.
  presidentNameBinding: 'MyApp.president.name'
});

MyApp.country.get('presidentName');
// "Barack Obama"

バインディングを使用すると、MVC(Model-View-Controller)パターンを使用してアプリケーションを設計し、データが常にレイヤー間で正しく流れることを理解しておくことができます。

計算されたプロパティ

計算されたプロパティにより、関数をプロパティのように扱うことができます。計算されたプロパティは、他のプロパティと同じようにバインディングを操作できるので便利です。

テンプレートの自動更新

Emberは、セマンティックテンプレートライブラリであるHandlebarsを使用します。JavaScriptアプリケーションからデータを取得してDOMに配置するには、値を表示したい場所にタグを作成して、HTMLに配置します。

<script type="text/x-handlebars">
  The President of the United States is {{MyApp.president.fullName}}.
</script>

2
いずれにせよ、バックボーンよりも使用するのは非常に有利です。...仕様が初期段階でそれほど明確でない場合..
Bijendra

4
私はemberJS好きですが、そうではありません「マイクロ」それはだ巨大なフレームワークアウトそのフラットなので
iConnor

1
Emberとマイクロフレームワークを同じ文で使用することは許可されません。
プレフィックス

8

Stapes.js

完全な開示:私はこのライブラリの作成者です:)

本当に小さなもの(1.5kb縮小/ gzip圧縮)を探している場合は、外観を確認し、気に入ったら教えてください。


一見すばらしく見えます!プロトタイプの継承に焦点を当てることが好きです(シミュレートされたクラスも、混乱するnew演算子もありません)。何不要と思われることはまた別であるeachmapUnderscore.jsjQueryにはすでにあります。
feklee

7

要件が本当にシンプルな場合は、Alex Netkachovのような独自のシンプルなMVCを作成できます。

彼の例はdojoに基づいて構築されています(注:dojo.jsファイルがないため、彼のページでは機能しません)が、単純なJavascriptのパターンに従うことができます。


4

それはおそらく必要なものに対してはやり過ぎですが、SproutCoreはMVCフレームワークであり、JavaScriptMVCまたはTrimPathのJunctionよりも重く見えることはありません

残念ながら、これらはいずれも段階的な拡張の原則に基づいて構築されているようには見えません。


1
JavaScriptMVCのコアMVCコンポーネントは、Backboneのgzip圧縮されたものよりも約1k大きくなります(多くの機能があります)。また、JMVCは段階的に強化されたアプリを完全に構築できます。モデルレイヤーを捨てるだけです。
ジャスティンマイヤー

3

人気のあるActionScript MVCフレームワークPureMVCが最近JavaScriptに移植されました。まだ試してみる機会はありませんが、良いと確信しています。


フレックスが好きです。シンプルでパワフル。
グレン

3

jquery-claypoolもチェックアウトしてください

jquery-claypoolは、django、rails、springなどでの私の経験に基づいて、jqueryに基づいて構築された小さく高速でレール可能なmvcフレームワークです。非常に軽量で、クライアント環境とサーバー環境の両方で実行されます。

クリーンなmvc、カテゴリロギング、フィルター(aop)、コントローラーの遅延作成、制御の反転、コンベンションオーバーコンフィグレーションなどのルーティングフレームワークを提供します。

jqueryが既に行っていることは何もせず、jqueryのように感じ、優れたフレームワークのように機能します。

jquery-claypool

ぜひご覧ください。


バックボーンとの関係でクレイプールをどのように見ていますか?
Pepijn





2

UPDATE 2016:Sammy.jsが破棄されたようです。

見ていSammy.jsを

サイトからのテキスト:

クラスの小さなwebframework。

  • SMALL Sammyのコアは、16K圧縮と5.2K圧縮とgzip圧縮のみです
  • MODULAR Sammyは、プラグインとアダプタのシステム上に構築されています。必要なコードのみを含めてください。また、独自のコードを再利用可能なプラグインに抽出するのも簡単です。
  • クリーン API全体は、理解しやすく読みやすいように設計されています。サミーは、優れたカプセル化とアプリケーション設計を奨励しようとします。
  • FUN楽しくなければ開発の本当のポイントは何ですか。サミーはMATZのアプローチに従っています。開発者の幸福のために最適化されています。

MATZとは何ですか?
kstep

ルビーの生みの親である松本幸宏氏は、人生を映す形で「単純ではなく、Rubyを自然にしようとする」とよく言っています。したがって、ソフトウェアはユーザーにとって自然な感じがするはずです。これはMATZアプローチによって意味されます。
Bijan


1

CorMVC、理解しやすく、最初はjqueryベースで、サーバーテクノロジーに依存しない


1

MCVと呼ばれる非常にシンプルなJavaScript MVCフレームワークを開発しました。それはあなたが求めるものを正確に実行しませんが、ヘルパーで簡単に拡張できます。とにかく、それは間違いなくマイクロ(1.9 KBパック)です。

それは多かれ少なかれJamalのように機能しますが、私は2つの理由で自分でロールすることにしました。

  • jQueryの依存関係を削除します(ほとんどの場合、jQueryと一緒に使用します)
  • ヘルパーで拡張可能にします。これらは、CakePHPの動作、コンポーネント、ヘルパーに類似しています。


1

私はAngularJSに賛成しました(完全な開示、私は限られた方法で角度のある開発の取り組みに関与しています)。私は、内部プロジェクトの1つの機能(共有するためのサインオフはありません)を使用して、AngularJSとBackboneの両方に実装する比較を行いました。それは素晴らしいエクササイズでした、そして結局、私は非常にAngularに傾いています。コア開発者は質問への回答に優れており、組み込みのデータバインディング、ユニット/ e2eテスト、およびドキュメントを使用して、本当に素晴らしい仕事をしました。まだベータ版で、1.0は近い将来にリリースされます。ベータ版は非常に安定しています。

パラダイムシフトが少しあり、彼らはほとんどとはかなり異なるアプローチを使用しています。お気に入りのjqueryプラグインの統合には少し手間がかかりますが、実行可能であり、完了しています(githubのAngular Contrib)。

私は言います(そしてこれはほとんどのjs中心のフレームワークにとって問題です)、あなたのコンテンツをSEOフレンドリーにする方法を必ず調べてください(それがあなたにとって重要である場合)。6月にアンギュラーコミュニティに参加して以来、関心が高まっていることに気づき、多くの人々がバックボーンやその他を見てきたが、Angularに表示されているものを本当に気に入っていると投稿しています。








0

Can.jsには必要なものがすべて含まれており、わずか8 KBです。JavaScriptMVCから最高のビットを取り出し、オブザーバー、ウィジェット、バインディング、機能を備えた1つの小さな、しかし重要なフレームワークにそれを抽出しました。主要なフレームワーク( jQuery Dojo Toolkit MooToolsなど)と互換性があります。ドキュメンテーションは優れており、作成者は応答性があります。それは間違いなく一見の価値があります。

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