初始Node.js路由提交

时间:2014-03-18 18:39:08

标签: node.js express

刚开始玩节点,并且在路由方面遇到一点麻烦,我查看了路由分离示例,但认为这对我的技能有点提升,所以我做了以下方式,有人建议以下代码

的index.html

<div class="container" id="test-container">
    <h1>Test</h1>
    <span id="test-error"></span>
      <form id="test-input2">
        <input type="text" id="test"></input>
      </form>
</div>

ui.js

$('#test-input').submit(function(e){
e.preventDefault();
socket.emit('route', null);
});

ui_backend.js

exports.listen = function(server){

    io = socketio.listen(server);
    io.set('log level', 2);
    io.sockets.on('connection', function(socket){
        route_testing(socket);
    });
}

function route_testing(socket){
    socket.on('route', function(req, res){
        res.render('test', function(err, html){

        });
    })
}

server.js

app.get('/test', function(req, res){
    res.sendfile(__dirname + '/views/test.html');
});

编辑:

问题在于我无法使路由工作。

2 个答案:

答案 0 :(得分:0)

建议:

您在server.js

中设置了一条路线
app.get("/test", routes.page("test"));

ui_backend.js

module.exports = function (view) {
  return function (req, res) {
    res.render(view + ".html", {
      page: view
    });
  };
};

res.render()就好了。 sendfile不是你想要的。

答案 1 :(得分:0)

function route_testing(socket){
    socket.on('route', function(req, res){
        res.render('test', function(err, html){

        });
    })
}

使用socket.on(message,callback),没有req,res参数。你正在混合express和socket.io api。

在套接字消息上,您需要发出另一个套接字消息。 socket.emit(message)

 socket.on('route', function(data){
            socket.emit(message,somedata);
        })

这里你基本上有一个服务器有2个不同的协议,websockets和经典的http。 socket.io api很清楚:http://socket.io/你不能组成一个不同的api并期望它能够工作。

app.get('/test', function(req, res){
    res.sendfile(__dirname + '/views/test.html');
});

将/views/test.html作为附件发送。你不想这样做,你想快递渲染一些html模板或页面:

 app.get('/test', function(req, res){
        res.render('test');
    });

应该使用默认的快速脚本开箱即用。

因此,当您想通过http查询时,请使用express api。

当您想通过websockets发送消息时,请使用socket.io api。