3

学習目的でサイド プロジェクトを開始したいと思っています。また、使用するテクノロジ、フレームワーク、ライブラリ、およびアプリケーションを構成する方法について、少なくとも高レベルでのガイダンスを求めています。私はフロントエンドの開発者で、サーバーサイド プログラミングやデータベースなどのさまざまな作業を行ってきましたが、個人的にフルスタック アプリケーションを作成するのはこれが初めての試みです。サーバー側の環境として Node.js を使用することにしましたが、それが私の唯一の確固たる要件です。

私はすでにアプリケーションのアイデアを思いついています。その機能に関するいくつかの注意事項を次に示します。

  • これは別のTo Doリストアプリです。基本的なチェックリストと主に異なるのは、 GTD システムのいくつかの側面の適応と、リストのネスト/ツリー構造です (フラットなリストや、GTD が使用する単一レベルのネストとは対照的です)。ここでは、幹がリストの基盤であり、枝がプロジェクトとサブプロジェクトであり、葉が個々のタスクであるツリーの比喩を利用しています。
  • プロジェクト (ブランチ) は多くのサブプロジェクト (他のブランチからのブランチ) を持つことができ、プロジェクトとサブプロジェクトの両方が多くのタスク (リーフ) を持つことができます。プロジェクトとは、最終的には完了できるが、実際には物理的に実行できない複数のステップからなるプロセスです。GTD と同様に、物理的なアクションとして定義されたタスクのみを実行できます。たとえば、「銀行ローンを組む」はプロジェクト (定義可能な目標)、「貸し手の金利を調査する」はサブプロジェクト (その目標の達成に向けてあなたを動かします)、「地元のウェルズ・ファーゴ支店に電話する」などです。 「chase.com の貸出セクションにアクセスする」と「Bob にメールで推薦を求める」はすべてタスクです (これらは、プロジェクト/サブプロジェクトを進めるために実行できる特定の物理的なアクションです)。
  • プロジェクト内のすべてのタスクを完了する (すべての葉をトリミングする) と、そのプロジェクトは完了したと見なされます (枝が切り取られます)。あなたの目標は、木が大きくなりすぎないように継続的に剪定することです。
  • あなたが私のような人なら、絶え間なく完了し、新しいプロジェクトに置き換えられるプロジェクトの膨大なリストを持っているでしょう。このアプリケーションの価値は、リストを保存するだけでなく、次に何をすべきかをガイドする機能にあります。この目的のために、各タスクに関する一連のメタデータを定義できます (タスクの場合のみ。プロジェクトはタスクのグループを整理するためのバケットにすぎないため、プロジェクトの場合はこれを行うことはできません)。
  • このメタデータには、ソートおよび検索できる各タスクに関する追加情報が含まれています。例えば:
    • コンテキスト: タスクを完了するために必要なツール/状況は何ですか? たとえば、運転免許証を更新するには、書類を作成し、平日の営業時間内に特定の場所にいる必要がある場合があります。
    • 締め切り: これはいつでも行うことができますか? それとも、完了するのに厳しい日付がありますか?
    • 重要性: これはあなたがやりたいことですか、それともやらなければならないことですか?
    • 時間: タスクを完了するのに必要な時間を見積もってください。
  • このメタデータがあれば、いつでもアプリケーションを開いて、現在の (または差し迫った) コンテキスト、差し迫った締め切り、最も重要なタスク、次のコミットメントまでの時間を考慮して、次に何をすべきかをすばやく判断できます。など。これにより、毎日同じフラットリストをスキャンして、各タスクに関するメタデータを整理/保存せずに同じ暗算を行う必要がなくなります。差し迫った締め切りを見て次に何をする必要があるかを把握するか、現在利用可能なリソースを選択して、完了可能なタスクのみにリストを絞り込むことができます。

このアプリケーションの有用性は、その使いやすさ/速度、およびシンプルさと拡張性の適切なバランスから生まれます。前者までは、プロジェクト/タスクの説明をその場で編集したり、クリックしてメタデータを切り替えたり、ドラッグ アンド ドロップしてタスクを別のプロジェクトに移動したりできるはずです。リスト管理のオーバーヘッドは最小限に抑える必要があります。後者の点では、各タスクについて関心のある、または自分にとって有用なメタデータを入力するだけでよいため、努力した分だけアプリケーションから抜け出すことができます。アプリをリスト アイテムの記録と更新のみに使用する場合は、それで問題ありません。締め切りを細かく管理したい場合は、すべての重要度を指定しますタスクなど、それも結構です。投入すればするほど、そこから得られるものは多くなりますが、各プロジェクト/タスクの単純な行項目の説明を超えてデータ入力を強制することはありません.

これらはすべて、バックグラウンドで永久保存を行う 1 ページの Web アプリケーション (理想的には最終的にはモバイル対応) を示唆しています。ログインして、いくつかのものを移動し、いくつかのものを完了としてマークし、それを閉じることができるはずです. 書面によるリストのように、手続きは必要ありません。これは常に進化するリストであり、最終的に時間を節約し、毎日の小さなタスクをすべて追跡するための余分なオーバーヘッドの負担を生み出すことはありません.

以上のことから、このアプリケーションの開発に取り組む方法について、いくつかの推奨事項を探しています。基本的に、それをどのように設計するか。Ember.js や Backbone.js などのクライアント側 MVC フレームワークを使用する必要がありますか? この種のデータを格納するのに最適なデータベースは何ですか? また、スキーマはどのように見えるべきですか? CRUD/REST とルーティングにはどのようにアプローチすればよいですか? 単一ページのアプリとして、1 つの巨大なコントローラーに頼る必要がありますか? サーバーとブラウザの間で転送しているデータはどのように見えますか? 繰り返しますが、私の唯一の難しい決断は、サーバーで Node.js を使用することでした。なぜなら、この取り組みの主な目的は、JavaScript のスキルを活用してスタックをさらに深く掘り下げることだからです (そして、うまくいけば、有用なアプリケーションを考え出すことです!)。 . 他のすべては、推奨事項に対して広く開かれています。

あなたの推奨事項を踏まえて、これらのテクノロジーの詳細を掘り下げ、それらがどのように適合するかを理解できると確信しています。たくさんあるので、今はほとんど途方に暮れていますアプリケーションを構築するための多くのオプションとアプローチがあり、Rails ビューのバグをあちこちで修正しましたが、完全なアプリケーションを設計したことはありません。私は、これらすべてがどのように組み合わされるかの基本を完全には理解していません。「リスト内の各タスクはドキュメントにすることができます。Redis を使用して、タスクのプロパティを含む JSON オブジェクトを保存し、ユーザーがブラウザでタスクを更新するときに、これを作成して送信します」という行に沿ったフィードバックが欲しいです。オブジェクトをクライアントからコントローラーに送信して、Redis ドキュメントを更新します。」それはおそらく完全なマラーキーですが、うまくいけば要点を理解していただけます。チュートリアル、デモ、またはその他の例へのリンクも大歓迎です。私はすでに多くのことを読んで見てきましたが、これらのより一般的な説明を特定のユースケースに精神的にマッピングすることは決してできないようです.

私が特にナイーブだったこと、省略した重要な詳細がある場合、または私が何を求めているのかが完全に明確でない場合はお知らせください.

また、「正しい」答えがないため、このタイプの質問は SO の理想的な使用例ではないことも認識していますが、最良の答えは単に最も役立つものになると思います。

助けてくれてありがとう!

4

1 に答える 1

1

これを構築する場合、Backbone.js を使用し、単純な RESTful CRUD インターフェイス (Backbone のデフォルトの同期メソッドが構築されている) を使用しますが、それは私だけです。

このアプローチでは、タスク モデルを作成し、それをサブタスク モデルに拡張して (親属性を追加)、各タスク (およびサブタスク) にサブタスクのコレクションを持たせることができます。

バックボーンの構築同期メソッドと基本的な RESTful CRUD サーバーを使用するだけでよいため、同期は簡単です。

必要な検証をバックボーン モデルに組み込み、そのコレクションのカスタム イベント (そのコレクション状態のモデルが変化したときにトリガーされる) をリッスンしてタスク サブタスクにバインドし、タスク (およびすべてのサブタスク) が適切かどうかを判断できます。完了。

この投稿がBackboneを大いに支持していることは知っていますが、これは主観的な質問であり、これは私の意見です.

サーバー側では Express を使用することをお勧めします。また、express-resourcesモジュールを使用して REST の実装を容易にすることができる場合があります。

繰り返しますが、これは私の意見です。お気軽にご質問ください。

于 2013-03-28T21:31:29.170 に答える