在Node.js中包含来自另一个文件的Javascript类定义
我正在为Node.js编写一个简单的服务器,并使用我自己的类User ,它看起来像: 
 function User(socket) { this.socket = socket; this.nickname = null; /* ... just the typical source code like functions, variables and bugs ... */ this.write = function(object) { this.socket.write(JSON.stringify(object)); } }; 
然后在这个过程中我实例化了很多:
 var server = net.createServer(function (socket) { /* other bugs */ var user = new User(socket); /* more bugs and bad practise */ }); 
 我可以将我的User类定义移动到另一个JavaScript文件,并以某种方式“包含”它? 
甚至你可以简单地做到这一点
user.js的
 'use strict'; class User { //... }; module.exports = User; 
server.js
 'use strict'; const User = require('./user.js'); // Instantiate User: let user = new User(); 
PS并且不要使用全局variables。 它会在未来造成潜在的冲突。
修改你的类的定义如下所示:
 exports.User = function (socket) { ... }; 
 然后将该文件重命名为user.js 假设它位于主脚本的根目录下,可以像这样包含它: 
 var user = require('./user'); var someUser = new user.User(); 
这是快速和肮脏的版本。 如果您想了解更多信息,请阅读CommonJS模块 。
除了这里提供的ES6的另一种方法
 module.exports = class TEST{ constructor(size) { this.map = new MAp(); this.size = size; } get(key) { return this.map.get(key); } length() { return this.map.size; } } 
和包括一样
 var TEST= require('./TEST'); var test = new TEST(1); 
 使用ES6,你可以有user.js : 
 export default class User { constructor() { ... } } 
 然后在server.js使用它 
 const User = require('./user.js').default; const user = new User(); 
 如果你追加到user.js : 
 exports.User = User; 
 那么在server.js你可以这样做: 
 var userFile = require('./user.js'); var User = userFile.User; 
http://nodejs.org/docs/v0.4.10/api/globals.html#require
另一种方法是:
 global.User = User; 
 那么server.js就足够了: 
 require('./user.js');