javascript:重构全局对象以require()模块
我想现代化我们的JavaScript架构 – 更重要的是,开始为我们的JavaScript代码编写unit testing。
我一直在从不同的问题/博客拼凑信息,并制定了一个试验性的计划。 但是,我真的不确定我是否正确。
计划:
- 将组件重构为导出的模块而不是全局对象。
- 创build一个需要()所有文件/组件的单个入口点(index.js?)。
- 用户Browserify创build我的浏览器兼容的静态文件(回到全球)。
- 使用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文件的传递闭包。