在Node.js中大家通常如何实现单例模式?
打算把数据库连接池单独封装成一个模块,连接池对象全局只有一个。感觉怎么写都挺别扭的,不知道大家通常怎么写?
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 都是之前的执行结果
明白了。查了一下手册,发现确实是这样……缓存机制哈~