web-dev-qa-db-ja.com

Backbone.jsとNode.jsの違いは何ですか?そして、どれが一番いいですか?

私は少し混乱しているようです。Node.js関連の「もの」のためのフレームワークが非常にたくさんあります。誰かがBackbone.jsとNode.jsの違いは何ですか?の概要を教えてもらえますか?そして、どれが一番いいですか?前もって感謝します。

25
Mohit Kumar

私はここでいくつかの情報源から引用しています:

まず、スタックオーバーフローの質問から引用します ここ

あなたがリストしたもののほとんどは、JavaScriptで記述されているか、JavaScriptを使用しているためにのみ関連しています。それらを比較することは、リンゴをオレンジと比較することに似ています。それは、トヨタカムリとV6エンジンの違いを尋ねるようなものです。それらは関連していますが、異なることをします。

Node

Node.jsとも呼ばれるNodeは、サーバー側のJavaScriptコードを実行するJavaScript環境です。これは V8 JavaScriptエンジン に基づいています。すべてのNPM、GitHubなどのパッケージから作成またはインストールして実行するJavaScriptコードは、Nodeランタイム環境によって実行されます。

バックボーン

Backbone は、JavaScriptの Model-View-Controller フレームワークに例えることができます。もともとはブラウザ向けに書かれたものだと思います。最も一般的なMVCパターン(およびその他いくつか)を実装することにより、クライアント側のJavaScriptをクリーンに保ち、クライアント側のJavaScriptをサーバー側のコードに簡単に接続できるようにします。

また、これはQuoraの同じ question に対する回答からのものです。クレジットはドリューハリーに行きます:

それらはほとんど完全に無関係です。従来、Backbone.jsはクライアントライブラリであり、Node.jsはJavaScriptでサーバーサイドアプリケーションを作成する方法です。 Backboneは、Webページでそのモデルを視覚的に表すDOM要素をデータモデルにバインドするためのモデル+ビューシステムを目指しています。 Backboneは、モデルのコレクションと、それらのモデルをサーバー側の表現と同期するための一連のユーティリティ関数も提供します。

Node.jsは、JavaScriptでサーバー側の便利な機能を実行するための標準ライブラリにパッケージ化された、v8 JavaScriptランタイム環境です。 Node(バックボーンを含むこれらのパッケージを簡単にインストールする方法についてはnpmをチェックしてください)のために設計された多くのパッケージがあり、あらゆる種類の興味深いことを行うように拡張されています。Backbone.jsを使用することが可能です。 Node.jsを使用しますが、Backboneは特にサーバーでの使用を考慮して設計されていません。

資料が役に立ったと思われる場合は、上記の回答に投票してください。

64

これら2つに共通していることのほとんどは、Javascriptベースであり、周囲を大々的に宣伝していることです(ただし、不当ではありません)。

node.jsは、JavaScript サーバーアプリケーションのフレームワークです。 Chrome用に開発されたV8 JavaScriptエンジンが含まれています。非同期でイベント駆動型であるため、多数の小さなリクエストに対応するのに最適です。

backbone.jsは、クライアント側のWebアプリケーション、特にいわゆる「単一ページWebアプリケーション」用のフレームワークであり、最初は1つのHTMLページのみがブラウザーに送信され、その後のすべての対話はAJAXリクエストと、ページを変換するJavaScriptロジック。

これは、2つが効果的に連携できることを意味します。フロントエンドにbackbone.jsを使用して実装されたアプリは、AJAXリクエストをnode.jsを使用してサーバーパーツで処理することができます。 JavaScriptのみを使用してWebアプリ全体を作成する。

11

Backbone.jsは、jQueryやYUIに似たjavascriptライブラリですが、さまざまなニーズに対応しています。

Node.jsはJavaScriptインタープリターであり、Internet Explorer、Firefox、またはSafariに似ていますが、さまざまなニーズに対応しています。

Backbone.jsについてはあまり知りませんが、通常のJavaScriptを使用しているため、Node.jsで使用できると思います。ただし、DOM関連のものについては、DOMエミュレーションレイヤーが必要になる場合があります。


追加の回答:

少しグーグルで見ると、Node.jsでBackboneを使用している人がいることがわかります。これの利点は、明らかに、同じフレームワークを使用して、クライアントとサーバーの両方でコードを再利用できることです。

参照: http://nerds.airbnb.com/weve-launched-our-first-nodejs-app-to-product


さらに追加の回答:

セマンティクスに関しては、一部の人々がコンピューティングにおけるいくつかの用語が何を意味するのかについて同意しないことがわかります。用語は大まかに使用されており、多少互換性がありますが、かなり明確に定義された意味があります。

一般に、インタープリターは実行可能ファイル、つまり、データを入力として受け取り、それをプログラムとして実行するプログラムです。 V8はこれではありません。それ自体でJavaScriptを取得して実行することはできません。 JavaScriptを実行するためには、別のプログラムであるインタープリターにコンパイルする必要があります。

V8にはインタープリターを構築するためのサンプルコードが付属しています。 V8に同梱されているそのインタープリターは、V8シェルと呼ばれます。

エンジンは、インタプリタを実装するライブラリです。これがまさにV8です。

「エンジン」の代わりに「インタプリタ」という単語を使用しても、ライブラリの実装内容を説明できるため、上記の2つの用語は多少互換性があります。しかし、Wordの使用法は、形容詞として使用されるという点で「MVCフレームワーク」または「UIツールキット」の使用法と似ています。したがって、「インタプリタ」は一種のライブラリであると言えます。

しかし、Wordはもともとプログラミング言語を実行するバイナリを意味するために使用されていました。この方法で使用すると、ファイルシステム上の何かを参照するため、名詞として使用されます。この方法は、「コンパイラ」の使用方法と似ています。たとえば、この意味でclangコンパイラを呼び出し、以前の意味でコンパイラであるllvmが使用するライブラリであるclangを呼び出します。

例として、JavaScriptではないものを見てみましょう。

  • tclはプログラミング言語です

  • tclは、tclのインタープリターを実装するライブラリでもあります。つまり、エンジンです。

  • tclshはtclインタープリターです

別の例を見てみましょう:

  • Rubyはプログラミング言語です

  • RubyCはRubyの多くのエンジンの1つです

  • RubyはRubyCを使用するインタープリターです

上記の2つの言語のバイナリ実行可能インタープリターを参照するとき、誰も「フレームワーク」という言葉を使用しません。それはばかげて聞こえるだけです。

しかし、言うまでもなく、Node.jsは単なるnode.exeだけではありません。優れたプログラムを作成するための優れた基盤として使用できる多くの追加機能を提供します。つまり、フレームワークです。

はい、そうです。このことは、node.exeを参照するWordの「インタプリタ」の使用を自動的に無効にするものではありません。地球を指すのに「地球」という言葉を使用するのと同じように、土を指すのにその言葉を使用することは自動的に無効にならない。

さらに、それらの追加機能はありますか? tclとRubyについても同様です。これはCにも当てはまります。Node.jsのfshttpなどの追加機能は、伝統的に標準ライブラリと呼ばれています。 Node.jsプロジェクトはそれを彼らの選択であるフレームワークと呼んでいます。インタプリタ+標準ライブラリをフレームワークと呼ぶ人はほとんどいません。たとえばPHPはNode.jsとまったく同じように配布され、非常に高水準の標準ライブラリがたくさんありますが、誰もPHPをフレームワークと呼ぶことはありません。フレームワークのためのフレームワークであるノードの上に実際のフレームワークを作成する場合も、少しばかげています。しかし、彼らがそれをそれと呼ぶことを選んだので、私は彼らが間違っているとは言いません。彼らが作成したものを説明するための単なる方法です。彼らにもっと力を。

私が言っているのは、node.jsはインタープリターではないと言う人は、コンピューティングの歴史を通じてWordの使用を無視しているということです。知りません。アジアの出身なので、すべてが複数のカテゴリーに属していると思い込むのは自然なことです。たぶん、私があまり理解していない特定のカテゴリに厳密に属しているというのは西洋的な考えかもしれません。

だからここに事実があります:

  1. Node.jsは単なるJavaScriptライブラリではありません。ノードに付属する標準ライブラリを使用するには、node.exeが必要です。

  2. 一方、Backbone.jsは標準のJavaScriptライブラリです。実行可能ファイルではありません。

  3. Node.jsは、インタープリター+ライブラリがこれまでフレームワークと呼ばれる唯一の例です。私がプログラミングで知っている他のすべてのフレームワークの例は、デザインパターンを実装するライブラリを参照しています。

  4. 「B」を呼び出しても、「A」の呼び出しが自動的に無効になるわけではありません。

最後に、Webブラウザには、JavaScript用の非常に大規模な高水準の標準ライブラリが付属しています。これはDOMと呼ばれます(MathやXMLHttpRequestなど、他にもたくさんありますが、DOMが最大です)。したがって、Internet ExplorerとFirefoxのJavaScriptフレームワークを呼び出す必要がありますが、だれもそれを行いません。

2
slebetman

どちらもJavaScriptに関連していますが、まったく異なります。

Nodeは、JDKやRubyなどのサーバーでJavaScriptコードを実行するためのインタープリター/プラットフォームです。簡単に言うと、サーバーでバックボーンベースのスクリプトを解釈するためにNodeJSをインストールする必要があります。

サーバー側のMVCに関しては、Geddy、RailwayJS、Expressなどが、Backboneよりも目的を果たしていると考えられています。

一方、バックボーンはクライアント側のチャンピオンMVCフレームワークです。

Node.js:

バックエンド側のJavascript。 (のように:php、Ruby on Rails、pythonなど)

Backbone.js:

フロントエンド側のJavascript(クライアントのブラウザーで実行中)backbone.jsもjqueryを使用します。クライアント側のJavaScriptのフレームワークは次のとおりです。1. mootools 2. ExtJS 3. dojo 4.プロトタイプなど...

0
IdanHen

Node.jsは、ネットワークアプリケーションを構築するために指定されたサーバー側プラットフォームです。これは、GoogleのV8 JavaScriptエンジン上に構築され、アプリケーションの構築に非同期のイベント駆動型アプローチを使用します。 Backbone.jsは、クライアント側のコードの作成と保守、およびMVCパターンへの準拠を容易にする、単純なJavaScriptクライアントライブラリです。したがって、それらを比較することはできません。

Backbone.jsには、同じ目標を達成するためにわずかに異なるアプローチを使用する多くの代替手段があります。最も知られているのは knockoutember.js などです。また、node.jsアプリケーションにプラグインすることもできます。

0
koss