我无法遵循节点初学者书中的以下代码片段



app.jsserver.js and router.js 是 3 个文件

应用.js

var server = require('./server');
var router = require('./router'); //here we are requiring the module
server.start(router.route);

服务器.js

var http = require("http");
var url = require("url");
function  start(route){
    function onRequest(request, response) {
        var pathname = url.parse(request.url);
        console.log("request for " + pathname + " recieved");
                            //in this line we are using route function  
        route(pathname);    //which is in router.js 
                            //why are we not requiring the module ie     require('./router')
        response.writeHead(200, {"Content-Type": "text/plain"});
        response.write("Hello World");
        response.end();
    }
    http.createServer(onRequest).listen(8080);
    console.log("Server has started.");
}
exports.start = start;

路由器.js

function route(pathname){
    console.log("About to route a request for "+pathname);
}
exports.route = route;

为什么我们不需要路由器.js在服务器.js文件中(require('./router');

如您所见,服务器.js不需要 routes.js 文件,因为它作为函数 start on server.js 的参数传递。

话虽如此,我在您的代码中看到一个错误,服务器上的启动函数.js应该有一个"路由"参数。

然后,当您实例化您的应用程序.js时,您需要两者,但是当您调用 start 并发送该参数时,之后您不需要再次导入路由.js因为它已经作为引用存在。

让我知道这是否回答了你的问题。

最好达里奥

为什么我们不需要路由器.js在服务器.js文件中

因为没有必要。 server.js不需要router模块来做任何事情。

app.js中的代码调用serverstart传入路由信息作为参数。但是start不接受任何参数,因此它不会将该参数用于任何内容。也许在本教程的后面,他们将开始使用路由信息。

但关键是server.js不需要require它,因为它接收它(或在代码更新时的某个时候接收它)作为参数来start

最新更新