3

我很困惑。我的主要问题是,何时使用纯 node.js,何时使用框架/MVC,如“express”或“connect”。

我知道“express”只是为“connect”添加了一堆功能,但它到底有什么用呢?可以说,我希望我的所有 HTTP 内容都针对“Apache”服务器,并且只使用 node.js 做一些部分内容(如 WebSocket 连接、CouchDB 等)。

在这种情况下出于某种原因使用“express”或“connect”是否有意义?

据我所知,Socket.IO 还处理 HTTP 请求作为后备,那么使用 Socket.IO 来满足这些需求就足够了吗?

使用 Express/Connect 的最大优势是什么?

4

2 回答 2

5

Express(或 Connect)是 HTTP Web 应用程序的应用程序框架。它是您的应用程序的入口点。它提供了一些非常常见的功能,例如:

  • HTTP 服务器
  • 网址路由
  • 请求参数
  • 会话

它还允许轻松使用其他功能(它们称为中间件),例如身份验证处理、模板。

如果你只是想通过 SocketIO 实现一个 pub/sub 服务,没有任何页面或其他 API,只需使用 Socket.io 库(S.io 主页示例):

var io = require('socket.io').listen(80);

io.sockets.on('connection', function (socket) {
    socket.emit('news', { hello: 'world' });
    socket.on('my other event', function (data) {
        console.log(data);
    });
});

如果您想在更复杂的应用程序、服务页面和 API 中使用 Socket.io,您可以(必须?)将其与 Express 集成(请参阅如何使用

于 2012-04-16T13:40:39.830 回答
0

Hi I have been using Expressjs for some time now and find it particularly useful for the Jade templating engine it provides by default. Jade is a new templating language and though I admit it takes some time to get familiar with it, its pretty useful. You can write conditionals, mixins, pass variables to your pages, use partials etc. It just makes client side html really easy. Also expressjs sets up your view, javascript, stylesheets directory structure... If followed properly catching responses and rendering html pages are a matter of couple of line of codes. As discussed above, the http middlewear is a lot easier to implement..

于 2012-04-16T16:01:32.417 回答