编写在浏览器和node.js中运行的模块化ECMAScript

Writing modular ECMAScript that runs in browsers AND in node.js

本文关键字:运行 模块化 ECMAScript js node 浏览器      更新时间:2023-09-26

我是Javascript和node.js中繁重工作的新手。我一直在用Web Audio Api编写一些客户端的东西,所有这些都是快速、肮脏/单片的实验,但现在我想做一些实际的项目。我不喜欢整个浏览器内测试,我听说很多人都使用node进行测试,所以我也想这样做,使用grunt进行自动化。这在一定程度上是为了让我可以将我的代码分解成许多漂亮的可测试的小块,然后这些小块可以收集成一两个大块并提供。

到目前为止,我只是将我的javascript拆分成多个文件,并在body标记的底部按顺序导入它。Obvs这适用于小型客户端项目,但不可扩展。

我更习惯的是导入机制,就像其他几乎所有语言一样,就像node.js一样。然而,浏览器不知道导出或模块。导出,一看到它就会弹出。

脑海中浮现出两个明显的解决方案,但对我来说都很臭…

1) Put exports=module.exports={};在每一页的首页。

2) 在一起编译所有文件时,查找并删除这些导出声明。

这两种方法都不是很好的解决方案。

对于在JS中制作模块化代码,有什么规范的解决方案/模式我应该知道吗?如果没有,有人有一个适度优雅的吗?如果做不到这一点,任何人都会有一个不太糟糕的!?我应该学习RequireJS吗?ES6模块能解决这个问题吗?如果能,我应该等待更好的支持吗?很抱歉一次问了这么多问题,JS生态系统既令人兴奋又令人困惑!

我一直很喜欢Kris Kowal等人在Q库中的表现——他在这段代码中的评论是无可挑剔的

https://github.com/kriskowal/q/blob/v1/q.js