Javascript 模块导出。Node.js

Javascript 模块导出。Node.js,javascript,node.js,Javascript,Node.js,我是Node.js的新手,我有一些疑问。我正在实现简单的聊天应用程序,为了实现这一点,我使用了ExpressJS+Nodejs+Sockert.io捆绑包。 这是我的UserServive.js var db = require('../db') class UserService { findUserByNick(nick, callback) { let userCollection = db.get('usercollection') userC

我是Node.js的新手,我有一些疑问。我正在实现简单的聊天应用程序,为了实现这一点,我使用了ExpressJS+Nodejs+Sockert.io捆绑包。 这是我的UserServive.js

var db = require('../db')

class UserService {

    findUserByNick(nick, callback) {
        let userCollection = db.get('usercollection')
        userCollection.findOne({username: nick}, (error, data) => {
            callback(error, data);
        });
    }

    findUserByEmail(email, callback) {
        let userCollection = db.get('usercollection')
        userCollection.findOne({email: nick}, (error, data) => {
            callback(error, data);
        });
    }
}

var us = new UserService();
module.exports = us;
导出对象实例是否可以接受?或者我应该将所有Methid设置为静态,如下代码所示:

class tokens_controller extends require('./controller_utils') {
    static check_token(token_data, callback) {
        if (this.validator(token_data, valid_templates.tokens.check_token, callback)) {
            this.get_token_info(token_data.access_token, (get_token_info_err, get_token_info_result)=> {
                TOKENS_MODEL.update({token: token_data.access_token}, (update_error, update_result)=> {
                    console.log(update_result);
                    if (update_error) {
                        callback(update_error, null);
                    }
                    else {
                        USERS_MODEL.find_users({
                            find: [{user_id: update_result.user_id}],
                            nots: ['password']
                        }, (find_users_error, find_users_result)=> {
                            if (find_users_error) {
                                callback(find_users_error, null);
                            }
                            else {
                                let user = find_users_result[0];
                                let result = {user: user, token: update_result};
                                callback(null, result);
                            }

                        });
                    }
                });
            }, callback);

        }
    }
}
module.exports = tokens_controller;

如果它只是一个服务,而您不需要使用
这个
或其他东西,那么您可以忽略类行为,只导出一个对象

var db = require('../db')

module.exports = {

    findUserByNick: function(nick, callback) {
        let userCollection = db.get('usercollection')
        userCollection.findOne({username: nick}, (error, data) => {
            callback(error, data);
        });
    },

    findUserByEmail: function(email, callback) {
        let userCollection = db.get('usercollection')
        userCollection.findOne({email: nick}, (error, data) => {
            callback(error, data);
        });
    }
};

js开发者不喜欢把东西放在全局范围内。例如,我是这样做的:

module.exports = function() {
    class MyClass {
        // Stuff
    }

    return MyClass;
}
然后在主文件中:

const MyClass = require("./MyClass.js")();

实际上,您可以在UserService中执行这些操作

export default UserService;
然后

import UserService from './userService';
new UserService()