私は少し混乱していると感じています。Node.js関連の「もの」のためのフレームワークがたくさんあります。誰かがBackbone.jsとNode.jsの違いの概要を教えてもらえますか?そして、どれが最高ですか?前もって感謝します。
6 に答える
私はここでいくつかの情報源からそれを引用しています:
まず、ここでスタックオーバーフローの質問から引用します:
あなたがリストしたもののほとんどは、JavaScriptで書かれているか、そうでなければJavaScriptを使用しているという理由だけで関連しています。それらを比較することは、リンゴをオレンジと比較することによく似ています。それは、トヨタカムリとV6エンジンの違いを尋ねるようなものです。それらは関連していますが、異なることをします。
ノード
Node.jsとも呼ばれるNodeは、サーバー側のJavaScriptコードを実行するJavaScript環境です。これは、 V8JavaScriptエンジンに基づいています。NPM、GitHubなどのパッケージから作成またはインストールして実行するすべてのJavaScriptコードは、Nodeランタイム環境によって実行されます。
背骨
バックボーンは 、JavaScriptのModel-View-Controllerフレームワークに例えることができます。もともとはブラウザ用に書かれたものだと思います。最も一般的なMVCパターン(およびその他のいくつかのパターン)を実装することで、クライアント側のJavaScriptをクリーンに保ち、クライアント側のJavaScriptをサーバー側のコードに簡単に接続できるようにします。
また、これはQuoraに関する同じ質問への回答からのものです。クレジットはDrewHarryに送られます。
それらはほとんど完全に無関係です。従来、Backbone.jsはクライアントライブラリであり、Node.jsはJavascriptでサーバー側アプリケーションを作成する方法です。Backboneは、Webページでそのモデルを視覚的に表すDOM要素を使用してデータモデルをバインドするためのモデル+ビューシステムを目指しています。Backboneは、モデルのコレクションと、それらのモデルをサーバー側の表現と同期するための一連のユーティリティ関数も提供します。
Node.jsは、Javascriptでサーバー側の便利な処理を実行するための標準ライブラリがパッケージ化されたv8Javascriptランタイム環境です。Node用に設計されたパッケージがたくさんあり(バックボーンを含め、これらのパッケージを簡単にインストールする方法についてはnpmをチェックしてください)、Nodeを拡張してあらゆる種類の興味深いことを実行します。Node.jsでBackbone.jsを使用することは可能ですが、Backboneはサーバーでの使用を念頭に置いて特別に設計されたものではありません。
資料が役に立った場合は、上記の回答に賛成票を投じてください。
これらの2つに共通しているのは、Javascriptベースであり、周囲に多くの誇大宣伝があることだけです(ただし、当然のことではありません)。
node.jsは、Javascriptサーバーアプリケーションのフレームワークです。Chrome用に開発されたV8Javascriptエンジンが含まれています。非同期でイベント駆動型であるため、多数の小さなリクエストを処理するのに理想的です。
backbone.jsは、クライアント側のWebアプリケーション、特に最初に単一のHTMLページのみがブラウザーに送信され、その後のすべての対話がAJAX要求とJavascriptによって処理されるいわゆる「単一ページWebアプリケーション」のフレームワークです。ページを変換するロジック。
つまり、この2つは効果的に連携することもできます。フロントエンドにbackbone.jsを使用して実装されたアプリでは、node.jsを使用してサーバー部分でAJAXリクエストを処理できます。これは、ウェブアプリ全体を使用できるため、かなり人気のある組み合わせです。 Javascriptのみを使用します。
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つの用語は、ライブラリの実装を説明するために「エンジン」の代わりに「インタプリタ」という単語を有効に使用できるため、多少互換性があります。ただし、この単語の使用法は、形容詞として使用されるという点で「MVCフレームワーク」または「UIツールキット」の使用法と似ています。したがって、「インタプリタ」は一種の図書館であると言うのは正しいことです。
しかし、この単語は元々、プログラミング言語を実行するバイナリを意味するために使用されていました。このように使用すると、ファイルシステム上の何かを指すため、名詞として使用されます。このように使用されるのは、「コンパイラ」の使用法と似ています。たとえばclang
、この意味でコンパイラを呼び出しllvm
、前の意味でコンパイラを呼び出す、によって使用されるライブラリを呼び出しclang
ます。
例として、JavaScriptではないものを見てみましょう。
tclはプログラミング言語です
tclは、tclのインタープリターを実装するライブラリーでもあります。言い換えれば、エンジン。
tclshはtclインタープリターです
別の例を見てみましょう。
ルビーはプログラミング言語です
RubyCはruby用の多くのエンジンの1つです
rubyはRubyCを使用するインタプリタです
上記の2つの言語のバイナリ実行可能インタープリターを指すときに、「フレームワーク」という言葉を使用する人は誰もいません。それはばかげているように聞こえます。
しかし、あなたが言うのを待ってください、Node.jsは単なるnode.exe以上のものを指します。それは本当に素晴らしいプログラムを書くための良い基盤として使用できるたくさんの追加機能を提供します。言い換えれば、フレームワークです。
はい、そうです。それが真実であるからといって、node.exeを参照するための「インタプリタ」という単語の使用が自動的に無効になるわけではありません。「地球」という言葉を使って惑星を指すのと同じように、この言葉を使って土壌を指すことは自動的に無効になりません。
その上、それらの追加機能?これはtclとrubyにも当てはまります。これはCにも当てはまります。Node.jsのような追加機能はfs
、http
伝統的に標準ライブラリと呼ばれています。Node.jsプロジェクトはそれをフレームワークと呼んでいますが、それは彼らの選択です。インタプリタ+標準ライブラリをフレームワークと呼ぶ人はほとんどいません。たとえば、PHPはNode.jsとまったく同じように配布され、非常に高レベルの標準ライブラリが多数含まれていますが、PHPをフレームワークと呼ぶ人は誰もいません。また、ノードの上に実際のフレームワーク(フレームワークのフレームワーク)を作成するのも少しばかげています。しかし、彼らがそれをそう呼ぶことを選んだので、私は彼らが間違っていると言うつもりはありません。それは彼らが作成したものを説明するための彼らの方法にすぎません。彼らにもっと力を。
私が言っているのは、node.jsはインタープリターではないと言う人々は、コンピューティングの歴史を通してその単語の使用法を無視しているということです。知らない。アジアのバックグラウンドから来ているので、すべてが複数のカテゴリに属していると考えるのは自然なことです。たぶん、物事は私が完全には得られない特定のカテゴリーに厳密に属しているというのは西洋の考えです。
だからここに事実があります:
Node.jsは単なるjavascriptライブラリではありません。ノードに付属している標準ライブラリを使用するには、node.exeが必要です。
一方、Backbone.jsは標準のjavascriptライブラリです。実行可能ファイルではありません。
Node.jsは、これまでインタプリタ+ライブラリがフレームワークと呼ばれている唯一の例です。プログラミングで私が知っているフレームワークの他のすべての例は、デザインパターンを実装するライブラリを参照しています。
何かを「B」と呼んでも、自動的に「A」と呼んでも無効になるわけではありません。
最後に、Webブラウザにはjavascript用の非常に大規模な高レベルの標準ライブラリも付属しています。これはDOMと呼ばれます(MathやXMLHttpRequestのような他のものもたくさんありますが、DOMが最大です)。したがって、InternetExplorerとFirefoxのjavascriptフレームワークを呼び出す必要がありますが、誰もそれを行いません。
Node.js:
バックエンド側のJavascript。(例:php、ruby on rails、pythonなど)
Backbone.js:
フロントエンド側のJavascript(クライアントのブラウザーで実行)backbone.jsもjqueryを使用し、クライアント側のjavascriptのフレームワークは次のとおりです。1。mootools 2. ExtJS 3.dojo4.プロトタイプなど...
どちらもJavaScriptに関連していますが、まったく異なります。
ノードは、JDKやRubyなどのサーバーでJavaScriptコードを実行するためのインタープリター/プラットフォームです。簡単に言うと、サーバー上のバックボーンベースのスクリプトを解釈するためにNodeJSをインストールする必要があります。
サーバーサイドMVCに関しては、Geddy、RailwayJS、Expressなど、Backboneよりも目的を果たしていると考えられています。
一方、Backboneはクライアント側のチャンピオンMVCフレームワークです。
Node.jsは、ネットワークアプリケーションを構築するために指定されたサーバー側のプラットフォームです。これは、GoogleのV8 Javascriptエンジン上に構築されており、アプリケーションを構築するために非同期のイベント駆動型アプローチを使用しています。Backbone.jsは、クライアント側のコードの作成と保守、およびMVCパターンへの準拠を容易にする単純なJavaScriptクライアントライブラリです。したがって、それらを比較することはできません。
Backbone.jsには、同じ目標を達成するためにわずかに異なるアプローチを使用する多くの選択肢があります。最もよく知られているのは、 knockout、ember.jsなどです。また、node.jsアプリケーションにプラグインすることもできます。