如何在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不是一个函数