什么'需要('./ app/routes.js')(app);' 意味着在这个节点服务器示例?

ave*_*oes 6 javascript node.js

Server.js

    // set up ======================================================================
    var express = require('express');
    var app = express();                        // create our app w/ express
    var mongoose = require('mongoose');                 // mongoose for mongodb
    var port = process.env.PORT || 8080;                // set the port
    var database = require('./config/database');            // load the database config
    var morgan = require('morgan');
    var bodyParser = require('body-parser');
    var methodOverride = require('method-override');

    // configuration ===============================================================
    mongoose.connect(database.localUrl);    // Connect to local MongoDB instance. A remoteUrl is also available (modulus.io)

    app.use(express.static('./public'));        // set the static files location /public/img will be /img for users
    app.use(morgan('dev')); // log every request to the console
    app.use(bodyParser.urlencoded({'extended': 'true'})); // parse application/x-www-form-urlencoded
    app.use(bodyParser.json()); // parse application/json
    app.use(bodyParser.json({type: 'application/vnd.api+json'})); // parse application/vnd.api+json as json
    app.use(methodOverride('X-HTTP-Method-Override')); // override with the X-HTTP-Method-Override header in the request


    // routes ======================================================================
    require('./app/routes.js')(app);

    // listen (start app with node server.js) ======================================
    app.listen(port);
    console.log("App listening on port " + port);
Run Code Online (Sandbox Code Playgroud)

我理解大部分代码.但我从未见过这个:

要求(" ./应用程序/ routes.js')(应用程序);

我知道我们正在加载我们的路线,但为什么我们传递(app)就好像它是一个函数参数?为什么这是必要的,如果我删除会发生什么?

Luk*_*itz 8

它只是意味着require('./app/routes.js')返回一个函数.然后,您可以使用另一组parantheses调用此函数.

它基本上与以下相同:

var func = require('./app/routes.js');
func(app);
Run Code Online (Sandbox Code Playgroud)