热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

是webpack模块加载器还是捆绑器?

如何解决《是webpack模块加载器还是捆绑器?》经验,为你挑选了1个好方法。

我有点像webpack.我发现webpack的一些地方是bundler意味着它只是创建了bundle.js文件.在某些地方,我发现webpack也充当模块加载器.它正在加载导入或要求es5语法没有任何加载器.如果webpack解析导入并需要Javascript语法,那么babel和babel loader需要什么?



1> Michael Jung..:

Webpack是一个模块捆绑器,但这不仅仅需要将文件放在一起.来自webpack - 概念:

webpack是现代Javascript应用程序的模块捆绑器.当webpack处理您的应用程序时,它会递归地构建一个包含应用程序所需的每个模块的依赖关系图,然后将所有这些模块打包成少量的 - 通常只有一个 - 由浏览器加载.

捆绑应用程序时,webpack需要弄清楚该捆绑包中必须包含的内容.Javascript中使用了不同类型的模块API,因此webpack使用它们来确定正在使用哪些模块(请参阅模块API -支持的API的方法).最着名的是CommonJS,这是Node.js使用的(require).

webpack的一大优点是它可以在浏览器中运行(因此称为web包).问题是浏览器不支持CommonJS(require不存在),这意味着您无法使用丰富的Node生态系统.为了使其工作,webpack将转换任何导入语法,包括它们所引用的所需源.

巴别塔做什么?该巴贝尔网站说:

Babel是一个Javascript编译器.
今天使用下一代Javascript.

Javascript不断发展,新功能正在添加到该语言中.问题是浏览器需要一些时间来实现这些功能,并且功能需要达到一定的成熟度,因为一旦它们符合规范,您就无法再显着地删除或更改它们.ECMAScript功能的TC39流程解释了包含新功能的过程.

这就是Babel的用武之地.它允许您在任何浏览器开始实现它们之前使用这些功能(其中一些功能甚至可能不符合规范).Babel将这些功能转换为语义上等效的代码,可以在今天的Javascript引擎中运行.除了import/之外export,还有很多功能,Babel可以用于(例如ECMAScript的Object Rest/Spread Properties),特别是如果你想支持更旧(但仍然使用)的浏览器版本.

从webpack 2开始,ES模块开箱即用,它们不需要由Babel进行转换,你应该将它们留给webpack,因为它可以实现Tree Shaking.如果要使用尚不支持的Javascript功能,则需要对其babel-loader进行转换.为了澄清,加载器是将给定输入文件转换为有效Javascript的模块,可以由webpack使用(只要您有一个处理它的加载器,这可以是任何东西,例如css-loader允许您导入CSS文件).装载程序特定于webpack,但Babel是一个独立的工具,广泛用于webpack之外,并babel-loader通过使用Babel引擎盖并将其以预期的形式提供给webpack来组合它们.你可以先通过运行Babel然后在生成的文件上运行webpack来单独使用它们,但是加载器可以弥补差距,从而提供更好的开发体验.


推荐阅读
  • Webpack5内置处理图片资源的配置方法
    本文介绍了在Webpack5中处理图片资源的配置方法。在Webpack4中,我们需要使用file-loader和url-loader来处理图片资源,但是在Webpack5中,这两个Loader的功能已经被内置到Webpack中,我们只需要简单配置即可实现图片资源的处理。本文还介绍了一些常用的配置方法,如匹配不同类型的图片文件、设置输出路径等。通过本文的学习,读者可以快速掌握Webpack5处理图片资源的方法。 ... [详细]
  • 如何使用Java获取服务器硬件信息和磁盘负载率
    本文介绍了使用Java编程语言获取服务器硬件信息和磁盘负载率的方法。首先在远程服务器上搭建一个支持服务端语言的HTTP服务,并获取服务器的磁盘信息,并将结果输出。然后在本地使用JS编写一个AJAX脚本,远程请求服务端的程序,得到结果并展示给用户。其中还介绍了如何提取硬盘序列号的方法。 ... [详细]
  • 导出功能protectedvoidbtnExport(objectsender,EventArgse){用来打开下载窗口stringfileName中 ... [详细]
  • 本文记录了在vue cli 3.x中移除console的一些采坑经验,通过使用uglifyjs-webpack-plugin插件,在vue.config.js中进行相关配置,包括设置minimizer、UglifyJsPlugin和compress等参数,最终成功移除了console。同时,还包括了一些可能出现的报错情况和解决方法。 ... [详细]
  • 本文介绍了如何使用vue-awesome-swiper组件,包括在main.js中引入和使用swiper和swiperSlide组件,以及设置options和ref属性。同时还介绍了如何在模板中使用swiper和swiperSlide组件,并展示了如何通过循环渲染swipes数组中的数据,并使用picUrl属性显示图片。最后还介绍了如何添加分页器。 ... [详细]
  • JavaScript简介及语言特点
    本文介绍了JavaScript的起源和发展历程,以及其在前端验证和服务器端开发中的应用。同时,还介绍了ECMAScript标准、DOM对象和BOM对象的作用及特点。最后,对JavaScript作为解释型语言和编译型语言的区别进行了说明。 ... [详细]
  • node.jsrequire和ES6导入导出的区别原 ... [详细]
  • node.jsurlsearchparamsAPI哎哎哎 ... [详细]
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • 本文介绍了在使用vue和webpack进行异步组件按需加载时可能出现的报错问题,并提供了解决方法。同时还解答了关于局部注册组件和v-if指令的相关问题。 ... [详细]
  • 本文介绍了在wepy中运用小顺序页面受权的计划,包含了用户点击作废后的从新受权计划。 ... [详细]
  • uniapp开发H5解决跨域问题的两种代理方法
    本文介绍了uniapp开发H5解决跨域问题的两种代理方法,分别是在manifest.json文件和vue.config.js文件中设置代理。通过设置代理根域名和配置路径别名,可以实现H5页面的跨域访问。同时还介绍了如何开启内网穿透,让外网的人可以访问到本地调试的H5页面。 ... [详细]
  • 如何用JNI技术调用Java接口以及提高Java性能的详解
    本文介绍了如何使用JNI技术调用Java接口,并详细解析了如何通过JNI技术提高Java的性能。同时还讨论了JNI调用Java的private方法、Java开发中使用JNI技术的情况以及使用Java的JNI技术调用C++时的运行效率问题。文章还介绍了JNIEnv类型的使用方法,包括创建Java对象、调用Java对象的方法、获取Java对象的属性等操作。 ... [详细]
author-avatar
自娱自乐GoGo
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有