开发者社区 问答 正文

如果代码以多文件形式组织,并且希望文件之间能够相互引用,同时文件内的变量相互隔离,应该如何设计?

如果代码以多文件形式组织,并且希望文件之间能够相互引用,同时文件内的变量相互隔离,应该如何设计?

展开
收起
萝卜丝丸子 2024-08-13 20:47:50 46 分享 版权
1 条回答
写回答
取消 提交回答
  • 如果代码以多文件形式组织,并且希望文件之间能够相互引用,同时文件内的变量相互隔离,可以通过以下方式设计:image.png
    1.变量隔离:将每个文件的内容转换成一个闭包(Immediately Invoked Function Expression, IIFE),这样每个文件内的变量就只会存在于各自的闭包之内,互不影响。
    例如,对于文件 a.js:

    (function() { 
    const a = 1; 
    const b = 2; 
    
    function sum() { 
    return a + b; 
    } 
    
    sum(); 
    })();
    

    2.文件引用:定义一种接口规则,如通过全局变量 module 来管理文件之间的引用。每个文件编译后,将导出的变量或函数存储在 module 对象上,键为文件名。
    导出示例(a.js 编译后):

    (function() { 
    __filename = 'a.js'; 
    const a = 1; 
    var mod = {}; 
    mod.a = a; 
    module[__filename] = mod; 
    })();导入示例(b.js 编译后):(function() { 
    __filename = 'b.js'; 
    var $$a = module['a.js']; 
    // 假设 a.js 实际上导出了一个函数而不是变量 a 
    $$a.someFunction(); // 注意这里应该是调用函数,而不是变量 
    var mod = {}; 
    module[__filename] = mod; 
    })();
    
    2024-08-13 21:50:54
    赞同 2 展开评论
问答地址: