跳到主要内容
CNode

在Node.js中大家通常如何实现单例模式?

社区
Ffriskit-china发布于 12 年前最后回复 12 年前
4139420

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

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)

F
friskit-china#412 年前
引用 dotnil模块在首次 require 时执行代码,之后的 require 都是之前的执行结果

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

D
dotnil#312 年前

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

F
friskit-china#212 年前
引用 dotnilrequire('xxx').pool 应该是 undefined 把

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

D
dotnil#112 年前

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

参与回复

登录后即可参与回复。登录