模块出口.node . js

Module exports. Node.js

本文关键字:js node 出口 模块      更新时间:2023-09-26

我是Node.js的新手,我有一些问题。我正在实现简单的聊天应用程序,为了做到这一点,我使用ExpressJS + Nodejs + socket。io包。这是我的userservice .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;

是否可以导出对象实例?或者我应该让所有的方法都是静态的,就像下面的代码:

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;

如果它只是一个服务,你不需要使用this或其他东西,你可以省略类行为,只导出一个对象。

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);
        });
    }
};

Node.js开发者不喜欢把东西放到全局作用域。下面是我的示例:

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

然后在主文件中:

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

你可以在你的UserService中这样做。

export default UserService;

然后

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