web-dev-qa-db-ja.com

私のプロジェクトとこれらのJavascriptフレームワークのどこが間違っていますか?

まず、私が作成したいプロジェクトの最も重要な要素は、単一ページのWebアプリとして実装されたwikiエンジンです。私は、最初から利用できる一連の機能を用意し、将来的には多くの機能を追加する予定です。

基本機能

  • ページの作成(wiki記事とその記事のディスカッションフォーラムの両方を作成します)
  • マークアップとWYSIWYGala markitup
  • マークアップ/ html/WYSIWYG間のオンザフライ変換
  • すばやくナビゲートするサイドバー
  • 編集/表示を選択するための上部ツールバー

高度な機能

  • さまざまな方法でナビゲートするための構成可能なサイドバー
  • 構成可能なツールバー(選択したマークアップ言語を追加する可能性があります)
  • タグ
  • 編集可能なtodoの
  • ファイルのアップロードと画像の添付ファイルをドラッグアンドドロップします

エンジンは元々、最も基本的なページの作成、マークアップ、WYSIWYGの編集、および保存で構成されていました。最終的には、この基本的なエンジンをドラッグアンドドロップ画像のサポート、ファイルのアップロード、ライブデータグラフ、およびビューをカスタマイズするためのサイドバーで拡張したいと思います。

私は自分のプロジェクトのベースとなるまともなプロジェクトをかなり広範囲に検索しましたが、TiddlyWiki以外には、JavaScriptベースの優れたウィキエンジンはないようです。また、既存のwikiエンジンの上にJqueryを適用することも検討しましたが、いずれにせよ最終的には書き直すことになると思います(さらに、必要な機能を追加するのがさらにエキサイティングです)。いずれにせよ、私はこの獣をjavascriptライブラリ+フレームワークで実装することに到達しました。

これらのフレームワークのいくつかは、アップルトゥアップルではないため、実際には比較できないことを私は知っています。私は、それぞれのフレームワークの比較可能な部分に対して比較コメント/質問を組み立てようとしましたが、修正される可能性があります。

だからここに行きます:

私自身の調査と意見に基づいて、リストを以下の項目に絞り込みました。 SproutCore、corMVC、YUIなどは、限られた容量では以下の項目の方が適していると思ったので、意図的に省略しました。

マイオプション


jquery/UI + backbonejs

全体

私が読んだことから、この組み合わせは多くの人に使用され、愛されており、非常に柔軟で拡張可能です。私の主な懸念は、この組み合わせが、よりデスクトップ指向のUIインターフェイスを開発するための最良の出発点ではないということです。

[〜#〜] ui [〜#〜]

JQueryUIまたはjqueryToolsは競争力があるかもしれませんが、他のフレームワークのUI機能と同等ではないようです。具体的には、効果に重きを置いているように見えますが、適切なレイアウトスライスのサポートが不足しています。

javascriptMVC

全体

私には、JavascriptMVCは、本質的にjquery + MVC(jqueryMX)拡張機能であり、ドキュメント化(documentJS)、機能テスト(funcUnit)、コードおよび依存関係管理(stealJS)用の他のいくつかのアプリがあるように見えます。追加モジュールの利点を超えて、機能的な議論は本当にbackbonejsとjqueryMXに帰着すると思います。私はこれを修正し、誰かが両方を使用または比較しましたか?

  • 機能:木星(jMVCのメーカー)の概要 機能
  • リンク先 jqueryMX

[〜#〜] ui [〜#〜]

JavascriptMVCは、Jqueryで利用可能なものの上に [〜#〜] mxui [〜#〜] アイテムを追加するので、少なくともそのカテゴリではわずかな勝利だと思います。

knockoutjs

全体

これに関する私の考えや懸念は、jquery +バックボーンのコメントと非常によく似ています。どちらも同様の機能を提供しているように見えますが、視点が異なります。よく引用される欠点は、knockoutjsがビジネスロジックとプレゼンテーションをデータバインドと緊密に結合していることと、このバインディング方法が複雑なUIインタラクションで機能しなくなる可能性があることですが、それが問題にならない理由を聞きたいと思います。

[〜#〜] ui [〜#〜]

現時点では空白

Dojo&ExtJS

全体

DojoとExtJSについてはほとんど知らないので、ほぼ同じスペースでプレイしているように見えるので、ディスカッションを組み合わせます。これら2つに関するstackoverflowに関する情報のほとんどは、古くなっているようです。私が見たところ、どちらもデスクトップキャリバーアプリの実装に適した大きなフレームワークであることがわかりました。 Dojoは文書化が不十分であると非難されていましたが、もはやそうではないようです。 ExtJSはもちろん商用ライセンスを持っていますが、それはあなたが得るものにとって本当に合理的であり、私はそれに対してあまり反対しません。 ExtJSのウィジェットは、Dojoよりもいくぶん専門的に行われているようですが、私は確かにそこで修正することができました。両方の経験のある方からのご意見をお待ちしております。

[〜#〜] ui [〜#〜]

Dojoには dijit UIライブラリがありますExtJSにはUI機能がありますが、Extコアにはありません。これが ドキュメント で、これが デモ です。

カプチーノ

全体

そして、カプチーノがあります。 CSSもhtmlもありませんが、既存のjavascriptライブラリを使用するのは難しいかもしれません。 Objective-Jは、特にプレーンなJavaScriptも記述できると宣伝していることを考えると、怖くないようです。デモは印象的で、ウィキエンジンのUIニーズに密接に近づいているようです。カカオベースのAPIは、それに慣れていない人にとっては多くのことを取り入れることができますが、おそらくそれだけの価値があります。レイアウトエンジンは必ずしも使いやすいとは限りませんが、このような若くて破壊的な技術には確かにいくつかの欠点があります。

[〜#〜] ui [〜#〜]

現時点では空白

たくさん書いたことをお詫びしますが、少なくとも、たくさんの安い答えを期待しているx vs y vszの質問ではありません。それで、あなたはどう思いますか?ウィキエンジンのような私のデスクトップの基礎は何である必要がありますか?それはうまくいけば、時間の経過とともにより豊富な機能(複雑な読み取り)になるでしょう?

107
funkyeah

まず、プロジェクトの特定のUI要件を考え出すことをお勧めします。あなたが試したフレームワークのどれを試してみましたか?

個人的には、私が取り組んでいるプロジェクトではコントロール/ウィジェットの多くのカスタマイズが必要なため、ExtJSの開発に取り掛かりました。 ExtJSには、箱から出してすぐに使えるものがたくさんあり、いつでも拡張、結合、またはビジネスに必要なあらゆる怪物に変えることができます。

ExtJS 4 は、UIを「スキン」して、ルックアンドフィールをさらにカスタマイズすることもできます。

JavaScriptを初めて使用し、Javaに慣れている場合は、 [〜#〜] gwt [〜#〜][〜)などのサーバー側ソリューションを検討することもできます。 #〜] jsf [〜#〜] 、または Vaadin

4
It Grunt

タイムラインとリソースについてはよくわかりませんが、複数のフレームワーク/環境から決定しようとしているときは、先に進んでプロトタイプをすばやく作成しようとしています。たとえそれが1つか2つの主要な機能であったとしても、世界中のすべての研究と文書化が、実際にツールを使って何かを構築しようとすることと一致することは決してないでしょう。私はそれぞれと一日を取り、あなたがどこまで到達するかを見ると言います。これにより、どのツールがタスクに対応していて、最も快適に感じるかがわかります。

19
Brian Flanagan

meteor は最近大流行しています( GitHubで最もスターの付いたフルスタックJavaScriptフレームワーク および Meteorpedia はMeteorで記述されたwikiエンジンです。

ビデオの起動 は1:28に夢中になります。

UIに関しては不可知論者であり、Bootstrapおよび Famo.us で広範囲にテストされています。また、同じコードベースからモバイルアプリを生成します。

6
Dan Dascalescu

あなた一人じゃありません!

VanillaJS および Ampersand ..は、より単純でよりモジュール化されたJavaScriptの真剣な推進力の優れた例です。

Book についてもあります。

シンプルさは、過小評価されているes6機能によって推進されています: Modules および SystemJS 実装標準。 es6以外のシステムでも使用できます。

なんてクールなんだ!

1
backspaces

フレームワークの選択は、想像しているほどUIの選択を制約しない場合があります。 コンテンツ管理のデカップリングに関するこの最近のHenri Bergiusの記事 私ができるよりもはるかに良い点を示しています-そして、ちなみに、かなり見栄えの良い純粋なJavaScript(フレームワークに依存しない)へのリンク in-コンテンツエディタを配置

1
Aaron

AngularEmberの両方を省略しているため、候補者の全体的な選択が間違っていると思います。リストされている他のフレームワークのいずれか。

全体として、Angular.jsがこのフレームワークだと思います。

ルーティングに重点を置く

あなたが話していることの多く(ナビゲーション用のいくつかのサイドバー、シングルページアプリ)は、ルーティングの機能、またはフロントエンドがURLナビゲーションバーのテキストをどのように解釈するかです。

Angular.jsとEmberの両方に優れたルーターがあり、追加のコードなしで必要なすべてを実行できます。

あなたの利益のために、ここにあなたの単一ページのウィキを作成するために使用できるAngularの機能の簡単な内訳があります

サイト自体の構造

AngularにはUIルーターと呼ばれる素晴らしいライブラリがあり、カスタムナビゲーションを作成することも、コンテンツを公開するSEOフレンドリーな構造を設定することもできます。複数のビューを使用すると、上部のツールバーも使用できます。

UIルーターチュートリアル: http://cacodaemon.de/index.php?id=57

WYSIWYGエディター

Angularはライブの双方向バインディングに基づいて構築されています(どこかで何かを変更すると、他の場所でも自動的に変更されます)。したがって、この種のエディターでうまく機能する多くの機能がパッケージ化されています。いくつかの良いものがすでに作成されており、それらを実装するだけで済みます。

http://textangular.com/

グラフとその他のきちんとしたもの

Angularディレクティブは、再利用可能なChartコンポーネントの作成などを行うように設計されています。これらはWordpressウィジェットと完全に異なるわけではありません。これらの多くはすでに開発されており、Angularプロジェクトにドロップできます。

http://www.sitepoint.com/creating-charting-directives-using-angularjs-d3-js/

エンバーに関しては、私はそれについてあまり知らないので、その特定の機能について話すことができません。

1
Code Whisperer

バックボーンについての1つの提案は、バックボーンであるため、マリオネットを使用する必要がありますが、アーキテクチャ構造が優れており、より多くの意見があります(個人的には、バックボーンはガイドラインを設定しておらず、大規模なアプリでは欠点のように感じます) 。

私は数か月間、さまざまなjsライブラリを組み合わせて作業しましたが、他のフレームワークのように邪魔にならず、メッセージパイプラインは、アプリ全体でコンポーネントを接続し、それらを分離したままにするための非常に優れた方法です。

ここにあなたは私にそれを決めさせた素晴らしい話があります: https://www.youtube.com/watch?v=qWr7x9wk6_c

そして、ここに、ドラッグアンドドロップ要素と他のjsライブラリが接続されたデモプロトタイプがあります。私はWeb開発に1。5年間取り組んでいるので、私のコードについてどう思うか聞いてみたいです...私はまだ初心者です: https://github.com/Drasky-Vanderhoff/marionette-demo/

Knockoutについては、既存のコンテンツとのやり取りが必要で、バックエンドと常に接続する必要がない場合に非常に役立ちます。私はそれを6か月間使用しましたが、ルーティングに他の多くのjsライブラリを使用する必要がありました。さらに、Backboneや他のJSフレームワークが持つ多くの構造を繰り返すことになります。私が言うことは、それはあなたの邪魔にならず、制約ではなくツールになるということです。また、これはほぼ1年前だったので、いくつかの変更がありました。

1つ、ノックバック(ノックアウト+バックボーン)を見つけた場合...それを避けてください。ドキュメントは本来あるべきほど良くなく、学ぶのにもっと時間がかかります。あなたがそれをやりたいのなら、最初に速いプロトタイプを作って、あなたが望むものであるかどうかを確かめてください。

0