困惑于所有的Node JS框架/库等等

我感觉有点困惑,Node.js中有这么多框架。 有人能够给我一个概述 – 下面的库/框架/相关/彼此之间的相互作用 – 包括什么,或者每个人的主要目的是什么? – 他们之间的差异

另外,如果还有其他人,我已经把我的名单放在了一边,随意添加他们,并说明他们是什么以及他们是如何适应的。

  • 节点
  • CoffeeScript的
  • 骨干
  • performance

你列出的大部分东西只是因为它们是用JavaScript编写的或者使用JavaScript而相关的。 比较它们就像比较苹果和橙子。 这就像问丰田凯美瑞和V6发动机有什么不同。 他们是相关的,但做不同的事情。

节点

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

CoffeeScript的

CoffeeScript是简单而简单的编程语言,可编译成JavaScript。 其目的是以更简单的方式公开JavaScript的所有function。 请记住,所有CoffeeScript代码在运行时都会被编译为JavaScript,这一点很重要。 差异纯粹是句法。 它的网站有更多的信息。

骨干

骨干可以被比作JavaScript的Model-View-Controller框架。 我相信它最初是为浏览器编写的, 它通过实现大多数常见的MVC模式(以及其他一些事情)来帮助保持客户端JavaScript的清洁,使您可以更轻松地将客户端JavaScript 连接到服务器端代码。

performance

Express是构build在Connect上的Node.js的Web框架。 在许多方面与Sinatra for Ruby相似。 它允许您轻松创build路由,布局/部分/视图,会话等网站。 Express有很多第三方模块,因此可以很容易地获得所需的堆栈types。


Node有很多模块, 截至撰写本文时, NPM已经发布了3000多个软件包,即使是最受欢迎的软件包也需要花费一些时间! 每当你需要解决一个新的问题,以避免发明车轮(除非你想了解很多关于车轮的信息),一定要给NPM或模块列表页面看一看。

使用node.js你只需要select一个框架 。 对于框架,一些stream行的是

  • 连接一个中间件组件来pipe理HTTP请求
  • express连接时build立一个视图引擎和路由器。
  • SocketStream Node.js的快速实时Web框架
  • zappa不是你妈妈的节点框架
  • 蚱蜢一个MVC框架
  • geddy一个Web框架
  • spludo另一个MVC框架

我只用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" } 

正如您所看到的,我使用一个框架和一系列手工select的实用程序库来解决一个任务。 对于我自己推出的其他任务(上面列出的一些库是我自己的)。

例如,我曾经推荐backbone作为一个坚实的MVC库,但它不适用于节点。 所以我推出了自己的MVC抽象。 我也曾经推荐cradle作为一个坚实的CouchDB抽象,但它泄漏,所以我走下来,写我自己的数据库访问代码使用request与CouchDB交谈。