Javascript Babel和Browserify/网页混乱

Javascript Babel和Browserify/网页混乱,javascript,ecmascript-6,Javascript,Ecmascript 6,快速提问。我对ES2015(ES6)有点困惑 假设我使用Babel编译为ES6 Javascript,以兼容当前浏览器的ES5 通过使用Babel,ES6中已经提供了导入/导出功能。那么,如果我只是简单地使用它们来捆绑我的模块,而ES6可以为我做的话,为什么我需要类似于Browserify或Webpack的东西呢 无论我走到哪里,我都能看到人们将Babel与Browserify或Webpack结合使用。虽然我知道Webpack之类的东西可以用于更多用途,但我想知道是否也可以使用ES6语法捆绑文件

快速提问。我对ES2015(ES6)有点困惑

假设我使用Babel编译为ES6 Javascript,以兼容当前浏览器的ES5

通过使用Babel,ES6中已经提供了导入/导出功能。那么,如果我只是简单地使用它们来捆绑我的模块,而ES6可以为我做的话,为什么我需要类似于BrowserifyWebpack的东西呢

无论我走到哪里,我都能看到人们将Babel与Browserify或Webpack结合使用。虽然我知道Webpack之类的东西可以用于更多用途,但我想知道是否也可以使用ES6语法捆绑文件

我可能完全错了,我可能在2016年的Javascript丛林中迷失了方向,所以我希望有人能为我澄清这一点

编辑


我是否正确地假设本机ES6导入/导出功能根本不捆绑文件?从我到目前为止所读到的内容来看,我认为您仍然需要包含所有单独的Javascript文件,但是您只需要使用本机导入功能将模块导入到彼此的名称空间中

是的,使用babel将您的ES6导入传输到ES5将起作用


然而,使用webpack的一个优点是创建一个静态文件,以便在生产环境中提供

Pre-ES6没有本机模块系统,因此有多个用用户代码构建的系统(例如CommonJS/Node模块和AMD)。这些就是Babel将ES6模块语法转换为的内容(是的,您是正确的,ES6模块语法没有本机捆绑故事)。浏览器对这些用户区API一无所知。节点通过在一个函数中包装一个“模块”来实现其模块系统,该函数在浏览器中注入
require()
等。在浏览器中
require()
将只是一个引用错误。Browserify(或其他绑定器)使其在浏览器中工作,并将整个依赖关系图绑定到单个脚本中。因此,如果代码是针对浏览器的,您可能会希望捆绑它。如果是针对节点,则可能不需要

导入/导出功能

不是函数,不是声明

如果我只是简单地使用它们来捆绑我的模块,ES6什么时候可以帮我呢

我想知道是否也可以使用ES6语法捆绑文件

我是否正确地假设本机ES6导入/导出功能根本不捆绑文件

对。没有绑定ES6模块的本机方法。您可以将ES6模块语法传输到类似节点模块的东西上,并将它们捆绑起来

从我到目前为止所读到的内容来看,我认为您仍然需要包含所有单独的Javascript文件,但是您只需要使用本机导入功能将模块导入到彼此的名称空间中

重要的是要认识到,虽然语法是标准化的,但很多行为都不是。有一个加载程序规范正在开发中,用于指定模块的实际定位和加载方式


另请参见。

那么本机ES6导入导出功能是如何工作的呢?据我所知,它的功能类似于bundler,它将一个模块导入到一个Javascript文件中,允许我访问导出的值。另一个答案被删除了,我现在完全糊涂了。