javascript:将全局对象重构为require()模块

时间:2017-07-10 18:05:11

标签: javascript node.js dependency-injection browserify

我希望现代化我们的JavaScript架构 - 更重要的是,开始为我们的JavaScript代码编写单元测试。

我一直在从不同的问题/博客中拼凑信息,并制定了一个暂定的计划。但是,我真的不确定我是否走在正确的轨道上。

计划:

  1. 将组件重构为导出的模块而不是全局对象。
  2. 创建一个需要()所有文件/组件的入口点(index.js?)。
  3. 用户浏览器创建与浏览器兼容的静态文件(返回全局)。
  4. 使用node,mocha和& chai,运行 npm test 来执行引用可导出组件的测试。
  5. 重构:

    全球对象:

    // myProject.js
    // --------------------
    var MyProject = {};
    
    // component1.js
    // --------------------
    myProject.component1 = {};
    

    到require()模块:

    // myProject.js
    // --------------------
    var component1 = require('./component1');
    modules.export = { component1 };
    
    // component1.js
    // --------------------
    var component1 = {};
    modules.exports = component1;
    

    问题:

    如果项目使用全局对象命名空间组件,我如何重构这些JavaScript文件以导出将在节点中工作的模块?上述计划是否遵循JavaScript依赖关系/模块的现代标准?

    我主要担心的是我的index.js(或主条目)文件将成为维护噩梦(将每个新文件添加为require())。

1 个答案:

答案 0 :(得分:1)

您的index.js应该只需要核心入口点(如顶级组件)。

间接需要其他文件。

因此,您不应该有任何所有文件的巨型列表;每个文件应该只需要它直接使用的东西。

Browserify将汇编所有require()d文件的传递闭包。