Babel编译与Webpack

目录

  • Babel
    • 初识Babel
    • Babel 使用方式
    • 使用 Babel 前的准备工作
  • Webpack
    • Webpack介绍
    • Webpack初体验
    • Webpack核心概念
      • 入口(entry)
      • 出口(output)
      • 加载 (loader)
      • 插件(plugins)

Babel

Babel官网: https://babeljs.io/

初识Babel

Babel 是一个广泛使用的 JavaScript 编译器,用于将新版本的 JavaScript 代码转换为向后兼容的旧版本 JavaScript 代码。在不同的浏览器和环境中使用最新的语言特性和功能,同时保持代码的兼容性。

Babel 的一些主要功能和用途:

  1. 语法转换:Babel 可以将 ECMAScript 2015+(ES6+)的语法转换为旧版本 JavaScript,以确保代码在旧版浏览器和环境中的正常运行。例如,它可以将箭头函数、模板字符串等转换为等效的 ES5 语法。

  2. 客户端/服务器端支持:Babel 能够处理客户端和服务器端上的 JavaScript 代码,并确保它们都能正确地运行。这对于使用最新的语言特性来编写跨平台应用程序非常有帮助。

  3. 插件扩展性:Babel 提供了丰富的插件系统。通过选择和配置不同的插件,可以实现特定项目或应用程序需要的转换。

  4. 工具链集成:Babel 可以轻松集成到现有的前端工具链中,如 Webpack、Gulp、Rollup 等。这样可以与其他工具和任务一起使用,以便进行更高级的开发和构建流程。

  5. 兼容性管理:Babel 提供了针对不同浏览器和环境的预设(preset),例如 @babel/preset-env,它会根据目标浏览器和环境自动确定需要转换的语法和功能,更好地管理兼容性。

  • 注意:
    • Babel本身可以编译ES6的大部分语法
    • ES6 Module语法一般需要使用Webpack来处理
    • Babel本身不能编译ES6新增的API,需要借助其它的模块

Babel 使用方式

  1. 在构建工具中使用:常见的前端构建工具(如 Webpack、Gulp 等)都能与 Babel 集成。你可以在配置文件中指定 Babel 的转换规则和插件,以及需要进行转换的目标文件。这样,在项目的构建过程中,Babel 将会自动转换你的代码。

  2. 使用命令行工具:Babel 提供了一个命令行工具,可以直接在终端中使用。你可以全局安装 Babel CLI,然后在命令行中执行 Babel 命令,对指定的文件或目录进行转换。例如,你可以使用以下命令将 src 目录下的文件转换为输出到 dist 目录中:

    npm babel src --out-dir dist
    

    你还可以通过命令行参数指定需要使用的转换规则和插件。

  3. 在 Node.js 中使用:如果你在 Node.js 环境中编写代码,并希望将其进行转换,可以通过在代码中引入 Babel,并使用其 API 进行转换。你需要先安装 @babel/core 和所需的转换规则及插件,然后在代码中使用 Babel API 来进行转换。

使用 Babel 前的准备工作

  1. Node.js 和 npm:

    • Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境,它使 JavaScript 可以在服务器端运行。Babel 通常与 Node.js 一起使用。
    • npm 是 Node.js 的包管理器,用于安装和管理 JavaScript 包和依赖项。
  2. 安装 Node.js:

    • 访问 Node.js 官方网站(https://nodejs.org/),下载并安装适合你操作系统的 Node.js 版本。
  3. 初始化项目:

    • 在命令行中进入你的项目目录,并执行 npm init 命令来初始化你的项目。这将会创建一个 package.json 文件,其中记录了项目信息和依赖项。
    • 在package.json文件添加执行编译的命令
      在这里插入图片描述
  4. 安装 Babel 相关包:

    • 执行以下命令来安装 Babel 所需的核心依赖包:
      npm install --save-dev @babel/core @babel/cli
      
    • 根据项目需求,还可以安装其他 Babel 的插件和预设。例如,如果需要将 ES6+ 语法转换为 ES5 语法,可以安装 @babel/preset-env
      npm install --save-dev @babel/preset-env
      
  5. 创建配置文件.babelrc,并配置:

    {
    	"presets":["@babel/preset-env"]
    }	
    
  6. 编译并测试:

    npm run bulid
    

Webpack

Webpack介绍

Webpack 是一个现代化的静态模块打包器(module bundler),它能够将多个前端资源(如 JavaScript、CSS、图片等)打包成一个或多个静态资源文件,以优化应用程序的性能。

Webpack 的一些重要特点和功能:

  1. 模块化开发:Webpack 支持使用模块化来组织代码。你可以使用类似于 ES6 import/export 语法的方式导入和导出模块,使代码更具可维护性和可复用性。

  2. 打包编译:Webpack 将应用程序的所有依赖项视为模块,并通过解析这些依赖项的关系图来构建一个依赖图。然后,它使用不同的 loader 来处理不同类型的文件,并将它们转换成浏览器可以理解的格式。

  3. 代码拆分:Webpack 支持将应用程序拆分成多个块,以实现按需加载。这样,只有在需要时才会加载额外的代码块,从而提高初始加载速度。

  4. 插件系统:Webpack 提供了丰富的插件系统,以增强其功能。你可以通过配置文件中的 plugins 属性来使用插件,它们可以用于优化资源、压缩代码、注入环境变量等增值功能。

  5. 开发者友好性:Webpack 提供了开发人员友好的功能,如热模块替换(Hot Module Replacement)和代码分析工具等。这些功能可以帮助开发者提高开发效率、调试并优化应用程序。

  6. 生态系统:Webpack 拥有庞大的生态系统,可以与许多其他工具和框架无缝集成,如 Babel、React、Vue.js 等。

Webpack初体验

  1. 初始化项目:

    • 在命令行中进入你的项目目录,并执行 npm init 命令来初始化你的项目。这将会创建一个 package.json 文件,其中记录了你的项目信息和依赖项。
    • 在package.json文件添加执行编译的命令在这里插入图片描述
  2. 安装 webpack 相关包:

    • 执行以下命令来安装 webpack 的核心依赖包以及其他必要的包:
      npm install --save-dev webpack webpack-cli
      
  3. 配置 webpack:

    • 在项目根目录下创建一个名为 webpack.config.js 的文件,用于存放 webpack 的配置信息。
    • 编辑 webpack.config.js 文件,配置 webpack 的入口、输出以及其他需要的 loader 和 plugin。例如,可以指定入口文件和输出文件的位置、配置转换规则的 loader、使用的插件等。
  4. 打包并测试:

    • 编写需要打包的 JavaScript 代码,并确保在代码中引入了其他模块。
    • 在命令行中执行 npm run webpack 命令来进行打包,默认情况下,Webpack 会根据 webpack.config.js 中的配置进行打包,生成最终的输出文件。

Webpack核心概念

入口(entry)

  • 入口指示了 Webpack 构建的起点,即从哪个模块开始构建依赖图。
  • 通常情况下,一个应用程序会有一个或多个入口点。可以通过配置文件中的 entry 属性来指定入口文件的路径或多个入口文件的数组。
  • 入口可以是一个 JavaScript 文件,也可以是其他类型的文件,取决于项目需求。Webpack将根据入口文件来解析并构建整个依赖图。

例子:

module.exports = {
  entry: './src/index.js',
  // 或者多个入口点
  // entry: {
  //   app: './src/app.js',
  //   vendor: './src/vendor.js'
  // },
  // ...
};

出口(output)

  • 输出指定了 Webpack 构建后生成的文件及其位置。
  • 在 Webpack 构建完成后,最终生成的文件会被写入到 output 指定的路径。
  • 通过配置文件中的 output 属性来指定输出路径、输出文件名以及其他选项(如公共路径、导出的模块格式等)。
  • 输出路径可以是相对路径或绝对路径,并支持使用占位符来定义文件名,以确保输出文件的唯一性。

例子:

module.exports = {
  // ...
  output: {
    path: 'dist',
    filename: 'bundle.js',
  },
};

加载 (loader)

loader 让webpack能够去处理那些非JS文件的模块

  1. 安装 babel-loader:
    运行 npm install --save-dev babel-loader 命令来安装 babel-loader。

  2. 安装 Babel 相关依赖项:
    运行 npm install --save-dev @babel/core @babel/preset-env 命令来安装 Babel 的核心和预设环境。

  3. 配置 babel-loader:
    在 webpack.config.js 文件中完成 babel-loader 的配置。在 module.rules 数组中添加以下规则:

    module: {
      rules: [
        {
          test: /\.js$/,
          exclude: /node_modules/,
          use: {
            loader: 'babel-loader',
            options: {
              presets: ['@babel/preset-env']
            }
          }
        }
      ]
    }
    
  4. 引入 core-js:
    运行 npm install --save-dev core-js 命令来安装 core-js。
    在 JavaScript 入口文件中,如 index.js,在需要使用新增 API 的位置添加以下代码:
    javascript import 'core-js/stable';

  5. 打包并测试:
    运行 npm run webpack 命令来进行编译和测试。

插件(plugins)

与 loader 不同,loader 主要用于帮助 Webpack 处理各种模块,而插件可以实现更广泛的任务。

  1. html-webpack-plugin 是一个常用的 Webpack 插件,用于生成 HTML 文件并自动注入打包后的资源。它会根据配置生成一个或多个 HTML 文件,并将 webpack 打包后的脚本、样式等资源注入到生成的 HTML 中。

  2. 要安装 html-webpack-plugin,可以运行以下命令:

    npm install --save-dev html-webpack-plugin

  3. 配置 html-webpack-plugin 插件时,可以提供一些选项来自定义生成的 HTML 文件。下面是一些常用的配置选项:

    • template:指定 HTML 模板文件的路径。可以使用一个自定义模板来生成 HTML 文件。
    • filename:指定生成的 HTML 文件的名称。默认为 ‘index.html’。
    • title:设置 HTML 文件的标题。
    • inject:指定脚本标签的注入位置。可选值有 ‘head’、‘body’ 或 ‘true’(默认为 ‘body’)。
    • minify:是否对生成的 HTML 进行压缩,默认为 false。可以提供一个对象来指定压缩选项。
  4. 多页面时,可以配置多个 html-webpack-plugin 实例来生成多个 HTML 文件。每个实例可以有自己的模板、文件名等配置选项,从而生成不同的 HTML 文件。

    • 在 webpack.config.js 文件中进行配置:
    const HtmlWebpackPlugin = require('html-webpack-plugin');
    
    module.exports = {
      // 基本的 Webpack 配置...
      entry: {
        app: './src/index.js',
        about: './src/about.js',
      },
      output: {
        // 输出路径和文件名等基本配置...
      },
      plugins: [
        new HtmlWebpackPlugin({
          template: 'src/templates/index.html',
          filename: 'index.html',
          chunks: ['app'],
          title: '首页'
        }),
        new HtmlWebpackPlugin({
          template: 'src/templates/about.html',
          filename: 'about.html',
          chunks: ['about'],
          title: '关于我们'
        }),
      ],
    };
    

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/56710.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Emacs之编译系统文件cc-mode.el.gz(一百二十四)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 人生格言: 人生…

应用层协议——https

文章目录 1. HTTPS 是什么2. 什么是"加密"3. 常见的加密方式4. 数据摘要 && 数字签名5. HTTPS 的工作过程探究5.1 方案1 - 只使用对称加密5.2 方案2 - 只使用非对称加密5.3 方案3 - 双方都使用非对称加密5.4 方案4 - 非对称加密 对称加密5.5 中间人攻击5.6 …

pycharm 使用远程服务器 jupyter (本地jupyter同理)

1. 远程服务器miniconda 环境中创建jupyter环境 # 1. 激活环境 conda activate envname#2. 在环境中安装jupyter pip install jupyter # 或者 conda install jupyter#3. 生成jupyter_notebook_config.py文件 jupyter notebook --generate-config#4. 设置密码 jupyter noteboo…

SSM(Vue3+ElementPlus+Axios+SSM前后端分离)【二】

文章目录 SSM--基础环境搭建【二】项目介绍项目功能/界面● SSM 整合项目界面 项目全局配置web.xmlSpringMVC 配置 SSM–基础环境搭建【二】 项目介绍 项目功能/界面 ● SSM 整合项目界面 项目全局配置web.xml 配置furns_ssm\src\main\webapp\WEB-INF\web.xml , 和项目全局…

mac安装nacos,M1芯片

第一步,官网下载 》nacos官网 去github中下载对应的版本,本人下载的是1.4.1版本 在这儿选择其他的版本,下面这里选择 tar.gz 压缩包 解压后放到一个非中文的目录下,我选择在 user目录下面创建一个other目录,将使用的环…

TCP拥塞控制详解 | 1. 概述

网络传输问题本质上是对网络资源的共享和复用问题,因此拥塞控制是网络工程领域的核心问题之一,并且随着互联网和数据中心流量的爆炸式增长,相关算法和机制出现了很多创新,本系列是免费电子书《TCP Congestion Control: A Systems …

IntelliJ IDEA 2023.2 最新版如何激活?IntelliJ IDEA 2023.2最新版激活方法及验证ja-netfilter配置成功提示

🌷🍁 博主猫头虎 带您 Go to New World.✨🍁 🦄 博客首页——猫头虎的博客🎐 🐳《面试题大全专栏》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 &a…

Django系列之DRF简单使用

基于ModelViewSets的简单使用 models.py from django.db import modelsclass AuthorDetail(models.Model):gender models.CharField(max_length8)birthday models.DateField()telephone models.BigIntegerField()addr models.CharField(max_length64)class Author(models…

正则表达式速通

简介 正则表达式,我们可以看作通配符的增强版,可以帮我们匹配指定规则的字符串,在计算机中应用广泛,比如说爬虫、网站的登录表单等。 原视频:https://www.bilibili.com/video/BV1da4y1p7iZ 学习正则表达式的常用工具…

在云服务器上,clone github时报Connection timed outexit code: 128

文章目录 问题解决方案 问题 在执行pip install安装依赖时,需要clone github代码,此时报了Connection timed out&exit code: 128错误,原因是访问超时了,此时需要使用代理 fatal: unable to access https://github.com/hugg…

【项目设计】MySQL 连接池的设计

目录 👉关键技术点👈👉项目背景👈👉连接池功能点介绍👈👉MySQL Server 参数介绍👈👉功能实现设计👈👉开发平台选型👈👉MyS…

快速开发框架若依的基础使用详解

Hi I’m Shendi 快速开发框架若依的基础使用详解 最近在为公司制作新的项目,经过了一段时间的技术沉淀,我开始尝试接触市面上用的比较多的快速开发框架,听的最多的当属若依吧 于是就选用了若依 介绍 为什么选?目的是为了提高开发…

远程访问本地mysql

文章目录 一、设置本地mysql允许外部访问找到mysql配置文件my.ini &#xff0c;linux环境是my.cnf配置mysql配置文件 二、创建外部访问的mysql用户三、配置mysql用户的权限四、配置防火墙端口五、连接查看本地ip地址 参考 连接命令 mysql -h <host> -P <port> -u &…

rknn模型在rv1126开发板上跑

在前面&#xff0c;已经将 onnx模型转为 rknn模型。 yolov5 onnx模型 转为 rknn模型_爱钓鱼的歪猴的博客-CSDN博客 这里探讨的是&#xff1a;rknn模型在rv1126开发板上运行 目录 1、rknn模型在PC端进行推理测试&#xff0c;评估模型精度 2、模型预编译 3、rknn模型部署到r…

配置GIt账号、配置公钥

1.设置账号和邮箱 打开终端输入以下命令&#xff1a; git config --global --unset-all user.name git config --global --unset-all user.email然后输入以下命令来设置新的账号和邮箱&#xff1a; git config --global user.name "your_username" git config --glo…

4 Promethues监控主机和容器

目录 目录 1. 监控节点 1.1 安装Node exporter 解压包 拷贝至目标目录 查看版本 1.2 配置Node exporter 1.3 配置textfile收集器 1.4 启动systemd收集器 1.5 基于Docker节点启动node_exporter 1.6 抓取Node Exporter 1.7 过滤收集器 2. 监控Docker容器 2.1 运行cAdviso…

matplotlib绘制方波圆周分解动画

1 方波的圆周分解 在学习傅里叶变换的时候&#xff0c;有一个经典的示例是方波的分解。我们知道&#xff0c;方波可以分解为无数个正弦波的叠加。而正弦波&#xff0c;又可以看作是圆周运动在一条直线上的投影。当时为了理解这个事情&#xff0c;恐怕大家也花了不少时间。 学…

8.Winform界面打包成DLL提供给其他的项目使用

背景 希望集成一个Winform的框架&#xff0c;提供权限菜单&#xff0c;根据权限出现各个Winform子系统的菜单界面。不希望把所有的界面都放放在同一个解决方案下面。用各个子系统建立不同的解决方案&#xff0c;建立代码仓库&#xff0c;进行管理。 实现方式 将Winform的UI界…

HCIP OSPF+BGP综合实验

题目 1、该拓扑为公司网络&#xff0c;其中包括公司总部、公司分部以及公司骨干网&#xff0c;不包含运营商公网部分。 2、设备名称均使用拓扑上名称改名&#xff0c;并且区分大小写。 3、整张拓扑均使用私网地址进行配置。 4、整张网络中&#xff0c;运行OSPF协议或者BGP协议…

C++ 拷贝构造函数

拷贝构造函数是一种特殊的构造函数&#xff0c;具有一般构造函数的所有特性&#xff0c;其形参是本类的对象的引用。其作用是使用一个已经存在的对象&#xff08;由拷贝构造函数的参数指定&#xff09;&#xff0c;去初始化同类的一个新对象。 如果程序员没有定义类的拷贝构造函…