1

私がインターネットで読んだ限りでは、backbone.js と node.js を一緒に使用したい場合は、通常、バックエンド API プロバイダーとして node.js (特に Express.js) を使用します (さらに、永続化などの他の機能を追加します)。など)、backbone.js はフロントエンドのエンジンですが、html テンプレート、ビュー、モデルなどを提供することを意味します。

私がインターネットと github で読んだバックボーン プロジェクトは、通常、ルーティング、コレクション、ビューなどの「クラス」をインスタンス化する javascript ファイルを直接実行する index.html で始まります。フロントエンドのビューは inyecting を担当します。 html および css テンプレートを使用して、イベントなどのビューを単独で管理します。

問題は、backbone.iobind ( https://github.com/logicalparadox/backbone.iobind ) のようないくつかのプロジェクトを見たときに発生します。これは、私が本当に理解していない非常に特殊な構成とそのしくみを使用しています。

ソース コードを見ると、node.js サーバーは API だけでなく、Backbone によって使用される予定の html テンプレートの inyecting も担当しています。私は多くの疑問を持っています:

  1. ルーター、ビュー、コレクション、および履歴を実行する JavaScript を実行する「インデックス」がないため、バックボーン フロントエンドを実行するのは誰ですか?

  2. Express.js によって指定されたテンプレートと、それらを使用する backbone.js 側のビューをどのように同期しますか?

  3. node.js ルーターを inyecting に使用しているため、backbone.js ルーター クラスの目的は何ですか?

  4. 最初に説明したような他のよりクリーンなアーキテクチャではなく、なぜこのアーキテクチャを使用するのですか?

よろしくお願いいたします。

4

1 に答える 1

5

数日間調査した後、インターネット上にそれに関する情報がないことがわかったので、私は自分の質問に答えるつもりです. 一部の編集者が間違った回答を修正してくれることを願っています。私が説明しようとしているのは、コミュニティが現在進化しているため、フロントエンドからではなく、バックエンドからテンプレートを作成する node.js および backbone.js アプリケーションの「バックボーン」です。開発者が 2 つのオプションのいずれかを選択する理由 さまざまな変数に応じて: セキュリティ、読み込みとレンダリングの速度など。プロセスの概要:

A. 基本的に、最初のステップは、express.js でビュー ディレクトリとテンプレート エンジンを構成することです。

    app.set('views', __dirname + '/views');
    app.set('view engine', 'jade');

B. この後、すべての静的リソースを配置するミドルウェア。「静的」リソースについて話すときは、フロントエンドで実行される画像、javascript、html、css などについて話します。

    app.use(express.static(path.join(__dirname, 'public')));

Express (または Connect) が /public ディレクトリ内に index.html を見つけた場合、それを実行します。そうでない場合は、エクスプレス ルーティング システムを介してルートを作成する必要があります。

C. Express.js がバックエンドから HTML を inyect する場合です。そのためには、私が書いたように、次のようなルーティング システムが必要です。

    app.get('/', require('./views/index').init);

ここで、express.js がユーザーがメイン ページ「/」にアクセスしたことを検出すると、/views 親ディレクトリ (/public ではない) 内にある index.js ファイルを探し、ここから index.jade を取得します。レンダリングされ、フロントエンドに注入されます。

    res.render('index');

D. index.jade は必要なリソースを提供します。このケースでは、この .jade に必要な CSS、ライブラリ (jquery、backbone など)、および backbone.js によって必要とされる 2 つの要素が提供されます。

  1. backbone.js フロントエンドをロードする JavaScript ファイル。ここでは、すべてのファイルが /public ディレクトリに配置されます。

     script(src='/views/index.js')
    
  2. index.jade は、backbone.js ビューに必要なテンプレートも提供します。

     script(type='text/template', id='login')
    

E. いくつかの異なる backbone.js 構成があります。通常、すべてのオブジェクトが初期化されるフロントエンド ルーターからメイン アプリを起動します。しかし、index.jade ファイル、テンプレート、および javascript ビューの実行を同期するための主なアイデアは、DOM がロードされた後に最後のものを実行することです。そのため、次の jquery 文を使用することをお勧めします。

     $(document).ready(function() {
        app.view = new app.View();
     });

この要約は不要だと思う人もいるかもしれませんが、すべてをフロントエンドに持つことと、HTML node.js バックエンド + backbone.js フロントエンドを混在させることの違いを知らないビギナーにとっては、役立つと思います。 . なにより構造がどうなのか。クレイジーに聞こえるかもしれませんが、インターネット上に構造化の方法を説明する情報はありません。

よろしくお願いします

于 2013-04-16T06:05:13.137 に答える