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

我想现代化我们的JavaScript架构 – 更重要的是,开始为我们的JavaScript代码编写unit testing。

我一直在从不同的问题/博客拼凑信息,并制定了一个试验性的计划。 但是,我真的不确定我是否正确。

计划:

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

重构:

全局对象:

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

要求()模块:

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

问题:

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

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

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

其他文件将被间接要求。

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

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