如何在节点js中模块化代码

Sur*_*mma 1 javascript node.js

我是Node的新手.我已经完成了一个示例应用程序,我在一个文件server.js中完成了所有代码

var express = require('express'),
                nconf=require('nconf');
            var app = express()
            nconf.env().file({ file: 'db-config.json'});
            app.use(express.static(__dirname+"\\client"));
            var dbConfig = nconf.get();
            console.log();
            var mysql      = require('mysql');
            var connection = mysql.createConnection({
                        host: dbConfig.hostname,
                        port: dbConfig.port,
                        user: dbConfig.user,
                        password: dbConfig.password,
                        database: dbConfig.db
            });

            app.get('/', function (req, res) {
                 res.sendFile(__dirname+"\\client\\index.html");
            })
            app.get('/getTables', function (req, res) {
                     var sql="SELECT table_name as text from information_schema.tables where table_schema = ?";
                     connection.query(sql,[dbConfig.db],function(err,rows,fields){
                     if(!err){
                      var data={

                           "children":[]
                      };
                      for(var i=0;i<rows.length;i++){
                        rows[i].leaf=true;
                        data.children.push(rows[i]);
                      }
                       res.json(data);
                     }else{
                     console.log("db not connected");
                     }

                     });

            })
            var server = app.listen(3000, function () {

              var host = server.address().address
              var port = server.address().port

              console.log('Example app listening at http://%s:%s', host, port)

            })
Run Code Online (Sandbox Code Playgroud)

我想知道如何在一个文件中编写我的所有mysql配置代码,并在任何我想要的地方使用.我想在另一个fie中编写客户端响应.

Nic*_*lai 5

我记得有两种方法可以从其他模块导出方法或对象:

  1. module.exports
    使用:

//yourModule.js

function method1(){    
}
Run Code Online (Sandbox Code Playgroud)

要导出此功能,我们可以执行以下操作:

module.exports = method1;
Run Code Online (Sandbox Code Playgroud)

在这种情况下,当你将使用var myModule = require("./yourModule")- myModule将是method1,即调用它你只需要打电话myModule().

或者你可以出口像:

module.exports = { 
    method1: method1,
    method2: ...
}
Run Code Online (Sandbox Code Playgroud)

在这种情况下,当您使用上述情况中的require来调用函数时,您需要键入: myModule.method1();

  1. 第二种方式是直接使用:

exports.method1 = function (){}; exports.method2 = function (){}; exports.someObject = {};

这将是:

module.exports = { 
        method1: method1,
        method2: ...
    }
Run Code Online (Sandbox Code Playgroud)

参考

PS,因为你正在使用快递js我建议你输入控制台:npm install express-generator -g这将为你创建具有初始结构的模板项目.所有文件夹,如路线,视图,javascripts等.