Javascript--通过闭包的方式解决模块之间的依赖方式

目前正在开发的公司项目是一个面向平台的项目,代码只有一套,有不同的服务入口来使用这套代码,今天在检查的代码的时候发现以前进行平台化改造的时候留下来的一些坑:

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

没怎么写博客,可能文章面板不太好看,请见谅!!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值