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

Webpack与Babel配置详解及优化策略

Webpack与Babel的配置详解及优化策略深入探讨了这两个工具在现代前端开发中的应用。Babel作为一款强大的JavaScript编译器,能够将最新版的JavaScript代码转换为广泛兼容的版本,从而突破浏览器对ES规范的支持限制,确保开发者可以无缝使用最新的语言特性。本文不仅介绍了如何高效配置Webpack与Babel,还提供了多种优化策略,以提升构建性能和代码质量。
webpack – babel设置

babel是一个Javascript编译器,是前端开辟中的一个利器。它突破了阅读器完成es规范的限定,使我们在开辟中能够运用最新的Javascript语法。

经由过程构建和babel,能够运用最新js语法举行开辟,末了自动编译成用于阅读器或node环境的代码。

webpack中运用babel

合营webpack运用babel前,须要起首运用npm init初始化一个项目,npm install -g webpack装置webpack(全局装置是为了在敕令行运用webpack敕令)。

  • 装置babel-loader, babel-core, babel-preset-env。

npm install --save-dev babel-loader babel-core babel-preset-env
个中,babel-preset-env插件是为了通知babel只编译同意的内容,相当于babel-preset-es2015, es2016, es2017及最新版本。经由过程它能够运用最新的js语法。

  • 设置webpack.config.js

在webpack设置文件中设置bable-loader

module: {
rules: [
{
test: /\.js$/,
use: {
loader: 'babel-loader',
options: {
presets: [
['env',{
targets: {
browsers: ['> 1%', 'last 2 versions']
}
}]
]
}
},
exclude: '/node_modules/'
}
]
}

个中,exclude是定义不愿望babel处置惩罚的文件。targets是presets的一些预设选项,这里示意将js用于阅读器,只确保占比大于1%的阅读器的特征,主流阅读器的最新两个主版本。
更多与设置有关的信息,能够参考:
babel env preset设置,
browserlist预设置.

  • 在敕令行中运转响应webpack敕令即可。
  • 因为babel-preset设置选项较多,我们平常能够在根目录下竖立.babelrc文件,特地用来安排babel preset设置,这是一个json文件。能够将上述设置修正以下:

//.bablerc文件
{
"presets": [
['env',{
"targets": {
"browsers": ['> 1%', 'last 2 versions']
}
}]
]
}
//原webpack.config.js文件
module: {
rules: [
{
test: /\.js$/,
use: {
loader: 'babel-loader'
},
exclude: '/node_modules/'
}
]
}

babel-polifill插件

在上面的babel设置中,babel只是将一些es6,es7-8的语法转换成相符目的的js代码,然则假如我们运用一些特征或要领,比方Generator, Set, 或许一些要领。babel并不能转换为低版本阅读器识别的代码。这时候就须要babel-polifill。

简朴的说,polifill就是一个垫片,供应了一些低版本es规范对高等特征的完成。运用polifill的要领以下:

npm install --save babel-polifill

然后在运用进口引入polifill,要确保它在任何其他代码/依靠声明前被挪用。

//CommonJS module
require('babel-polyfill');
//es module
import 'babel-polifill';

在webpack.config.js中,将babel-polifill到场entry数组中:

entry: ["babel-polifill", "./app.js"]

比拟于runtime-transform,polifill用于运用开辟中。会增加响应变量到全局,所以会污染全局变量。

更多细节参考babel-polifill。

runtime-transform插件

runtime transform也是一个插件,它与polifill有些相似,但它不污染全局变量,所以常常用于框架开辟。

装置:
npm install --save-dev babel-plugin-transform-runtime

npm install --save babel-runtime

用法:
将下面内容增加到.bablerc文件中

{
"plugins": ["transform-runtime"]
}

更多细节参考bable-runtime-transform插件。


推荐阅读
  • Explore how Matterverse is redefining the metaverse experience, creating immersive and meaningful virtual environments that foster genuine connections and economic opportunities. ... [详细]
  • 本文详细介绍如何使用Python进行配置文件的读写操作,涵盖常见的配置文件格式(如INI、JSON、TOML和YAML),并提供具体的代码示例。 ... [详细]
  • 技术分享:从动态网站提取站点密钥的解决方案
    本文探讨了如何从动态网站中提取站点密钥,特别是针对验证码(reCAPTCHA)的处理方法。通过结合Selenium和requests库,提供了详细的代码示例和优化建议。 ... [详细]
  • 深入理解Tornado模板系统
    本文详细介绍了Tornado框架中模板系统的使用方法。Tornado自带的轻量级、高效且灵活的模板语言位于tornado.template模块,支持嵌入Python代码片段,帮助开发者快速构建动态网页。 ... [详细]
  • 本文介绍了Java并发库中的阻塞队列(BlockingQueue)及其典型应用场景。通过具体实例,展示了如何利用LinkedBlockingQueue实现线程间高效、安全的数据传递,并结合线程池和原子类优化性能。 ... [详细]
  • 本文探讨了如何在给定整数N的情况下,找到两个不同的整数a和b,使得它们的和最大,并且满足特定的数学条件。 ... [详细]
  • 本文介绍如何使用阿里云的fastjson库解析包含时间戳、IP地址和参数等信息的JSON格式文本,并进行数据处理和保存。 ... [详细]
  • 本文介绍如何使用Objective-C结合dispatch库进行并发编程,以提高素数计数任务的效率。通过对比纯C代码与引入并发机制后的代码,展示dispatch库的强大功能。 ... [详细]
  • 题目描述:给定n个半开区间[a, b),要求使用两个互不重叠的记录器,求最多可以记录多少个区间。解决方案采用贪心算法,通过排序和遍历实现最优解。 ... [详细]
  • 本文详细介绍了Java编程语言中的核心概念和常见面试问题,包括集合类、数据结构、线程处理、Java虚拟机(JVM)、HTTP协议以及Git操作等方面的内容。通过深入分析每个主题,帮助读者更好地理解Java的关键特性和最佳实践。 ... [详细]
  • 本文探讨如何设计一个安全的加密和验证算法,确保生成的密码具有高随机性和低重复率,并提供相应的验证机制。 ... [详细]
  • 本文详细介绍了中央电视台电影频道的节目预告,并通过专业工具分析了其加载方式,确保用户能够获取最准确的电视节目信息。 ... [详细]
  • Composer Registry Manager:PHP的源切换管理工具
    本文介绍了一个用于Composer的源切换管理工具——Composer Registry Manager。该项目旨在简化Composer包源的管理和切换,避免与常见的CRM系统混淆,并提供了详细的安装和使用指南。 ... [详细]
  • 本文详细介绍了Git分布式版本控制系统中远程仓库的概念和操作方法。通过具体案例,帮助读者更好地理解和掌握如何高效管理代码库。 ... [详细]
  • 最近团队在部署DLP,作为一个技术人员对于黑盒看不到的地方还是充满了好奇心。多次咨询乙方人员DLP的算法原理是什么,他们都以商业秘密为由避而不谈,不得已只能自己查资料学习,于是有了下面的浅见。身为甲方,虽然不需要开发DLP产品,但是也有必要弄明白DLP基本的原理。俗话说工欲善其事必先利其器,只有在懂这个工具的原理之后才能更加灵活地使用这个工具,即使出现意外情况也能快速排错,越接近底层,越接近真相。根据DLP的实际用途,本文将DLP检测分为2部分,泄露关键字检测和近似重复文档检测。 ... [详细]
author-avatar
心動寶貝r
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有