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

javascript: Refactor global objects to require() modules

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

我一直在拼凑来自不同 questions/blogs 的信息,并制定了一个初步计划。但是,我真的不确定我是否在正确的轨道上。

计划:

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

重构:

全局对象:

// 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 dependencies/modules 的现代标准?

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

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

间接需要其他文件。

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

Browserify 将 assemble 传递关闭所有 require()d 文件。