mar*_*tin 95 javascript node.js
我正在为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));
}
};
Run Code Online (Sandbox Code Playgroud)
然后在这个过程中我会实例化它:
var server = net.createServer(function (socket) {
/* other bugs */
var user = new User(socket);
/* more bugs and bad practise */
});
Run Code Online (Sandbox Code Playgroud)
我可以将我的User
类定义移动到另一个javascript文件并以某种方式"包含"它吗?
Pau*_*kin 165
甚至你可以简单地做到这一点
user.js的
class User {
//...
}
module.exports = User
Run Code Online (Sandbox Code Playgroud)
server.js
const User = require('./user.js')
// Instantiate User:
let user = new User()
Run Code Online (Sandbox Code Playgroud)
PS并且不要使用全局变量.它会在未来产生潜在的冲突.
yed*_*yak 13
使用ES6,您可以user.js
:
export default class User {
constructor() {
...
}
}
Run Code Online (Sandbox Code Playgroud)
然后使用它 server.js
const User = require('./user.js').default;
const user = new User();
Run Code Online (Sandbox Code Playgroud)
将您的类定义修改为如下所示:
exports.User = function (socket) {
...
};
Run Code Online (Sandbox Code Playgroud)
然后将文件重命名为user.js
.假设它位于主脚本的根目录中,您可以像这样包含它:
var user = require('./user');
var someUser = new user.User();
Run Code Online (Sandbox Code Playgroud)
这是快速而肮脏的版本.如果您想了解更多信息,请阅读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;
}
}
Run Code Online (Sandbox Code Playgroud)
并包括相同的
var TEST= require('./TEST');
var test = new TEST(1);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
103558 次 |
最近记录: |