【发布时间】:2016-05-06 07:02:29
【问题描述】:
我不熟悉 Javascript 和 node.js 的繁重工作。我一直在用 Web Audio Api 编写一些客户端的东西,所有的都是快速而肮脏/单片的实验,但现在我想做一些实际的项目。我不喜欢浏览器测试这件事,而且我听说很多人使用 node 进行测试,所以我也想做同样的事情,使用 grunt 进行自动化。这部分是为了让我可以将我的代码分解成许多可测试的小块,然后可以将它们收集成一两个大块并提供服务。
到目前为止,我只是将我的 javascript 拆分为文件并在 body 标记的底部按顺序导入它。 Obvs 这适用于小型客户端项目,但不可扩展。
我更习惯于使用几乎所有其他语言中的导入机制,以及 node.js 所具有的。但是,浏览器不知道 export 或 module.exports,一旦看到它就会呕吐。
我想到了两个明显的解决方案,但对我来说都觉得很臭......
1) 放出口 = module.exports = {};在每一页的头部。
2) 一起编译所有文件时查找并删除这些导出声明。
这些都不是好的解决方案。
在 JS 中制作模块化代码时,我应该了解哪些规范的解决方案/模式?如果没有,有没有人有一个适度优雅的?如果失败了,有没有人有一个不会太糟糕的人!?我应该学习RequireJS吗? ES6 模块会解决这个问题吗?如果是,我应该等待更好的支持吗?很抱歉一次问这么多问题,事实证明 JS 生态系统既令人兴奋又令人困惑!
【问题讨论】:
-
查找 Browserify。它允许您使用 CommonJS (
var thing = require('./thing.js')) 将代码编译到可以在浏览器中运行的单个文件中。 ES6 模块的目标是最终解决这个问题,是的。 -
我会研究 Babel 和 ES6。这是未来,AMD(以及所有的垫片)很可能会被淘汰。
标签: javascript node.js ecmascript-6