如何在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") }) 

但为什么不工作…请帮助我..上面的代码,但这个代码不起作用..

在节点中导出类时,需要首先定义类,然后使用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(); 

test.js是无效的语法 – 你不应该把你的整个文件用大括号括起来。 module.exports只是你设置的variables; 如果要导出bar ,请将其设置为bar

 class bar { ... } module.exports = bar; 

此外,您需要在app.js分配您的require调用的结果。

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

(在一个稍微迂回的笔记 – 这是更加地道的captialize您的类名!)

你好@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") }) 

作为错误:TypeError:bar.name不是一个函数