我感到有些困惑,有很多框架可供Node.js相关的“东西”。有人能够概述Backbone.js和Node.js之间有什么区别吗?哪个最好?提前致谢。
答案 0 :(得分:64)
我在这里引用了几个来源:
首先,引用堆栈溢出问题here:
您列出的大部分内容仅与之相关 用JavaScript编写或以其他方式使用JavaScript。比较它们很像 比较苹果和橘子。这就像问问有什么不同 在丰田凯美瑞和V6发动机之间。它们是相关的,但确实如此 不同的事情。
<强>节点强>
也称为Node.js,Node是我们的JavaScript环境 运行我们的服务器端JavaScript代码。它基于V8 JavaScript engine。您编写或安装并运行的所有JavaScript代码 来自NPM,GitHub等的包由Node运行时执行 环境。
<强>骨干强>
Backbone可以比作Model-View-Controller JavaScript框架。我相信它最初是为了写的 浏览器;它有助于保持客户端JavaScript的清洁 实现最常见的MVC模式(以及其他一些模式) 事情),让您更轻松地连接您的客户端 JavaScript到您的服务器端代码。
此外,这是来自Quora上相同question的答案。归功于Drew Harry:
他们几乎完全无关。传统上,Backbone.js是一个 客户端库和Node.js是一种编写服务器端应用程序的方法 在Javascript中。 Backbone旨在成为一个用于绑定的模型+视图系统 带有DOM元素的数据模型,可以直观地表示该模型 网页。 Backbone还提供模型集合,以及 一堆实用函数,用于将这些模型与它们同步 服务器端表示。
Node.js只是一个打包的v8 Javascript运行时环境 标准库用Javascript做有用的服务器端事情。 有很多为Node设计的软件包(请查看npm的方法 轻松安装那些扩展它的软件包,包括Backbone 做各种有趣的事情。可以使用Backbone.js 与Node.js,但Backbone没有特别设计与使用 记住服务器。
如果您觉得这些材料有用,请进行上述回答。
答案 1 :(得分:11)
这两者的共同之处在于它们是基于Javascript的并且围绕它们进行了很多宣传(尽管不是不值得的)。
node.js是Javascript 服务器应用程序的框架。它包括为Chrome开发的V8 Javascript引擎。它是异步和事件驱动的,因此非常适合提供大量小请求。
backbone.js是客户端Web应用程序的框架,专门用于所谓的“单页面Web应用程序”,其中一开始只向浏览器发送一个HTML页面,之后的每个交互都由AJAX处理请求和转换页面的Javascript逻辑。
这意味着两者也可以有效地协同工作:使用backbone.js为前端实现的应用程序可以使用node.js由服务器部分处理其AJAX请求 - 这是一种相当流行的组合,因为它允许您拥有整个网络应用程序仅使用Javascript。
答案 2 :(得分: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的原因。
上述两个术语在某种程度上是可以互换的,因为单词&#34; interpreter&#34;也可以有效地代替&#34;引擎&#34;描述库实现的内容。但是这个词的使用类似于&#34; MVC框架&#34;或者&#34; UI工具包&#34;因为它被用作形容词。所以说一个&#34;翻译&#34;是正确的。是一种图书馆。
但这个词最初用于表示执行编程语言的二进制文件。当以这种方式使用时,将其用作名词,因为它指的是文件系统上的某些东西。使用这种方式类似于&#34;编译器&#34;的用法。例如,在这种意义上,人们会调用clang
编译器,并且会调用llvm
,clang
使用的库,这是前面意义上的编译器。
让我们看一下不是javascript的东西:
tcl是一种编程语言
tcl也是为tcl实现解释器的库。换句话说就是引擎。
tclsh是tcl解释器
让我们来看看另一个例子:
ruby是一种编程语言
RubyC是ruby的众多引擎之一
ruby是使用RubyC的解释器
没有人使用&#34;框架&#34;当引用上述两种语言的二进制可执行解释器时。这听起来很傻。
但是等你说,Node.js不仅仅指node.exe。它真正提供了许多附加功能,可以作为编写优秀程序的良好基础。换句话说就是一个框架。
嗯,是的。这是真的并没有使用&#34;解释器&#34;引用node.exe自动无效。就像使用&#34; earth&#34;这个词一样引用行星不会使用这个词来指土壤自动无效。
此外,那些额外的功能?对于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是目前为止将解释器+库称为框架的唯一示例。我在编程中知道的所有其他框架示例都是指实现设计模式的库。
拨打电话&#34; B&#34;不自动调用它&#34; A&#34;无效。
最后一件事:网络浏览器还附带了一个非常大的javascript高级标准库。它被称为DOM(还有一些像Math和XMLHttpRequest这样的其他东西,但DOM是最大的)。因此,应该调用Internet Explorer和Firefox javascript框架,但没有人这样做。
答案 3 :(得分:1)
两者都是javascript相关但完全不同。
Node是在服务器(如JDK或Ruby)中执行javascript代码的解释器/平台。简单来说,您需要安装NodeJS来解释服务器上基于Backbone的脚本。
当谈到服务器端MVC。,Geddy,RailwayJS,Express等时,被认为比Backbone更好地服务于目的。
Backbone是客户端的冠军MVC框架。
答案 4 :(得分:0)
Node.js:
后端方面的Javascript。 (比如:php,ruby on rails,python等)
Backbone.js:
前端的Javascript(在客户端的浏览器上运行) backbone.js也使用jquery,更多客户端的javascript框架是: mootools 2. ExtJS 道场 原型 还有更多...
答案 5 :(得分:0)