webpack 和 babel 实用教程【前端必备】

简介: webpack 和 babel 实用教程【前端必备】

开发环境的前端代码重在易于阅读和编写,生产环境的前端代码追求更快地运行,所以需要通过前端构建工具将开发环境的前端代码通过混淆压缩打包构建成生产环境的前端代码。

webpack的用途

webpack 是众多前端构建工具的一种,主要实现以下功能:

  • 压缩代码
    将JS、CSS代码混淆压缩,让代码体积更小,加载更快
  • 编译语法
    将 Less、Sass、ES6、TypeScript 等浏览器可能不兼容的语法编译成浏览器支持的语法,如使用Babel编译ES6语法
    CSS和JS的模块化语法,有的浏览器也不兼容,需使用webpack、Rollup等进行处理。

babel 的用途

将 ES6+ 的语法编译为 ES5 的语法,提升代码的兼容性,因为有的浏览器不支持 ES6+ 的语法

安装 webpack 和 babel

安装 node.js

创建文件夹 webpack_demo

创建文件夹 webpack_demo

初始化项目

npm init -y

安装 webpack

为提升安装速度,此处使用了 cnpm (若无法使用,先执行 npm i cnpm 安装 cnpm )

cnpm install webpack webpack-cli -D

安装 babel

用于将 ES6 语法编译成 ES5

cnpm install @babel/core @babel/preset-env babel-loader -D

新建文件 .babelrc

添加 babel 相关的配置

{
    "presets": ["@babel/preset-env"],
}

安装 webpack-dev-server

用于启动服务

cnpm install webpack-dev-server

安装 html-webpack-plugin

用于解析 html

cnpm install html-webpack-plugin -D

新建文件 webpack.config.js

开发环境 webpack 的配置文件(具体含义详见代码注释)

// 导入js包 -- path 用于拼接文件路径
const path = require("path");
// 导入插件 -- html-webpack-plugin 用于打包 html
const HtmlWebpackPlugin = require("html-webpack-plugin");

module.exports = {
  // 构建模式,默认值为 production (会压缩代码并进行各种优化,如 tree shaking),还可设置为 development,方便调试
  mode: "development",
  // 指定入口文件为 src/index
  entry: path.join(__dirname, "src", "index"),
  // 将js文件打包到 dist/bundle.js 中
  output: {
    filename: "bundle.js",
    path: path.join(__dirname, "dist"),
  },
  // 模块
  module: {
    // 规则
    rules: [
      {
        // 正则匹配所有以.js结尾的文件
        test: /\.js$/,
        // 使用 babel-loader 插件
        loader: ["babel-loader"],
        // 搜索 src 文件夹中的文件
        include: path.join(__dirname, "src"),
        // 不搜索 node_modules 中的文件
        exclude: /node_modules/,
      },
    ],
  },
  //  配置插件
  plugins: [
    // 使用插件 html-webpack-plugin 将 src/index.html 打包到 dist/index.html 中
    new HtmlWebpackPlugin({
      template: path.join(__dirname, "src", "index.html"),
      filename: "index.html",
    }),
  ],
  // 开发环境服务配置 —— 以下配置的含义:自动打开浏览器,访问 localhost:3000/index.html 渲染 dist/index.html
  devServer: {
    // 端口
    port: 3000,
    // 路径
    contentBase: path.join(__dirname, "dist"), // 根目录
    // 是否自动打开浏览器
    open: true,
  },
}

 

新建文件 webpack.prod.js

打包构建生产环境代码时的 webpack 配置文件(具体含义详见代码注释)

// 导入js包 -- path 用于拼接文件路径
const path = require("path");
// 导入插件 -- html-webpack-plugin 用于打包 html
const HtmlWebpackPlugin = require("html-webpack-plugin");

module.exports = {
  // 构建模式,默认值为 production (会压缩代码并进行各种优化,如 tree shaking),还可设置为 development,方便调试
  mode: "production",
  // 指定入口文件为 src/index
  entry: path.join(__dirname, "src", "index"),
  // 将js文件打包到 dist/bundle.js 中
  output: {
    // 添加了 [contenthash] ,用于打包时,根据代码内容生成一个 hash 字符串,若代码没发生改变,则这个 hash 字符串不会改变,利于命中浏览器缓存,提升性能
    filename: "bundle.[contenthash].js",
    path: path.join(__dirname, "dist"),
  },
  // 模块
  module: {
    // 规则
    rules: [
      {
        // 正则匹配所有以.js结尾的文件
        test: /\.js$/,
        // 使用 babel-loader 插件
        loader: ["babel-loader"],
        // 搜索 src 文件夹中的文件
        include: path.join(__dirname, "src"),
        // 不搜索 node_modules 中的文件
        exclude: /node_modules/,
      },
    ],
  },
  //  配置插件
  plugins: [
    // 使用插件 html-webpack-plugin 将 src/index.html 打包到 dist/index.html 中
    new HtmlWebpackPlugin({
      template: path.join(__dirname, "src", "index.html"),
      filename: "index.html",
    }),
  ],
};

新建文件 src/index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
    <p>任意内容</p>
</body>
</html>

新建文件 src/index.js

// ES6语法范例 —— 箭头函数
const sum = (a, b) => a + b
const result = sum(10, 20)
console.log(result)

在 package.json 的 scripts 中添加

  • dev 默认使用的 webpack.config.js 的配置,用于本地开发启动项目
  • build 明确指出使用 webpack.prod.js 的配置,用于打包构建生产代码
    "build": "webpack --config webpack.prod.js",
    "dev": "webpack-dev-server"

本地运行项目

npm run dev


在浏览器中查看源码,可见 ES6 语法已编译为 ES5 语法

打包项目

npm run build

查 dist 文件中的代码,可见 ES6 语法已编译为 ES5 语法


目录
打赏
0
0
0
0
63
分享
相关文章
前端开发必备!Node.js 18.x LTS保姆级安装教程(附国内镜像源配置)
本文详细介绍了Node.js的安装与配置流程,涵盖环境准备、版本选择(推荐LTS版v18.x)、安装步骤(路径设置、组件选择)、环境验证(命令测试、镜像加速)及常见问题解决方法。同时推荐开发工具链,如VS Code、Yarn等,并提供常用全局包安装指南,帮助开发者快速搭建高效稳定的JavaScript开发环境。内容基于官方正版软件,确保合规性与安全性。
125 23
Webpack与Babel的进阶配置与优化
通过以上的进阶配置和优化策略,可以更好地发挥`Webpack`与`Babel`的功能,提高项目的性能和开发效率。
前端性能优化:Webpack与Babel的进阶配置与优化策略
【10月更文挑战第28天】在现代Web开发中,Webpack和Babel是不可或缺的工具,分别负责模块打包和ES6+代码转换。本文探讨了它们的进阶配置与优化策略,包括Webpack的代码压缩、缓存优化和代码分割,以及Babel的按需引入polyfill和目标浏览器设置。通过这些优化,可以显著提升应用的加载速度和运行效率,从而改善用户体验。
143 6
前端工程化:Webpack与Gulp的构建工具选择与配置优化
【10月更文挑战第26天】前端工程化是现代Web开发的重要趋势,通过将前端代码视为工程来管理,提高了开发效率和质量。本文详细对比了Webpack和Gulp两大主流构建工具的选择与配置优化,并提供了具体示例代码。Webpack擅长模块化打包和资源管理,而Gulp则在任务编写和自动化构建方面更具灵活性。两者各有优势,需根据项目需求进行选择和优化。
135 7
前端工程化:Webpack与Gulp的构建工具选择与配置优化
【10月更文挑战第27天】在现代前端开发中,构建工具的选择对项目的效率和可维护性至关重要。本文比较了Webpack和Gulp两个流行的构建工具,介绍了它们的特点和适用场景,并提供了配置优化的最佳实践。Webpack适合大型模块化项目,Gulp则适用于快速自动化构建流程。通过合理的配置优化,可以显著提升构建效率和性能。
109 2
构建工具对比:Webpack与Rollup的前端工程化实践
【10月更文挑战第11天】本文对比了前端构建工具Webpack和Rollup,探讨了它们在模块打包、资源配置、构建速度等方面的异同。通过具体示例,展示了两者的基本配置和使用方法,帮助开发者根据项目需求选择合适的工具。
74 3
不会webpack的前端可能是捡来的,万字总结webpack的超入门核心知识
该文章提供了Webpack的基础入门指南,涵盖安装配置、基本使用、加载器(Loaders)、插件(Plugins)的应用,以及如何通过Webpack优化前端项目的打包构建流程。
不会webpack的前端可能是捡来的,万字总结webpack的超入门核心知识
深入解析前端构建利器:webpack核心概念与基本功能全览
深入解析前端构建利器:webpack核心概念与基本功能全览—
74 0
轻松上手:基于single-spa构建qiankun微前端项目完整教程
轻松上手:基于single-spa构建qiankun微前端项目完整教程
145 0
【前端学java】全网最详细的maven安装与IDEA集成教程!
【8月更文挑战第12天】全网最详细的maven安装与IDEA集成教程!
163 2
【前端学java】全网最详细的maven安装与IDEA集成教程!

热门文章

最新文章