27

我感到有点困惑,Node.js 相关的“东西”有很多框架。有人能给我概述一下 Backbone.js 和 Node.js 之间有什么区别吗?哪个最好?提前致谢。

4

6 回答 6

65

我在这里从几个来源引用它:

首先,在这里引用堆栈溢出问题:

您列出的大多数内容只是因为它们是用 JavaScript 编写或以其他方式使用 JavaScript 才相关的。比较它们就像比较苹果和橘子一样。这就像问丰田凯美瑞和V6发动机有什么区别。它们是相关的,但做不同的事情。

节点

Node 也称为 Node.js,是我们运行服务器端 JavaScript 代码的 JavaScript 环境。它基于V8 JavaScript 引擎。您编写的所有 JavaScript 代码,或从 NPM、GitHub 等的包中安装和运行的所有 JavaScript 代码都由 Node 运行时环境执行。

骨干

Backbone可以比作 JavaScript 的模型-视图-控制器 框架。我相信它最初是为浏览器编写的;它通过实现最常见的 MVC 模式(以及其他一些东西)来帮助保持客户端 JavaScript 的整洁,从而使您可以更轻松地将客户端 JavaScript 连接到服务器端代码。

此外,这是来自Quora 上同一问题的答案。归功于德鲁哈里:

它们几乎完全不相关。传统上,Backbone.js 是一个客户端库,而 Node.js 是一种用 Javascript 编写服务器端应用程序的方法。Backbone 旨在成为一个模型 + 视图系统,用于将数据模型与 DOM 元素绑定在一起,这些元素在网页中直观地表示该模型。Backbone 还提供模型集合,以及一系列实用函数,用于将这些模型与其服务器端表示同步。

Node.js 只是与标准库打包在一起的 v8 Javascript 运行时环境,用于使用 Javascript 做有用的服务器端事情。有很多为 Node 设计的包(查看 npm 以了解轻松安装这些包的方法,包括 Backbone),这些包可以扩展它来做各种有趣的事情。可以将 Backbone.js 与 Node.js 一起使用,但 Backbone 的设计并不是专门为在服务器上使用而设计的。

如果您发现材料有帮助,请去投票以上答案。

于 2013-03-21T08:19:01.333 回答
11

几乎这两者唯一的共同点是它们都是基于 Javascript 的,并且围绕它们进行了大量的炒作(尽管不是不值得的)。

node.js 是 Javascript服务器应用程序的框架。它包括为 Chrome 开发的 V8 Javascript 引擎。它是异步和事件驱动的,因此非常适合处理大量小请求。

Backbone.js 是一个用于客户端 Web 应用程序的框架,专门用于所谓的“单页 Web 应用程序”,其中一开始只向浏览器发送一个 HTML 页面,之后的每次交互都由 AJAX 请求和 Javascript 处理转换页面的逻辑。

这意味着两者也可以有效地协同工作:使用backbone.js 为前端实现的应用程序可以使其AJAX 请求由使用node.js 的服务器部分处理——这是一种相当流行的组合,因为它允许您拥有一个完整的Web 应用程序仅使用 Javascript。

于 2013-03-21T08:18:46.143 回答
2

Backbone.js 是一个 javascript 库,类似于 jQuery 或 YUI,但满足不同的需求。

Node.js 是一个 javascript 解释器,类似于 Internet Explorer 或 Firefox 或 Safari,但满足不同的需求。

我对backbone.js 了解不多,但我相信您可以将它与Node.js 一起使用,因为它使用常规的javascript。不过,您可能需要一个 DOM 仿真层来处理与 DOM 相关的内容。


补充回答:

一些谷歌搜索表明有人在 Node.js 上使用 Backbone。这样做的好处显然是您将能够使用相同的框架并在客户端和服务器上重用代码。

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


更多附加答案:

关于语义,我看到有些人不同意计算中的某些术语的含义。虽然这些术语使用松散,而且它们在某种程度上可以互换,但它们确实具有相当明确的含义。

一般来说,解释器是一个可执行文件,即一个程序,它把一些数据作为输入并作为一个程序来执行。V8不是这个。它不能单独使用 javascript 并运行它。它需要被编译成另一个程序,一个解释器才能运行 javascript。

V8 确实附带了示例代码来构建解释器。V8 附带的解释器称为 V8-shell。

引擎是实现解释器的库。这正是 V8 的本质。

上面的两个术语在某种程度上可以互换,因为“解释器”这个词也可以有效地用来代替“引擎”来描述库实现的内容。但是这个词的用法类似于“MVC 框架”或“UI 工具包”的用法,因为它被用作形容词。所以说“解释器”是一种图书馆是正确的。

但这个词最初用于表示执行编程语言的二进制文件。当以这种方式使用时,将其用作名词,因为它指的是文件系统上的某些东西。使用这种方式类似于“编译器”的用法。例如,人们会clang在这种意义上调用编译器,而人们会在前一种意义上调用编译器llvm使用的库。clang

让我们以非 javascript 为例:

  • tcl 是一种编程语言

  • tcl 也是实现 tcl 解释器的库。换句话说,引擎。

  • tclsh 是 tcl 解释器

让我们看另一个例子:

  • ruby 是一种编程语言

  • RubyC 是 ruby​​ 的众多引擎之一

  • ruby 是使用 RubyC 的解释器

在提到上述两种语言的二进制可执行解释器时,没有人使用“框架”这个词。听起来很傻。

但是等你说,Node.js 不仅仅指 node.exe。它确实提供了许多附加功能,可以用作编写出色程序的良好基础。换句话说,一个框架。

嗯,是。这样做不会使使用“解释器”一词来指代 node.exe 自动无效。就像用“地球”这个词来指代地球并不会使用这个词来指代土壤自动失效。

此外,那些额外的功能?tcl 和 ruby​​ 也是如此。对于 C 语言也是如此。Node.js 上的那些额外功能fs传统http上称为标准库。虽然 Node.js 项目称它为他们选择的框架。几乎没有人将他们的解释器 + 标准库称为框架。例如,PHP 的分布与 Node.js 完全一样,带有一堆非常高级的标准库,但没有人会称 PHP 为框架。当人们在节点之上编写实际框架时也有点傻 - 框架的框架。但我不会说他们错了,因为他们选择这样称呼它。这只是他们描述他们创造的东西的方式。给他们更多的权力。

我要说的是,那些说 node.js 不是解释器的人忽略了整个计算历史中这个词的使用。我不知道。来自亚洲背景的我很自然地认为一切都属于多个类别。也许这是一个西方的想法,即事物严格属于我不太了解的特定类别。

所以这里是事实:

  1. Node.js 不仅仅是一个 JavaScript 库。您需要 node.exe 才能使用 node 附带的标准库。

  2. 另一方面,Backbone.js 是一个标准的 javascript 库。它不是可执行文件。

  3. 到目前为止,Node.js 是唯一将解释器 + 库称为框架的示例。我在编程中所知道的所有其他框架示例都是指实现设计模式的库。

  4. 称某物为“B”并不会自动使称其为“A”无效。

最后一件事:Web 浏览器还带有一个非常大的 javascript 高级标准库。它被称为 DOM(还有一堆其他的东西,比如 Math 和 XMLHttpRequest,但 DOM 是最大的)。因此,应该调用 Internet Explorer 和 Firefox javascript 框架,但没有人这样做。

于 2013-03-21T08:05:33.880 回答
1

节点.js:

后端的 Javascript。(如:php、ruby on rails、python 等)

骨干.js:

前端的 Javascript(在客户端的浏览器上运行)backbone.js 也使用 jquery,更多的客户端 javascript 框架是:1. mootools 2. ExtJS 3. dojo 4. 原型等等...

于 2013-03-21T08:15:44.170 回答
1

两者都与javascript相关,但完全不同。

Node 是一个解释器/平台,用于在 JDK 或 Ruby 等服务器中执行 javascript 代码。简单来说,您需要安装 NodeJS 来解释服务器上基于 Backbone 的脚本。

在服务器端 MVC 方面,Geddy、RailwayJS、Express 等被认为比 Backbone 更好地服务于目的。

而 Backbone 是客户端的冠军 MVC 框架。

于 2013-03-21T09:22:16.813 回答
0

Node.js 是一个专门用于构建网络应用程序的服务器端平台。它建立在 Google 的 V8 Javascript 引擎之上,并使用异步事件驱动的方法来构建应用程序。Backbone.js 是一个简单的 javascript 客户端库,可以更轻松地创建和维护客户端代码并符合 MVC 模式。因此,它们无法进行比较。

Backbone.js 有很多替代方案,它们使用稍微不同的方法来实现相同的目标。最知名的是:knockoutember.js等。它也可以插入到 node.js 应用程序中。

于 2013-03-21T08:19:44.090 回答