第五十六篇:webpack的loader(四) -打包js中的高级语法

好家伙,

1.打包处理js文件中的高级语法

webpack只能打包处理一部分高级的JavaScript 语法。对于那些webpack无法处理的高级js 语法,需要借

助于 babel-loader 进行打包处理。

例如 webpack无法处理下面的JavaScript代码:

 // 1.定义了名为 info 的装饰器
function info(target) {
// 2.为目标添加静态属性 info
target.info = 'Person info'
} // 3.为Person 类应用 info 装饰器
@info
class Person {} //4.打印 Person 的静态属性 info
console.log(Person.info)

此处运用到了一个名为装饰器的高级语法,webpack无法对其进行打包,

(基于干不过就叫人的思想)这里我们借助于 babel-loader 进行打包处理。

(babel是一个插件  => babel是webpack的插件 => 所以babel是插件的插件)

2.babel-loader的安装和配置

2.1 安装 babel-loader 相关的包

运行如下的命令安装对应的依赖包:

npm i babel-loader@8.2.2 @babel/core@7.14.6@babel/plugin-proposal-decorators@7.14.5-D

在webpack.config.js的 module -> rules 数组中,添加 loader 规则如下:

 // 注意:必须使用 exclude 指定排除项;因为 node_modules 目录下的第三方包不需要被打包
{ test: /\.jss/, use: 'babel-loader', exclude: /node_modules/ }

2.2配置 babel-loader

在项目根目录下,创建名为babel.config.js的配置文件(与webpack有个webpack.config.js配置文件一样),定义Babel的配置项如下:

module.exports={
// 声明 babel 可用的插件
// 将来 ,webpack 在调用 babel-loader的时候,会优先加载plugins插件来使用
plugins: [['@babel/plugin-proposal-decorators',{ legacy: true }]] }

插件的的可选配置项,

可以直接上官网文档去找Babel 中文文档 · 下一代 JavaScript 编译器 (docschina.org)

webpack的配置是较难的,一般平时就直接用第三方的默认配置了,

这里是浅显的了解一下webpack的原理

That's all

第五十六篇:webpack的loader(四) -打包js中的高级语法的相关教程结束。

相关推荐:

如何用Python把自动化脚本打包成带图标的独立exe

PyInstaller图标不显示主因是--icon路径错误或.ico格式不合规(需多尺寸Windows原生图标);应使用绝对路径、--icon置于脚本名前,并配合sys._MEIPASS在运行时加载图标。 用PyInstaller打包Python脚本为exe时,图标不显示? 图标没生效,大概率是--...

如何在 Poetry 项目外直接导入其模块(无需安装或打包)

本文介绍一种轻量、临时的解决方案,让位于Poetry项目外部的Python脚本(如scripts/script.py)能直接导入Poetry项目内(如modules-project/modules/)的模块及其依赖,无需重新初始化Poetry项目、发布包或修改系统路径。 本文介绍一种轻量、临时的解决...

为什么Python 3.11的结构化模式匹配提升效率_实战演示match语法环境

match语句通过字节码级优化和单次结构探测替代链式if判断,减少重复取值与类型检查,在Python3.11+中实现更紧凑分支、更高JIT友好性及实际运行提速。 match语句本身不直接“提升运行时效率”,但它能显著减少冗余判断、避免重复解包、降低嵌套if深度,从而让代码更接近数据结构本质——这带来...