Javascript 您如何构建、捆绑&;缩小ES6模块?

Javascript 您如何构建、捆绑&;缩小ES6模块?,javascript,bundle,minify,es6-modules,Javascript,Bundle,Minify,Es6 Modules,鉴于此,ES6模块(JavaScript模块)可用于测试: 我想知道,我应该如何缩小和准备项目发布文件?在前面,我已经将所有JavaScript文件捆绑到一个单一的和缩小的文件中,除了必须通过XHR或FetchAPI动态加载JS文件的情况 据我所知,现在用ES6模块准备一个小型文件是不可能的,或者可能是,我只是误解了一些工作方法 那么,有没有办法将我的ES6模块准备成单个文件,以及我应该如何准备2017年的现代JavaScript项目,在那里可以使用JavaScript模块?本博客解释了

鉴于此,ES6模块(JavaScript模块)可用于测试:

我想知道,我应该如何缩小和准备项目发布文件?在前面,我已经将所有JavaScript文件捆绑到一个单一的和缩小的文件中,除了必须通过XHR或FetchAPI动态加载JS文件的情况

据我所知,现在用ES6模块准备一个小型文件是不可能的,或者可能是,我只是误解了一些工作方法


那么,有没有办法将我的ES6模块准备成单个文件,以及我应该如何准备2017年的现代JavaScript项目,在那里可以使用JavaScript模块?

本博客解释了如何使用
ES6模块语法
,但仍然将代码捆绑到浏览器可以理解的东西中

该博客解释说,使用
SystemJs
作为
ES6模块polyfill
Babel
以及
Gulp
将使您能够在
ES6
中编写模块代码,但现在您仍然能够使用它

使用本指南将帮助您在ES6中编写代码,同时仍然具有构建、缩小和绑定代码的正常工作流程

请记住,有很多工具可以帮助您实现这一目标,但我已经多次使用此方法,我可以保证其有效性

我想知道,我应该如何缩小和准备项目发布文件

这就是这次行动的目的?好的,缩小的文件占用更少的网络流量,下载速度更快,但是大多数NPM库已经提供了缩小的
dist
-文件。和主要问题捆绑在一个大文件

为什么要这样做?当然,由于本机不支持浏览器中的ES模块,为什么webpack会以同步方式解析
import
语句和循环依赖项*,然后将其替换为IIFE以进行范围界定。并执行巴别塔翻译和填充,是的

但是当ES模块的本机支持启动时,它就变得毫无用处了。将web应用公开给生产环境时的主要目标之一是使用CDN缩小服务器的流量。现在您可以用本机的方式来完成,所以只需从
unpkg.org
导入ES模块,就可以了

*当然,如果不使用HMR,但它不适合于生产模式


这里的实例:

使用像Webpackarlier这样的绑定器,我已经将所有JavaScript文件绑定到一个单一的缩小文件中:为什么不能使用ES2015模块执行此操作?@SvenvandeScheur webpack是否与ES6模块本机协同工作?或者它只是用sourcemaps将JS代码翻译成ES5脚本?如果最后一个选项是正确的,那么对于2017年来说,这是一个相当古老的解决方案。如果web浏览器提供了使用ES6模块分离项目的新方法,为什么不找到以更愉快的方式使用现代功能的方法呢?另外,我一年前就用过这个网页了,老实说。。。这是一个相当丑陋的设计项目(对我来说)。@PeterMader可能是因为,他们在导入/导出方面有不同的范围。如果模块A是单个文件,您将如何从模块B加载模块A?Webpack允许您以最低配置捆绑ES6模块:例如,我知道这一点。但是,据我所知,它仍然引用了将源代码转换为ES5脚本的方法&本机模块不会以这种方式工作。它将只使用巴别塔翻译/源地图。这不是我想要的。我想知道模块的本地工作,以及在没有babel、webpack或其他翻译器的情况下缩小ES6模块的可能性…@Neverlands,正如您所说,ES6模块还不受支持,因此需要对ES5代码进行某种转换。但是,正如您所见,它很快就会得到支持。那又怎样?我对新的工作方式很感兴趣。我对通过babel、webpack和其他相关内容使用缩小/多填充的方式不感兴趣。Web浏览器提供了新的工作方式,我对此非常感兴趣,而不是我已经在使用的旧的准备方式。我相信ES2015模块的任意集合不能绑定到单个ES2015模块。由于ES2015模块的语义,即导入标识符的范围和解析,这根本不可能实现。只有使用root或entry模块才能实现这一点;结果是一个包含依赖项的模块,并且只公开根模块或条目模块的导出标识符。有没有一个捆绑机可以做到这一点?此外,您还可以将依赖关系树的其他部分捆绑到一个ES2015模块中。
但是,当ES模块的本机支持启动时,它就变得毫无用处了。
,我对这一行非常感兴趣,因为我一看到…@梦幻岛就添加了有关您问题的实时示例链接。(如果有用的话,别忘了提高投票率)很高兴提高投票率,但不能因为名声小而提高投票率。什么时候会达到所需的数量,我会更新投票。看看2020年的情况,有没有办法缩小这些文件?我正在尝试在没有npm包的情况下完成它。。。