Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 编写在浏览器和node.js中运行的模块化ECMAScript_Javascript_Node.js_Ecmascript 6 - Fatal编程技术网

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

Javascript 编写在浏览器和node.js中运行的模块化ECMAScript,javascript,node.js,ecmascript-6,Javascript,Node.js,Ecmascript 6,我不熟悉Javascript和node.js中的繁重工作。我一直在用Web Audio Api编写一些客户端的东西,所有这些都是快速的、肮脏的/单片的实验,但现在我想做一些实际的项目。我不喜欢在浏览器中进行测试,我听说很多人使用node进行测试,所以我也希望这样做,使用grunt实现自动化。这在一定程度上是为了让我可以将我的代码分解成许多很好的小的可测试块,然后这些块可以被收集成一个或两个大的块并提供服务 到目前为止,我只是将javascript拆分成文件,并在body标记的底部按顺序导入。Ob

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

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

我更喜欢的是一种导入机制,类似于几乎所有其他语言中的导入机制,以及node.js的导入机制。但是,浏览器不知道导出或module.exports,一看到它就会呕吐

两个显而易见的解决方案浮现在脑海中,但对我来说都很难闻

1) Put exports=module.exports={};在每一页的开头

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

这些都不是好的解决方案


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

我一直很喜欢Kris Kowal等人在Q库中所做的工作——他在那部分代码中的评论是无可挑剔的


查看浏览列表。它允许您使用CommonJS(
var thing=require('./thing.js')
)将代码编译到一个可以在浏览器中运行的文件中。ES6模块的目标是最终解决这个问题,是的。我会研究Babel和ES6。这是未来,AMD(以及它的所有垫片)很可能会被淘汰。这做得很好。理想情况下,我希望避免在我制作的每个模块中添加几十行样板文件,但我想,就目前的情况而言,这是一个更好的选择。