我感到有些困惑,有很多框架可供Node.js相关的“东西”。有人能够给我一个概述 - 以下库/框架/如何相互关联/互动 - 包含什么或主要目的是什么? - 他们之间的差异
此外,如果还有其他我已经离开我的列表,请随时添加它们以及它们是什么以及它们如何适合的描述。
答案 0 :(得分:22)
您列出的大部分内容仅仅是因为它们是以书面形式使用或以其他方式使用JavaScript。比较它们就像比较苹果和橙子。这就像问丰田凯美瑞和V6发动机有什么区别。他们是相关的,但做不同的事情。
<强>节点强>
也称为Node.js,Node是我们运行服务器端JavaScript代码的JavaScript环境。它基于V8 JavaScript engine。您编写或从NPM,GitHub等包中安装和运行的所有JavaScript代码都由Node运行时环境执行。
<强>的CoffeeScript 强>
CoffeeScript简单明了,是一种编译成JavaScript的编程语言。其目的是以更简单的方式公开JavaScript的所有功能。重要的是要记住,所有CoffeeScript代码在运行时都会被编译为JavaScript;差异纯粹是语法上的。它的网站有更多的信息。
<强>骨干强>
Backbone可以比作JavaScript的Model-View-Controller框架。我相信它最初是为浏览器编写的;它通过实现最常见的MVC模式(以及其他一些东西)帮助保持客户端JavaScript的清洁,允许您将more easily connect客户端JavaScript转换为服务器端代码。
<强>快速强>
Express是基于Connect构建的Node.js的Web框架。对于Ruby来说,它在许多方面与Sinatra类似。它允许您轻松创建包含路由,布局/部分/视图,会话等的网站。 Express有很多第三方模块,很容易获得你需要的那种堆栈。
Node有很多模块;在撰写本文时,NPM已发布超过3,000个包,即使是最受欢迎的包也需要花费一些时间!每当你需要解决一个新问题时,一定要给NPM或module list page看看,以避免发明轮子(除非你想学习很多关于轮子的东西。)
答案 1 :(得分:4)
使用node.js,您只需选择一个框架。对于框架,一些流行的是
我只使用了express
,我可以保证这很棒。它有一个很棒的社区和很棒的支持。它也是我所知道的唯一一个正常工作并且说了很多的图书馆。
除此之外,节点社区使用优化模块解决一个问题,当他们需要解决问题时。框架应该处理处理HTTP请求的最小问题,express
解决了这个问题。
以下是package.json文件的除外。
"dependencies": {
// my framework, used to handle HTTP
"express": "2.4.4",
// a very specific validation module used for input validation
"validator": "0.2.7",
// dust a templating engine
"dust": "0.3.0",
// a uuid factory
"node-uuid": "1.2.0",
// a markdown parser
"marked": "0.0.4",
// a HTTP request library
"request": "2.0.3",
// a traits (OOP) library
"traits": "0.4.0",
// a file tree watcher
"watch": "0.3.2",
// a CSS abstraction
"less": "1.1.4",
// a flow control library
"after": "0.1.0",
// a utility to extend Buffer
"buffertools": "1.0.3"
},
"devDependencies": {
// a unit testing library
"vows-fluent": "0.1.0",
// a unit testing utility
"should": "0.2.1",
// hot code reloading
"nodemon": "0.5.3",
// debugger
"node-inspector": "0.1.9"
}
如您所见,我使用一个框架和一系列手动选择的实用程序库来解决一项任务。对于其他任务,我推出了自己的(上面列出的一些库是我自己的)。
例如,我曾经推荐backbone
作为一个可靠的MVC库,但它不适用于节点。所以我推出了自己的MVC抽象。我还习惯推荐cradle
作为一个可靠的CouchDB抽象但它泄露了,所以我下台并使用request
编写自己的数据库访问代码与CouchDB交谈。