【发布时间】:2017-07-10 18:05:10
【问题描述】:
我想现代化我们的 JavaScript 架构——更重要的是,开始为我们的 JavaScript 代码编写单元测试。
我一直在将来自不同问题/博客的信息拼凑在一起,并制定了一个暂定计划。但是,我真的不确定我是否走在正确的轨道上。
计划:
- 将组件重构为导出模块而不是全局对象。
- 创建一个需要()所有文件/组件的单一入口点 (index.js?)。
- 使用 Browserify 创建与浏览器兼容的静态文件(返回全局)。
- 使用 node、mocha 和 chai,运行 npm test 来执行引用可导出组件的测试。
重构:
全局对象:
// 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())。
【问题讨论】:
-
您的
index.js应该只需要核心入口点(如顶级组件)。将间接需要其他文件。 -
这很有意义,感谢您指出这一点。作为使用 require() 的新手,我什至没有意识到我可以依靠组件来煮沸所有东西。谢谢x1000
标签: javascript node.js dependency-injection browserify