javascript:将全局对象重构为 require() 模块
javascript: Refactor global objects to require() modules
我想使我们的 JavaScript 架构现代化——更重要的是,开始为我们的 JavaScript 代码编写单元测试。
我一直在拼凑来自不同 questions/blogs 的信息,并制定了一个初步计划。但是,我真的不确定我是否在正确的轨道上。
计划:
- 将组件重构为导出模块而不是全局对象。
- 创建一个入口点 (index.js?) requires() 所有 files/components.
- 用户 Browserify 创建我的浏览器兼容的静态文件(回到全局)。
- 使用 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 文件。
我想使我们的 JavaScript 架构现代化——更重要的是,开始为我们的 JavaScript 代码编写单元测试。
我一直在拼凑来自不同 questions/blogs 的信息,并制定了一个初步计划。但是,我真的不确定我是否在正确的轨道上。
计划:
- 将组件重构为导出模块而不是全局对象。
- 创建一个入口点 (index.js?) requires() 所有 files/components.
- 用户 Browserify 创建我的浏览器兼容的静态文件(回到全局)。
- 使用 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 文件。