目前正在开发的公司项目是一个面向平台的项目,代码只有一套,有不同的服务入口来使用这套代码,今天在检查的代码的时候发现以前进行平台化改造的时候留下来的一些坑:
module.js
var config = required("config_beta");//这里被写死了 module.exports = { consoleLog:function(){ console.log(config.path); } }
config_beta.js是一个配置文件,里面放了一些资源路径、端口等信息,每个服务入口都有自己的配置文件,比如:server_beta.js对应config_beta.js、server.js对应config.js。目前module.js已经不能满足面向平台的需求,因为config被写死。
思考了许久,终于想了一个解决方案:
module.js
module.exports = function(config){ return { consoleLog:function(){ console.log(config.path); } } }
server_beta.js
let config = require("config_beta"); let module = require("module")(config);
server.js
let config = require("config"); let module = require("module")(config);
做到这里的时候,突然想到写模块的时候可以不用去引用其他模块了,直接在服务启动文件里面声明好,然后通过传参的方式共享给模块进行调用,稍微改造一下:
module.js
module.exports = function(options){//参数为一个可扩展的json,以前吃过的亏 try{ let config = options.config; let util = options.util; return { consoleLog:function(){ console.log(config.path,util.formatTime(Date.now(),"YYYY-MM-DD hh:mm:ss")); } } }catch(e){ throw e; } }
server.js
let config = require("config"); let util = require("util"); let module = require("module")({config:config,util:util});
没怎么写博客,可能文章面板不太好看,请见谅!!!