如何在node.js中要求一个类

时间:2016-11-03 14:20:01

标签: node.js

我的代码有效..

var express=require("express"),
app=express();

class bar {
   constructor()
   {
     this.user_name=null;
     this.user_surname=null;
     this.user_age=null;
   }

   name(user_name) {
     this.user_name=user_name;
     return this;
   }

   surname(user_surname) {
     this.user_surname=user_surname;
     return this;
   }

   age(user_age) {
     this.user_age=user_age;
     return this;
   }

   get(callback) {

     var list ={};

     list.uname=this.user_name;
     list.usurname=this.user_surname;
     list.uage=this.user_age;

     callback(list);
   }

}



app.get("/liste/:ext",function(req,res){

  var ext=req.params.ext;

  res.setHeader('Content-Type', 'application/json');

  if(ext==1)
  {
    var newbar=new bar();
    newbar.name("alex").surname("broox").age(32).get(function(result){
      res.json({data:result})
    })

  }

  if(ext==2)
  {
    var newbar=new bar();
    newbar.name("alex2").get(function(result){
      res.json({data:result})
    })
  }

})

app.listen(4000,function(log){
  console.log("listening")
})

但是..以下代码不起作用..要求来自其他文件的类..

test.js

module.exports = {

class bar {
   constructor()
   {
     this.user_name=null;
     this.user_surname=null;
     this.user_age=null;
   }

   name(user_name) {
     this.user_name=user_name;
     return this;
   }

   surname(user_surname) {
     this.user_surname=user_surname;
     return this;
   }

   age(user_age) {
     this.user_age=user_age;
     return this;
   }

   get(callback) {

     var list ={};

     list.uname=this.user_name;
     list.usurname=this.user_surname;
     list.uage=this.user_age;

     callback(list);
   }

}

};

app.js文件..要求该类

var express=require("express"),
app=express();


require("./test")



app.get("/liste/:ext",function(req,res){

  var ext=req.params.ext;

  res.setHeader('Content-Type', 'application/json');

  if(ext==1)
  {
    var newbar=new bar();
    newbar.name("alex").surname("broox").age(32).get(function(result){
      res.json({data:result})
    })

  }

  if(ext==2)
  {
    newbar.name("alex2").get(function(result){
      res.json({data:result})
    })
  }

})

app.listen(4000,function(log){
  console.log("listening")
})

但为什么它不起作用...请帮助我..上面的代码可行,但这段代码不起作用..

3 个答案:

答案 0 :(得分:12)

在节点中导出类时,首先需要定义类,然后使用module.exports导出类,后跟要导出的类的名称。

class bar {
       constructor()
       {
         this.user_name=null;
         this.user_surname=null;
         this.user_age=null;
       }

       name(user_name) {
         this.user_name=user_name;
         return this;
       }

       surname(user_surname) {
         this.user_surname=user_surname;
         return this;
       }

       age(user_age) {
         this.user_age=user_age;
         return this;
       }

       get(callback) {

         var list ={};

         list.uname=this.user_name;
         list.usurname=this.user_surname;
         list.uage=this.user_age;

         callback(list);
       }
}
       module.exports = bar

从那里你只需要require该文件就可以抓住这个类。

var Bar = require('./test');
var bar = new Bar();

答案 1 :(得分:1)

test.js不是有效的语法 - 您不应该将整个文件包裹在这样的大括号中。 module.exports只是您设置的变量;如果您要导出bar,请将其设置为bar

class bar {
   ...
}

module.exports = bar;

此外,您需要在require中分配app.js来电的结果。

var bar = require("./test");

(略带迂腐的说明 - 将你的班级名字限制为更加惯用!)

答案 2 :(得分:0)

再次问好@DominicValenciana

test.js

class bar {
   constructor()
   {
     this.user_name=null;
     this.user_surname=null;
     this.user_age=null;
   }

   name(user_name) {
     this.user_name=user_name;
     return this;
   }

   surname(user_surname) {
     this.user_surname=user_surname;
     return this;
   }

   age(user_age) {
     this.user_age=user_age;
     return this;
   }

   get(callback) {

     var list ={};

     list.uname=this.user_name;
     list.usurname=this.user_surname;
     list.uage=this.user_age;

     callback(list);
   }

}

module.exports = bar;

app.js

var express=require("express"),
app=express();


app.get("/liste/:ext",function(req,res){

  var ext=req.params.ext;

  res.setHeader('Content-Type', 'application/json');

  if(ext==1)
  {
    var bar=new require('./test');
    bar.name("alex").surname("broox").age(32).get(function(result){
      res.json({data:result})
    })

  }

  if(ext==2)
  {
    var bar=new require('./test');
    bar.name("alex2").get(function(result){
      res.json({data:result})
    })
  }

})

app.listen(4000,function(log){
  console.log("listening")
})

as error:TypeError:bar.name不是函数