node.js / Express / Connect / Socket.io 的关系

3
我有点糊涂了。我主要的问题是,什么时候使用纯Node.js,什么时候应该使用像"express"或"connect"这样的框架/MVC。
我知道"express"只是在"connect"上添加了一堆功能,但它真正擅长的是什么?假设我想让所有的HTTP请求都针对一个"Apache"服务器进行处理,并且只用node.js来做一些部分工作(如WebSocket连接、CouchDB等)。
在这种情况下,使用"express"或"connect"是否有意义?
据我所知,Socket.IO也可以作为备选方案处理HTTP请求,那么仅使用Socket.IO是否就足够满足这些需求?
还有什么其他优势可以使用Express/Connect吗?
2个回答

5
Express(或Connect)是用于HTTP Web应用程序的应用程序框架。它是您的应用程序入口点。它提供了一些非常常见的功能,例如:
  • HTTP服务器
  • URL路由
  • 请求参数
  • 会话

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

如果您只想通过SocketIO实现发布/订阅服务,而不需要任何页面或其他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);
    });
});

如果你想在一个更复杂的应用程序中使用Socket.io,为页面和API提供服务,你可以(必须?)将其与Express集成(参见 如何使用)。

0

嗨,我已经使用Expressjs有一段时间了,发现它默认提供的Jade模板引擎特别有用。Jade是一种新的模板语言,虽然我承认需要花费一些时间来熟悉它,但它非常有用。您可以编写条件、混合、将变量传递给页面、使用局部等。这使得客户端html变得非常容易。此外,Expressjs设置了您的视图、javascript、样式表目录结构... 如果正确遵循,捕获响应和呈现HTML页面只需要几行代码。如上所述,http中间件实现起来更容易...


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接