在Node.js中大家通常如何实现单例模式?
发布于 10 年前 作者 friskit-china 13271 次浏览 最后一次编辑是 8 年前

打算把数据库连接池单独封装成一个模块,连接池对象全局只有一个。感觉怎么写都挺别扭的,不知道大家通常怎么写?

var mysql = require('mysql');
var pool = undefined;
module.exports.getPool  = function(){
    if (pool == undefined){
        pool = mysql.createPool({
            host     : 'localhost',
            user     : 'root',
            password : 'root'
        });
    }
    return pool;
}

这么写会不会导致每次require(‘xxx’).pool的时候都会创造一个连接池对象…… 这个pool变量的作用域是哪里啊?

4 回复

require('xxx').pool 应该是 undefined 把

直接这么用肯定是undefine。关键是我不清楚pool在模块内部的作用域是各模块之间共享?还是每次require之后都复制出一份来?

模块在首次 require 时执行代码,之后的 require 都是之前的执行结果

明白了。查了一下手册,发现确实是这样……缓存机制哈~

回到顶部