如何在NODE JS中的一个server.js文件中运行不同的.js文件?

时间:2016-01-21 10:18:15

标签: javascript node.js

这是demo.js文件,我想在server.js文件中使用这个文件,以便我可以在一个服务器文件中使用不同的js文件。

Demo.js:

    app.get('/add User', function (req, res) {
    var MongoClient = mongodb.MongoClient;
    var url = 'mongodb://localhost:27017/project';
    MongoClient.connect(url, function (err, db) {
             var collection = db.collection('users');
            collection.find({name: 'shruti'}).toArray(function (err, result) {
                console.log(, result);
                    db.close();
        });

Server.js:

    var a = require('./demo.js');
    vr http=require("http");

    var server = http.createServer(function(request, response) {
      response.writeHead(200, {"Content-Type": "text/html"});
      response.write(a);
      res.end();});
    server.listen(7860);

2 个答案:

答案 0 :(得分:1)

可能的样本如下:

<强> demo.js

var myModule = {
  defineRoutes: function(router){
    //do something...
  }
}

module.exports = myModule;

<强> server.js

var myModule = require('demo.js');
myModule.defineRoutes(router);

答案 1 :(得分:0)

如上所述,您需要导出。 当你这样做时:

var item = require("mymodule");

要求返回一个对象,该对象是该给定文件的module.exports值的引用 - 在您的情况下为 demo.js。

您可以通过一些人向您展示的方式编写模块。因为它是封装的,所以你基本上都在识别什么是公共的或可以被调用的。几乎没有办法写它 - 你也可以这样做:

module.exports = {
  yourCall: function () {
     console.log("stuff here");
  }
};

正如@ishann所说,谁在这里死了,你正在写一些你认为可能会被填充的东西。转到数据库并返回是一个异步调用 - 所以这需要时间去做,然后返回结果。

根据您的结构 - 理想情况下您要做的是分配路径(“/ addUser”),它将传递响应对象给您:

app.get('/add User', function (req, res) {
var MongoClient = mongodb.MongoClient;
var url = 'mongodb://localhost:27017/project';
MongoClient.connect(url, function (err, db) {
         var collection = db.collection('users');
        collection.find({name: 'shruti'}).toArray(function (err, result) {
            console.log(, result);
                db.close(); 
                 // set the type
                 res.writeHead(200, {"Content-Type": "application/json"});
                 res.write(result);

    });

看起来您的代码需要一些重组,但是分离的问题很好。您可能还想查看Express as a framework节点。