Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.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 web应用程序吗?_Javascript_Webpack_Ecmascript 6_Module_Parceljs - Fatal编程技术网

我可以在没有绑定器的情况下构建生产JavaScript web应用程序吗?

我可以在没有绑定器的情况下构建生产JavaScript web应用程序吗?,javascript,webpack,ecmascript-6,module,parceljs,Javascript,Webpack,Ecmascript 6,Module,Parceljs,我最近深入了解了JavaScript模块化编程,包括JS模块系统、捆绑包和ES2015模块的一些历史。我现在了解了捆绑包商帮助/减轻的一些痛苦,例如: 网络延迟(更有效地缓存单个捆绑包、HTTP/1.0连接) 应用程序模块大小的性能限制(缩小、树抖动) ES2015不支持某些功能(裸进口) 以及与旧模块系统的向后兼容性(ES2015模块语法的演示) 但是,我想知道是否有可能在2020年创建一个生产JS web应用程序,它不使用像webpack或Parcel这样的捆绑包,而是使用ES2015模

我最近深入了解了JavaScript模块化编程,包括JS模块系统、捆绑包和ES2015模块的一些历史。我现在了解了捆绑包商帮助/减轻的一些痛苦,例如:

  • 网络延迟(更有效地缓存单个捆绑包、HTTP/1.0连接)
  • 应用程序模块大小的性能限制(缩小、树抖动)
  • ES2015不支持某些功能(裸进口)
  • 以及与旧模块系统的向后兼容性(ES2015模块语法的演示)

但是,我想知道是否有可能在2020年创建一个生产JS web应用程序,它不使用像webpack或Parcel这样的捆绑包,而是使用ES2015模块?需要注意的是,如果Babel这样的源代码到源代码编译器保留ES2015模块语法,那么它仍然可以使用。我并不是说我想这样做,但为了论证,有什么坏处呢?

在现代浏览器中运行时,客户端代码不必捆绑在一起,但是如果您要将代码设计成大量的小模块(为了开发效率和重用),如果不使用可以减少需要加载的单独文件数量的绑定器,那么加载将非常低效


如果您设计客户机JS文件以实现最佳模块化开发,而不是设计客户机JS文件以实现高效交付,那么bundler将是可取的,因为bundler可以在构建过程中将内容捆绑在一起以实现高效交付

“JSSDK的一部分”是一个术语和观点的问题,而不是事实,所以我不会对这个断言进行评论

当然,从一开始就可以设计客户端JS文件,以实现高效的客户端交付,而不必使用bundler(就像我们过去所做的那样),但您将无法为模块化开发设计文件布局。捆绑包可以让你实现这两个目标,这可能就是为什么它们如此流行的原因

但是,我想知道是否有可能在2020年创建一个生产JS web应用程序,它不使用像webpack或Parcel这样的捆绑包,而是使用ES2015模块

是的,如果您在支持
导入
导出
的浏览器中运行,则可以不使用捆绑程序

我并不是说我想这样做,但为了论证起见,有什么坏处呢


如上所述,您要么放弃高效的客户端加载,要么放弃理想的模块化设计,因为两者的设计参数相互冲突。

您指的是在浏览器中运行的Javascript,还是在node.js中在服务器上运行的Javascript,还是两者都有?任何服务器端代码都不需要绑定器。在现代浏览器中运行时,客户端代码不必绑定,但是如果您要将代码设计成大量的小模块(为了提高开发效率和重用),如果不使用可以减少需要加载的单独文件数量的绑定器,那么加载将非常低效。除此之外,我不知道您还想问些什么。@jfriend00是的,谢谢您的澄清,我指的是在浏览器中运行的JavaScript。我只是在阅读并添加了
import\uufrom'https://unpkg.com/lodash-es“
到my
index.html
查看网络请求瀑布。所以我的理解是,由于JS是一种通过HTTP交付的JIT编译语言,绑定器可以被视为“JSSDK”的一部分?至少在HTTP能够更高效地交付JS模块之前?如果您设计客户端JS文件以实现最佳的模块化开发,而不是设计客户端JS文件以实现高效交付,则需要一个绑定器。“JSSDK的一部分”是一个术语和观点的问题,而不是事实,所以我不会对这个断言进行评论。当然,从一开始就可以设计客户端JS文件,以实现高效的客户端交付,而不必使用bundler(就像我们过去所做的那样),但您将无法为模块化开发设计文件布局。捆绑程序允许您实现两个目标。@jfriend00“捆绑程序允许您实现两个目标”-谢谢,这很有意义。