二四(Node3)、Webpack打包、开发服务器dev、开发模式 生产模式、解析别名路径

Node.js day-03 注意:Webpack 默认只识别 JS 和 JSON 文件内容,所以想要让 Webpack 识别更多不同内容,需要使用加载器。Webpack 是一个静态模块打包工具,从入口构建依赖图,打包有关的模块,最后用于展示你的内容。4.配置 webpack.config.js 让 Webpack 拥有打包图片功能。2.静态模块:编写代码过程中的,html,css, js,图片等固定内容的文件。4.Webpack 的作用:把静态模块内容,压缩,这个和,转译等(前端工程化) 阅读详情

1. Webpack 简介与体验

/* 
  使用 Webpack

  需求:封装 utils 包,校验用户名和密码长度,在 index.js 中使用,使用 Webpack 打包
  步骤:
  1. 新建项目文件夹,初始化包环境,得到 package.json 文件
      npm init -y
  2. 新建 src 源代码文件夹(书写代码)
  3. 下载 webpack webpack-cli 到项目(版本独立)
      npm i webpack webpack-cli --save-dev
  4. 项目中运行工具命令,采用自定义命令的方式(局部命令)
      npm run build
  5. 自动产生 dist 分发文件夹(压缩和优化后,用于最终运行的代码)


  1. Webpack 有什么用?
    ➢ 压缩,转译,整合,打包我们的静态模块
  2. Webpack 怎么用?
    ➢ 初始化环境,编写代码
    ➢ 安装,配置自定义命令
    ➢ 打包体验
  3. 如何运行 package.json 里的自定义命令?
    ➢ npm run 自定义命令
  4. Webpack 默认入口和出口?
    ➢ src/index.js 和 dist/main.js
*/

2. 自动生成 html 文件

插件 html-webpack-plugin

// 1. 插件 html-webpack-plugin 作用:在 Webpack 打包时生成 html 文件,并引入其他打包后的资源
// 2. 步骤:
//   2.1 下载 html-webpack-plugin 本地软件包到项目中
//       npm i html-webpack-plugin --save-dev
//   2.2 配置 webpack.config.js 让 Webpack 拥有插件功能
const HtmlWebpackPlugin = require("html-webpack-plugin");

module.exports = {
  // 插件列表
  plugins: [
    new HtmlWebpackPlugin({
      // 以指定的 html 文件作为生成模板
      template: path.resolve(__dirname, "public/index.html"),
    }),
  ],
};
//   2.3 指定以 public/index.html 为模板复制到 dist/index.html,并自动引入其他打包后资源
// 3. 运行打包命令,观察打包后 dist 文件夹下内容并运行查看效果

3. 打包 css 代码

/* 
  Webpack 默认只识别 JS 和 JSON 文件内容,
  所以想要让 Webpack 识别更多不同内容,需要使用加载器

  css-loader style-loader 这2个加载器来辅助 Webpack 才能打包 css 代码

  加载器的作用:让 Webpack 识别更多的代码内容类型
*/

// 1. 准备 css 文件引入到 src/mian.js 中(压缩转译处理等)
import "./css/index.css";
// 2. 下载 css-loader 和 style-loader 本地软件包
// npm i css-loader style-loader --save-dev
// 3. 配置 webpack.config.js 让 Webpack 拥有该加载器功能
module.exports = {
  // 加载器
  module: {
    // 规则列表
    rules: [
      {
        // 匹配 .css 结尾的文件
        test: /\.css$/i,
        // 使用从后到前的加载器来解析 css 代码和插入到 DOM
        use: ["style-loader", "css-loader"],
      },
    ],
  },
};
// 4. 打包后运行 dist/index.html 观察效果,看看准备好的样式是否作用在网页上

4. 打包 less 代码

// ! 打包 less
// 1. 准备 less 样式引入到 src/main.js 中
import "@/less/index.less";

// 2. 下载 less 和 less-loader 本地软件包
// npm i less less-loader --save-dev

// 3. 配置 webpack.config.js 让 Webpack 拥有功能
module.exports = {
  // 加载器
  module: {
    // 规则列表
    rules: [
      {
        test: /\.less$/i,
        use: [
          // compiles Less to CSS
          "style-loader",
          "css-loader",
          "less-loader",
        ],
      },
    ],
  },
};

// 4. 打包后运行 dist/index.html 观察效果

5. 打包图片

// ! 打包图片
// 资源模块: 图片,字体文件等
/* 
  - 小于 8KB 文件会被转成 data URI(base64 字符串)打包进 JS 文件中(好处:可以减少网络请求次数,缺点:增加 30% 体积)
  - 大于 8KB 文件会被复制到 dist 下,自动替换使用代码的图片名字
*/

// 1. 准备图片素材到 src/assets 中(存放资源模块 - 图片/字体图标等)

// 2. 在 index.less 中给 body 添加背景图
/* body{
  background: url(../assets/background.png);
} */

// 3. 在 main.js 中给 img 标签添加 logo 图片
/**
 * 目标:要给 img 标签设置一个 logo 图片
 * 注意:在赋予给 img 的 src 属性图片的时候,需要把图片数据对象引入过来
 */
import imgObj from "@/assets/logo.png";
document.querySelector(".logo-img").src = imgObj;

// 4. 配置 webpack.config.js 让 Webpack 拥有打包图片功能
module.exports = {
  // 加载器
  module: {
    // 规则列表
    rules: [
      {
        // 针对资源模块(图片,字体文件,图标文件等)处理
        test: /\.(png|jpg|jpeg|gif)$/i,
        // 根据文件大小(8KB)小于:把文件转成 base64 打包进 js 文件中(减少网络请求次数)大于:文件复制到输出的目录下
        type: "asset",
        // 输出文件时,路径+名字
        generator: {
          filename: "assets/[hash][ext]",
        },
      },
    ],
  },
};
// 5. 打包后运行 dist/index.html 观察效果

6. 集成 babel 编译器

// ! Webpack 集成 babel 编译器
// babel 编译器的作用: 把 ECMAScript2015+ 语法向后转换,兼容低版本浏览器

// 1. 编写一段映射数组元素,每个数值 + 1 的代码(要求用箭头函数)
// 目标:让 Webpack + Babel 编译降级 JS 语法
const arr = [1, 2, 3];
const result = arr.map((val) => val + 1);
console.log(result);

// 2. 下载 babel babel-loader core 本地软件包
// npm i babel-loader @babel/core @babel/preset-env -D

// 3. 配置 webpack.config.js 让 Webpack 拥有功能
module.exports = {
  module: {
    rules: [
      {
        test: /\.m?js$/,
        // 排除指定目录里的 js (不进行编译降级)
        exclude: /(node_modules|bower_components)/,
        use: {
          loader: "babel-loader",
          options: {
            // 预设规则
            presets: ["@babel/preset-env"],
          },
        },
      },
    ],
  },
};

// 4. 打包运行 dist/index.html 观察效果

7. Webpack 开发服务器

// ! Webpack 开发服务器 webpack-dev-server
// 启动 Web 服务,打包输出源码在内存,并会自动检测代码变化热更新到网页

// 1. 下载 webpack-dev-server 软件包到当前项目
// npm i webpack-dev-server --save-dev

// 2. 配置自定义命令,并设置打包的模式为开发模式
/* "scripts": {
    "dev": "webpack server --mode=development"
  }, */

// 3. 使用 npm run dev 来启动开发服务器,访问提示的域名+端口号,
// 在浏览器访问打包后的项目网页,修改代码后试试热更新效果
// 在 js / css 文件中修改代码保存后,会实时反馈到浏览器

8. Webpack 打包模式

// ! Webpack 打包模式
// 开发模式	development	调试代码,实时加载,模块热替换等
// 生产模式	production	压缩代码,资源优化,更轻量等
/* 
  开发模式注重代码热替换更快,让开发调试代码更便捷,
  生产模式注重项目体积更小,更轻量,适配不同的浏览器环境
*/

9. 调试代码 source map

// ! Webpack 开发环境调错 source map
// source map: 准确追踪 error 和 warning 在原始代码的位置
// webpack.config.js 配置 devtool 选项
module.exports = {
  // inline-source-map -- 把源码的位置信息一起打包在 JS 文件内
  devtool: "inline-source-map",
};

// source map 适用于开发环境,不要在生产环境使用(防止被轻易查看源码位置)

10. 解析别名路径

// ! Webpack 设置解析别名路径
// 创建 import 或 require 的别名,来确保模块引入变得更简单
// 1. 原来路径如下:
import { checkUsername, checkPassword } from "../src/utils/check.js";

// 2. 配置解析别名:在 webpack.config.js 中设置
module.exports = {
  resolve: {
    alias: {
      MyUtils: path.resolve(__dirname, "src/utils"),
      "@": path.resolve(__dirname, "src"),
    },
  },
};

// 3. 引入目标模块写的路径变简单了
import { checkUsername, checkPassword } from "MyUtils/check.js";
import { checkUsername, checkPassword } from "@/utils/check.js";
保姆级教程:在RK3588开发板上用CMake交叉编译ZLMediaKit(附完整toolchain配置) 本文提供了一份详细的RK3588开发板上使用CMake交叉编译ZLMediaKit的教程,包括完整的toolchain配置和实战避坑指南。从环境准备、工具链配置到依赖处理、编译部署,手把手指导开发者完成ARM64架构的流媒体服务搭建,特别适合嵌入式开发新手。 阅读详情

相关推荐

OpenClaw本地部署教程

本文详细介绍了在Windows 11系统上部署OpenClaw与Ollama本地模型的完整流程。主要内容包括:硬件要求说明、Node.js环境配置、Ollama模型安装与定制(重点扩展上下文窗口至32768 tokens)、OpenClaw核心框架安装与对接、常见问题解决(如模型上下文窗口过小报错)以及可选技能扩展和飞书接入方案。部署全程约需1-2小时,强调使用备用设备或虚拟机以确保安全,并提供关键配置参数和排错命令。该方案实现了"数据不出门、推理本地化"的私有化部署目标。

技术引领业务创新 2576

浅谈webpack devtool里的Source Map

💅 想寻找共同学习交流、共同成长的伙伴,文章最后有作者l联系方式(备注进群)

weixin_57677300的博客 2050

Airsim动态 | 安装ROS包装器(AirSim ROS Wrapper)

本期内容我们将带来在Airsim环境下使用ROS Wrapper的相关教程,以下是AirSim客户端库上的一些ROS Wrapper相关配置。 一、启动 以下步骤适用于 Linux 系统。如果是在 Windows 上运行 AirSim,可以使用 Windows Subsystem for Linux (WSL) 来运行 ROS 包装器,如果不想在主机上安装ROS相关工具,也可以使用Docker容器进行安装。请检查下方内容并按照需求安装,具体内容可以参照最后网址。 如果您的默认 GCC 版本不是8或更高版.

AMOVLAB(阿木实验室) 1776

npm run dev

问题: 解决:

cjm_01的博客 340

数字IC后端实现 | Innovus各个阶段常用命令汇总

数字IC后端设计实现之Innovus常用命令汇总

weixin_37584728的博客 7316

AgentVerse实战:构建多智能体协作系统的关键技术与应用场景

本文深入探讨了AgentVerse框架在构建多智能体协作系统中的关键技术及应用场景。通过分析智能体通信协议、环境交互机制和任务分解算法,展示了如何利用大型语言模型(LLM)实现智能体间的专业化分工与动态协作。文章还提供了智能软件开发团队和智能客服系统等典型应用案例,以及部署优化实践,为开发者构建高效的多智能体系统提供实用指导。

weixin_29254029的博客 361

利用Webpack打包Node.js项目

node项目打包

qq_50721840的博客 509

深度测评:Accio Work——目前普通用户最友好的多 Agent 协同工具

摘要:Accio Work是阿里国际站推出的多Agent协同工具,通过借鉴古代"三省六部制"构建高效协作框架。该工具支持主流大模型,可配置专业Agent角色,实现40分钟内完成复杂产品PRD等高效协作。其亮点在于直观的UI设计和流程驱动机制,能强制各Agent从专业视角深度思考。虽然超长对话稳定性有待优化,但作为目前最用户友好的多Agent工具,显著降低了构建复杂AI团队的门槛,成为提升个人和小微企业生产力的利器。

Maynor的博客 1729

Vue项目分包打包配置(包含dev)全过程

Vue项目手把手教你如何分包

weixin_41884808的博客 5494

【以太网硬件十九】SGMII到底能不能直接出光模块?

详细解释为什么SGMII可以直接出光模块及其使用限制

highman110的博客 1万+

2026年中科曙光嵌入式软件岗位面试题库(附参考答案)

嵌入式系统与C/C++基础摘要 硬件与外设总线 SPI总线:高速全双工同步串行接口,采用SCLK、MOSI、MISO和CS信号线,支持一主多从架构,典型应用于Flash存储、传感器等高速外设。 I2C总线:两线制低速串行总线(SDA/SCL),支持多主多从,需注意地址冲突和信号完整性。 时序约束:包括建立时间、保持时间、时钟周期等,是保障电路稳定运行的关键。 AD转换:将模拟信号转换为数字信号,应用于传感器采集、音频处理等场景。 PC寄存器:存储下一条指令地址,控制程序执行流,在跳转和中断时自动更新。 C/

Open 69

webpack4中的devtool配置

webpack4中的devtool配置 为什么有时候需要配置devtool devtool配置选项是用来控制是否生成source map,以及如何生成source map 什么是source map 它是一个储存源代码和打包代码映射关系信息的文件,专门用于调试和debug source map作用 因为sourceMap是一个映射关系,所以可以把打包后出错的代码位置和源代码对应的代码位置对应,这样我们可以很快定位错误 webpack4关于devtool的默认配置 mode:developmen

YMX2020的博客 2691

RT-DETR算法优化改进:Backbone改进 | HGBlock完美结合PPHGNetV2 GhostConv

GhostConv助力RT-DETR ,HGBlock与PPHGNetV2 GhostConv完美结合

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 2909

学会用Webpack搭建开发环境并打包代码

学习目标:1.学会如何用webpack搭建开发环境 2.进一步深入学习如何用webpack打包并能优化代码

来自想要赚大钱的小周同学 1869

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

webpack超详细教程,学webpack看这一篇就够了!(下)

今天,我们来讲一讲webpack进阶的知识,例如【通过webpack搭建开发环境】【注入环境变量】【设置解析别名路径 】等等,一起学起来吧~

共同学习,共同成长 2390

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

webpack搭建开发环境

3.使用 npm run dev 来启动开发服务器,访问提示的域名+端口号,在浏览器访问打包后的项目网页,修改代码后试试热更新效果。2.问题:cross-env 设置的只在 Node.js 环境生效,前端代码无法访问 process.env.NODE_ENV。作用:启动 Web 服务,打包输出源码在内存,并会自动检测代码变化热更新到网页,不用自己一直重新打包。:webpack.config.js 配置导出函数,但是局限性大(只接受 2 种模式)

m0_57851747的博客 2252

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

深入浅出Node.js-5(Webpack模块打包工具)

本章节通过从0到1的方式来配置出一个【工程化】项目结构,让大家了解Node+Webpack是如何做工程化配置的。

weixin_67448099的博客 1499

Webpack模式-Resolve-本地服务器

Resolve解析、模式、搭建本地服务器

qq_45730399的博客 1648

简单的Node.js及Webpack-3

打包html时需要规定对应模版,并使用chunks指定引入哪些模块(如果不加会直接引入上面入口的所有模块),生成对应的css。注意:source map 仅适用于开发环境,不要在生产环境使用(防止被轻易查看源码位置)inline-source-map 选项:把源码的位置信息一起打包在 js 文件内。好处:减轻自己服务器请求压力,就近请求物理延迟低,配套缓存策略。作用:在编译时,将前端代码中匹配的变量名,替换为值或表达式。定义:内容分发网络,指的是一组分布在各个地区的服务器。环境生效,前端代码无法访问。

2301_81525305的博客 326

Node-Webpack静态模块打包工具

Webpack概念 使用 Webpack 修改 Webpack 打包入口和出口 自动生成 html 文件 打包 css 模块 打包 less 模块 打包图片 babel 编译器 Webpack 开发服务器 打包模式 开发环境调错 - source map 解析别名 alias

2301_76866366的博客 931

Webpack

注意3:webpack-dev-server根据配置,打包相关代码在内存当中,以output.path的值作为服务器根目录,所以可以直接自己拼接访问dist目录下内容。注意1:webpack-dev-server借助http模块创建8080默认Web服务。开发环境:配置webpack-dev-server快速开发应用程序。作用:启动Web服务,自动检测代码变化,热更新到网页。webpack-dev-server软件包到当前项目。问题:之前改代码,需重新打包才能运行查看,效率很低。

weixin_46479909的博客 804

webpack

webpack 客户端 静态资源服务器 接口服务器 ​ 本质上,webpack 是一个现代 JavaScript 应用程序的静态模块打包器(module bundler)。当 webpack 处理应用程序时,它会递归地构建一个依赖关系图(dependency graph),其中包含应用程序需要的每个模块,然后将所有这些模块打包成一个或多个 bundle。 五个核心概念 Entry:入口起点(entry point)指示 webpack

weixin_57218747的博客 241

webpack4-06-开发、生产环境、动态CDN配置

环境分析 开发环境 在开发环境中,我们需要具有强大的、具有实时重新加载(live reloading)、热模块替换(hot module replacement)能力的 source map(方便开发者调试代码) 和 localhost server(本地服务器)。 大致如下: webpack-dev-server实时重载、热替换 不压缩代码 css样式不提取至单独的文件中 使用source...

weixin_34396103的博客 1623

【学习日记】webpack配置文件分析(dev)2020-8-15

1、webpack.base.conf.js 基础的webpack配置文件,配置一些dev和prod模式共有的属性。 2、webpack.dev.conf.js 配置一些dev模式特有的属性,使用webpack-merge与webpack.base.conf.js里的配置合并 3、整合后的dev模式配置文件: 3.1、entry: //webpack.base.conf.js中 entry: { app: './src/main.js' }, //webpack.dev.c

weixin_43668630的博客 447

react-transform-boilerplate配置详解:自定义Webpack设置打造专属开发环境

react-transform-boilerplate是一个功能强大的Webpack脚手架,专为React开发者设计,提供热重载组件和模块化错误处理能力。本文将详细介绍如何通过自定义Webpack配置,打造适合个人需求的React开发环境,让开发过程更加高效流畅。 ## 📋 准备工作:项目基础架构 在开始配置前,我们先了解项目的核心文件结构: - **开发环境配置**:[webpack.c

gitblog_00238的博客 366

简述Vite与Webpack原理

Vite与Webpack核心差异在于构建方式:Vite利用浏览器原生ESModule实现按需加载,开发环境通过esbuild预构建依赖(CJS转ESM)和实时单文件编译,配合精准HMR实现秒级启动与更新;生产环境则切换为Rollup进行完整打包。其优势源于去中心化编译和原生ESM支持,但存在旧浏览器兼容性限制。整体呈现"开发极速、生产稳健"的特点,尤其适合现代前端项目的敏捷开发需求。(149字)

2302_80473627的博客 709
上一篇: 二三(Node2)、Node.js 模块化、package.json、npm 软件包管理器、nodemon、Express、同源、跨域、CORS
下一篇: 二五(Vue2-01)、创建实例、插值表达式、响应式、Vue指令(v-show v-if v-on v-bind v-for v-model)
bpmf_fff
博客等级 码龄6年 219粉丝 49原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值