[Node] Node.js Webpack打包图片-Js-Vue

Vue第五天学习总结——Vue全家桶之前端工程化(模块化相关规范、webpack、Vue单文件组件、Vue脚手架、组件库——Element-UI 的基本使用) (一) 模块化相关规范 1. 模块化概述 传统开发模式的主要问题 命名冲突:多个js文件中的同名变量会冲突 文件依赖:js文件之间无法相互引用问题 通过模块化解决上述问题 模块化就是把单独的一个功能封装到一个模块(文件)中,模块之间相互隔离,但是可以通过特定的接口公开内部成员,也可以依赖别的模块 模块化开发的好处:方便代码的重用,从而提升开发效率,并且方便后期的维护 2. 浏览器模块化规范 AMD Require.js (http://www.requirejs.cn/) CMD Se 阅读详情

🖥️ Node.js专栏:Node.js 初级知识 Webpack打包图片-Js-Vue
🧑‍💼 个人简介:一个不甘平庸的平凡人🍬

✨ 个人主页:CoderHing的个人主页

🍀 格言: ☀️ 路漫漫其修远兮,吾将上下而求索☀️

👉 你的一键三连是我更新的最大动力❤️


目录

1 Webpack打包图片

加载图片案例准备

认识asset module type

Asset module type的使用

url-loader的limit效果

2 Webpack打包JS代码

为什么需要babel?

Babel命令行使用

插件的使用

Babel的预设preset

3 Babel和babel-loader

Babel-preset

4 Webpack打包Vue

编写App.vue代码

App.vue的打包过程

@vue/compiler-sfc

5 resolve模块解析

确实 文件还是文件夹

extensions和alias配置


1 Webpack打包图片

加载图片案例准备

JavaScript
// 引入图片模块
import zznhImage from "../img"

// 创建img元素
const imgEL = document.createElement('img')
imgEL.src = zznhImage
document.body.append(imgEL)

比较常用的使用图片的方式是两种:

img元素,设置src属性

其他元素(如div),设置 background-image的css属性;

认识asset module type

我们当前使用的webpack版本是webpack5:

在webpack5之前,加载这些资源我们需要 使用一些loader 如 law-loader url-loader

在webpack5开始,我们可以直接使用 资源模块类型(asset module type)来替代上面这些loader

资源模块类型(asset module type) 通过添加4种新的模块类型,来替换所有这些loader;

asset/resource 发送一个单独的文件并导出URL

之前通过使用file-loader实现

asset/inline 导出一个资源的data URL

之前通过使用 url-loader实现

asset/source 导出资源的源代码

之前通过使用raw-loader实现

Asset 在导出一个 data URI 和发送一个单独的文件之间自动选择

之前通过使用url-loader 并且配置资源体积限制实现

Asset module type的使用

如 加载图片 我们可以使用下面的方式

JavaScript
{
    test:/\.(png|svg|jpe?g|gif)$/
}

但是 如何可以自定义文件的输出路径和文件名呢?

一:修改output,添加assetMouduleFilename属性(比较少)

JavaScript
output:{
        assetModuleFilename:"abc.png"
},

二:在Rule中 添加一个generator属性,并且设置fulename

JavaScript
generator:{
    // 占位符
    // name:指向原来的图片名称
    // ext: 扩展名
    // hash 哈希值 webpack生成的hash值
    filename:"[name]_[hash:8].[ext]"
}

介绍几个常用的placeholder:

[ext]:处理文件的扩展名

[name]: 处理文件的名称

[hash]: 文件的内容 使用MD4的散列函数处理,生成一个128位的hash值(32个十六进制)

url-loader的limit效果

开发中 往往是 小的图片需要转换,但是大的图片直接使用图片即可

因为 小的图片转换base64之后可以和页面一起被请求,减少不必要的请求过程,

而 大的图片也进行转换,反而会影响页面的请求速度

我们需要两个步骤来实现:

一:将type修改为asset

二:添加一个parser属性 指定dataUrl条件 添加maxSize属性

2 Webpack打包JS代码

为什么需要babel?

事实上, 在开发中 很少直接去接触babel 但是babel对于前端开发来说 目前是不可缺少的一部分:

开发中 我们想要使用ES6+的语法 想要使用TS 开发React项目 它们都离不开babel的

所以,学习babel对于 理解代码从编写到线上的转变过程 至关重要;

Babel到底是什么?

babel是一个 工具链 主要用于 旧浏览器或者环境中将ECMAScript2015+代码转换为向后兼容版本的Js; 包括 语法转换 源代码转换等

JavaScript
[1,2,3].map((n)=>n+1)
[1,2,3].map(function(n){
    return n+1
})

Babel命令行使用

babel本身可以作为  一个独立的工具 不和webpack等构建工具配置来单独使用

如果我们希望在命令行尝试使用babel 需要安装如下库:

@babel/core: babel的核心代码,必须安装

@babel/cli: 可以让我们在命令行使用babel

JavaScript
npm install @babel/cli @babel/core -D

使用babel来处理我们的源代码

src:是源文件的目录

--out-dir:指定要输出的文件夹dist;

JavaScript
npx babel src --out-dir dist;

插件的使用

我们需要转换箭头函数 那么我们就可以使用箭头函数转换相关的函数:

JavaScript
npm install @babel/plugin-transform-arrow-functions -D

npm babel src --out-dir dist --plugin=@babel/plugin-transform-arrow-functions

查看转换后的结果: 发现 const并没有转换成var

因为plugin-transform-arrow-functions并没有提供这样的功能

需要使用plugin-transform-block-scoping来完成这样的功能

JavaScript
npm install @babel/plugin-transform-block-scoping -D

npx babel src --out-dir dist --plugins=@babel/plugin-transform-block-scoping,@babel/plugin-transform-arrow-functions

Babel的预设preset

如果要转换的内容过多,一个个设置比较麻烦,我们可以使用预设(preset)

安装@babel/preset-env预设:

JavaScript
npm install @babel/preset-env -D

执行如下命令:

JavaScript
npx babel src --out-dir dist --presets=@babel/preset-env

3 Babel和babel-loader

babel-loader

我们通常会在构建工具中通过配置babel来对其进行使用 如 webpack中

我们就需要去安装相关依赖:

如果之前已经安装了@babel/core,那么这里不需要再安装

JavaScript
npm install babel-loader -D

我们可以设置一个规则,在加载js文件时,使用我们的babel

JavaScript
module:{
    rules:[
        {
            test:/\.m?js$/,
            use:{
                loader:"babel-loader"
            }
        }
    ]
}

Babel-preset

webpack根据我们的预设来加载对应的插件列表 讲其传递给babel

如常见的预设有三个:

Env

React

TypeScript

安装preset-env:

JavaScript
npm install @babel/preset-env
==========================
{
    test:/\.m?js$/,
    use:{
        loader:"babel-loader",
        options:{
            presets:[
                ["@babel/preset-env"]
            ]
        }
    }
}

4 Webpack打包Vue

编写App.vue代码

在开发中 会编写Vue相关代码.webpack可以对vue代码进行解析

JavaScript
<template>
    <div>
        <!-- html -->
        <h2 class="title">{{title}}</h2>
        <p class="content">我是内容,哈哈哈哈哈哈</p>
    </div>
</template>

<script>
    export default {
        data(){
            return {
                title:"我是vue标题"
            }
        }
    }
</script>

<style>
    .title {
        color: blue;
        font-size: 100px;
    }
    .content {
        color: red;
        font-size: 30px;
    }
</style>

JavaScript
import {createApp} from "..."
inmprt App from './vue/...'

// Vue代码
createApp(App).mount("#app")

App.vue的打包过程

我们需要vue-loader:

JavaScript
npm install vue-loader -D

在webpack的模版规则中进行配置

JavaScript
{
    test:/\.vue$/,
    loader:"vue-loader"
}

@vue/compiler-sfc

打包依然会报错,因为我们必须添加@vue/compiler-sfc来对template进行解析

JavaScript
npm install @vue/compiler-sfc -D

另外我们需要配置对应的Vue插件:

JavaScript
const {VueLoaderPlugin} = require('vue-loader/dist/index')
------------------------------------------------------------
new VueLoaderPlugin()

重新打包即可支持App.vue的写法

另外 我们也可以编写其他的.vue文件来编写自己的组件;

5 resolve模块解析

resolve用于设置模块如何被解析:

开发中 会有各种各样的模块依赖,这些模块可能来自于自己编写的代码,也可能来自于第三方库

resolve可以帮助webpack从每个require/import语句中 找到需要引入到合适的模块代码

webpack使用 enhanced-resolve 来解析文件路径

webpack能解析三种文件路径:

绝对路径

由于已经获得文件的绝对路径,因此不需要再做进一步解析.

相对路径

使用import或require的资源文件所处的目录 被认为是上下文目录

在import/require中给定的相对路径 会拼接此上下文路径,来生成模块的绝对路径

模块路径

在resolve.modules中指定的所有目录检索模块;

默认值为['node_modules'] 所以默认会从node_modules中查找文件

我们可以通过设置别名的方式来替换初识模块路径

确实 文件还是文件夹

如果是一个文件:

如果文件具有扩展名,则直接打包文件

否则 使用resolve.extensions选项作为文件扩展名解析

如果是一个文件夹:

会在文件夹中根据resolve.mainFiles配置选项中指定的文件顺序查找;

resolve.mianFiles的默认值是['index']

再根据resolve.extensions来解析扩展名

extensions和alias配置

extensions是解析到文件时自动添加扩展名

默认值为['.wasm','.mjs','.js','.json.'];

所以 如果我们代码中像添加加载 vue或者jsx 或者ts等文件时 我们必须自己写上扩展名

另一个非常好用的功能是配置别名alias:

当我们项目的目录结构比较深的时 或者一个文件的路径可能需要../../../这种路径片段

我们可以给某些常见的路径起一个别名

JavaScript
resolve:{
    extensions:[".wasm",".mjs",".js",".json",".jsx",".jsx",".ts",".vue"],
    alias:{
        "@":resolveApp("./src"),
        pages:resolveApp("./src/pages"),
    },
},

nodejs pkg打包生成exe,设置自定义图标和产品信息 用node开发应用程序,通常采用express框架进行功能扩展,当系统开发完成后,需要对nodejs+express工程打包封装。最常用的打包方式是使用pkg。本篇主要解决采用pkg打包后生成exe安装包,默认的图标是node的绿色六边形,一眼看去就是nodejs的应用程序。通常公司产品化的软件系统,需要标识为公司的logo和版权信息。 阅读详情

相关推荐

Bellhop水声信道模型的仿真

Bellhop是一种基于射线追踪的水声信道模型,广泛用于预测水下环境中的声压场。它通过模拟声波在水中的传播路径,计算声场分布,适用于复杂的水下通信场景。

yt94832的博客 1315

Webpack打包图片-JS-Vue

1 Webpack打包图片 2 Webpack打包JS代码 3 Babel和babel-loader 5 resolve模块解析 4 Webpack打包Vue

weixin_56663198的博客 1224

深入解析高通Adreno DPU的DRM/KMS驱动架构与硬件协同设计

本文深入解析了高通Adreno DPU的DRM/KMS驱动架构与硬件协同设计,详细介绍了Adreno DPU的核心模块组成、显示接口设计以及DRM驱动架构。通过实际案例和调试技巧,帮助开发者理解硬件与软件的协同工作原理,优化显示性能并解决常见问题。

weixin_29266679的博客 438

webpack-开发环境-打包图片资源

webpack-开发环境-打包图片资源 创建文件及图片,如下所示 下载安装loader包 npm install --save-dev html-loader url-loader file-loader 修改配置文件 webpack.config.js,代码如下 const { resolve } = require('path'); const HtmlWebpackPl...

肖帅的博客 259

KUKA-外部自动运行模板程序——个人设计模式&思路

用于说明KUKA与西门子PLC外部自动交互模板的设计思路与使用流程

qq_39024187的博客 5626

Android车载蓝牙开发全攻略:从基础到高级优化

本文系统介绍了Android车载蓝牙开发的核心技术与实践指南。文章首先阐述了蓝牙在智能汽车中的关键作用,包括免提通话、音频流媒体等应用场景。随后详细解析了蓝牙协议基础,重点介绍了HFP、A2DP等车载常用协议。开发实战部分提供了设备发现、连接、数据传输的完整代码示例,并融入多线程和内存优化技巧。通过真实车载案例,展示了启动时间、流畅度和资源使用的优化策略。最后针对面试需求,提供了专业的技术问答,涵盖蓝牙开发全流程。全文紧密结合Android车载开发职位要求,为开发者提供了一套完整的蓝牙技术解决方案。

郑伟强dev的专栏 119

nodejs打包成桌面程序(exe)的进阶之路

nodejs打包成桌面程序(exe)的进阶之路 node js bat 前端 计划任务 前言:最近的研究,请大佬们细品 第一篇 - 任务计划程序篇 说真的研究到将nodejs打包成可执行的exe文件是个意外的方向。 刚开始我的需求就是想要在电脑开机时自启动nodejs的项目;因为自己目前是搞前端开发的,而nodejs现在对于前端来说还是很火的,我们也会经常接触到它,比如webpack、Vue、React等都要用到nodejs进行编译,转换成浏览器可识别的文件,在这里nodejs扮演的是

过客2019 2万+

基于 STM32 单片机的实验室多参数安全监测系统设计与实现

本系统以 STM32F103C8T6 单片机为核心,集成温湿度监测、烟雾检测、气体泄漏报警、人体移动监测等功能模块,通过 OLED 显示屏实时显示数据,并支持 Wi-Fi 远程传输。系统可对实验室异常环境参数(如高温、烟雾、燃气泄漏)及非法入侵实时报警,保障实验室安全。本文从硬件选型、电路设计到软件实现提供了完整的实验室安全监测系统方案,可根据实际需求调整传感器类型和通信方式,适用于科研、教学等场景的环境安全防护。:可增加继电器模块控制通风设备或切断电源,集成 ZigBee 组网实现多实验室联动监测。

weixin_42300449的博客 1285

node.js配合electron打包成安装包

electron打包成安装包,electron如何修改logo

weixin_60523038的博客 2531

2、实时DSP编程技术及其应用

本文详细介绍了实时数字信号处理(DSP)技术及其应用,涵盖三种流行的浮点DSP处理器系列的特点、开发工具和优化方法。通过具体的应用实例,如语音压缩、音乐信号处理和雷达信号处理,展示了如何在实际项目中应用这些技术,帮助工程师提高系统的性能和可靠性。

cicd6pipeline的博客 840

硬件工程师入门基础知识(一)基础元器件认识(二)

我们的电路输入一般是只有两种状态,0V 或者是其它的高电平(1.8V,3.3V,5V 等),截止状态一般不用怎么考虑,因为如果让三极管的 Vbe=0,自然就截止了,重要的是饱和状态如何保证。也就是说只要 Rb

小幽余生不加糖 1万+

Webpack配置

Webpack webpack依赖于Node,故要先装node,在用Node的npm工具安装webpack 1打包 文件准备,main.js打包成bundle.js 创建一个webpack.config.js文件 首先引入path模块拼接路径 接着导出 module.export={ //输入 entry:‘main.js’ //输出 output:{ path:path.join(__dirname,‘dist’) //输出的那个文件所在的位置 filename:'bundle.js’文件名 } } 接

lin_fightin的博客 1292

【2026OD新机考】【不定滑窗】20260415-API请求日志去重分析【Py/Java/C++/C/JS/Go六种语言OD真题】【欧弟算法】全网注释最详细分类最全的华子OD真题题解

中找到所有的连续的相同元素,同时统计对应的连续相同元素对应的值的平均值。:当右指针为第一个元素(没有前一个元素),或者右指针对应的元素。某微服务系统的日志监控平台需分析API调用记录,日志含大量。相等,说明当前元素仍然属于同一个相同元素窗口,将当前元素值。中的所有元素均相等,并且计算窗口和情况即可。请实现一个函数,对给定的日志数据去重合并处理。位置,表示开启一个新的窗口,此时需要重置窗口和。,为了优化重复的请求记录,存储和后续分析需对。:对应的响应时间数组(毫秒)。重新置为当前右指针的元素值。

weixin_48157259的博客 112

Vue - Webpack

文章目录一、什么是Webpack二、Webpack安装1. 全局安装webpack三、Webpack的初使用1. 在项目目录新增webpack.config.js文件2. webpack打包四、loader1. loader使用过程 一、什么是Webpack webpack是一个JavaScript应用的静态模块打包工具 二、Webpack安装 安装webpack首先需要安装Node.js, Node.js自带了软件包管理工具npm 1. 全局安装webpack npm install webpack

qq_33962481的博客 326

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

Webpack安装与使用

webpack是一个用于现代JavaScriptying'yong'cehng'x

asfsdfh的博客 277

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Vue2项目优化:突破JavaScript堆内存限制的实战技巧

本文针对Vue2项目打包时常见的JavaScript堆内存溢出(JavaScript heap out of memory)问题,提供了实战解决方案。核心方法是调整Node.js内存上限,通过修改构建命令设置`--max_old_space_size`参数。文章还深入分析了V8内存管理机制,并给出了项目依赖优化、构建产物分析等进阶减负技巧,帮助开发者从根本上优化构建流程。

4k5l6j7h8的博客 436

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Webpack打包工具安装使用介绍

一.Webpack的安装 webpack安装依赖nodejs,下面介绍是基于系统已安装node.js webpack3.6.0 是vue cli2脚手架依赖的版本 npm install webpack@3.6.0 -g(全局安装) 二.webpack模块化开发基本目录结构 下面是一个最基础的webpack目录结构 src 源代码放置目录 dist(distribution发布)代码发布目录 当进行模块化开发时,js代码之间有依赖(CommonJS或ES6模块化开发),我们可以将依赖的js文件打包成一个文

qq_42707967的博客 713

webpack

webpack打包概述流程

daigua0的博客 1270

webpack 打包后,图片加载错误

使用webpack打包后,图片没有加载出来,页面空白,报错图片引用的路径不对。

m0_67880202的博客 1098

新手小白VUE整理(1) —— webpack

vue 入门整理:node.js简单安装与webpack使用

a35336000的博客 516

webpack体验

记录:259 本例环境: Node.js: v14.17.3 Npm: 6.14.13 webpack: 4.46.0 Visual Studio Code: 1.59.1 一、名词 Node.js:一个基于Chrome V8引擎的JavaScript运行时;运行在服务端的JavaScript,基于事件驱动I/O服务端JavaScript环境。 npm:a JavaScript package manager(JavaScript包管理器)。 webpack:前端项目构建工具(打包工具),

zhangbeizhen18的博客 723

前端工程化webpack

模块化概述 大一统的模块化规范 – ES6模块化 Node.js 中通过 babel 体验 ES6 模块化 打开CTRL+`打开终端 npm install --save-dev @babel/core @babel/cli @babel/preset-env @babel/node npm install --save @babel/polyfill 创建项目跟目录创建文件 babel.config.js const presets = [ [ '@babel/env',

qq_45129167的博客 423

Vue_03_webpack的使用

开始

LycLhsYYY的博客 274

webpack起步

webpack手册

weixin_44600810的博客 692

【十次方前端】

一、需求和环境搭建 1、前后端分离 2、node.js:运行在服务器端的JavaScript 实现了开放8888端口的服务器,并可使用request和response实现请求响应 运行:node demo1(.js) 3、包资源管理器npm:初始化、下载js到本地或全局-g npm run dev运行工程,npm run build编译工程 常使用淘宝镜像cnpm进行安装-npm install...

USTSD的博客 159

Rspack 实战:用 image-minimizer-webpack-plugin 做图片压缩,优化打包体积

本文介绍了如何在Rspack项目中集成image-minimizer-webpack-plugin实现图片压缩。Rspack作为兼容webpack生态的高性能打包工具,可以直接复用webpack插件。通过配置sharp和svgo压缩工具,可针对不同图片格式设置优化参数,兼顾构建速度和图片质量。文章详细说明了安装依赖、配置Rspack的关键步骤,包括环境判断、压缩参数调优等注意事项。最后建议通过体积对比和清晰度检查来验证压缩效果,可根据实际需求调整quality值取得平衡。

weixin_37984280的博客 1984
上一篇: [Node] Node.js Webpack和打包过程
下一篇: [Node] Node.js Webpack常见的模式
评论 34
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

coderHing[专注前端]

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值