vite项目中处理各种静态资源的引入方式介绍

12 篇文章 2 订阅
订阅专栏

一、引用图片资源

在vite创建的vue3项目中,引用图片资源有以下两种方式

  1. 直接在模板中使用路径引用:在模板中使用标签,通过src属性引用图片。例如:
<template>
  <div>
    <img src="./assets/logo.png">
  </div>
</template>
  1. 在JS或CSS中使用import引用:可以在JS或CSS文件中使用import语句引用图片资源,这种方式会让vite自动将路径替换成URL。例如:
<script>
  import logo from '@/assets/logo.png'
  export default {
    data() {
      return {
        logoSrc: logo
      }
    }
  }
</script>
<style>
  .logo {
    background: url(@/assets/logo.png);
  }
</style>

注意 默认情况下,TypeScript 不会将静态资源导入视为有效的模块。要解决这个问题,需要添加 vite/client
Vite 默认的类型定义是写给它的 Node.js API 的。要将其补充到一个 Vite 应用的客户端代码环境中,请添加一个 d.ts 声明文件:

/// <reference types="vite/client" />

或者,你也可以将 vite/client 添加到 tsconfig.json 中的 compilerOptions.types 下:

{
  "compilerOptions": {
    "types": ["vite/client"]
  }
}

二、显式 URL 引入’?url’

在import导入资源路径的时候后面加上’?url’就是vite的显示URL引入方式

import testurl from '@/test/testurl.js?url'
console.log(testurl) // /src/test/testurl.js

在这里插入图片描述

在Vite中,加上?url参数可以触发Vite的特殊处理机制。具体作用是Vite会将文件内容作为字符串并添加到导入语句中,并返回一个代理URL(类似/data-vite-xxx.js)。该代理URL指向Vite服务运行时生成的一个临时文件,这个临时文件包含了原始文件的内容。因此,加上?url参数的导入语句实际上是在请求一个临时文件,而不是原始文件

这种方式的应用场景是需要在运行时动态加载文件,并且不希望在生产环境中将所有文件打包到一个JavaScript文件中。例如,在一些Web应用中,需要在用户进行交互操作时动态加载特定模块的代码,在这种情况下,可以使用这种方式进行模块加载。

对于代码import test from “./src/test.js?url”,打印出来的"/src/test.js"实际上是Vite返回的代理URL中包含的原始路径信息,这并不代表导入的真实文件路径

这种引入方式可以方便地管理项目中的资源路径和名称,而且还可以实现一些特殊的需求,比如资源的按需加载、CDN加速等。

三、将资源引入为字符串‘?raw’

testurl.js文件内容如下:

  • testurl.js
    在这里插入图片描述
    我们以‘?raw’形式引入,
import testurl from '@/test/testurl.js?raw'
console.log(testurl)

此时打印出来的内容如下
在这里插入图片描述
可以看到这种引入方式vite将源文件的内容以字符串的形式加载了。

应用场景

举个例子,假设我们有一个 css 文件,其中只包含了一段样式字符串,我们并不需要对它进行编译或预处理,只是需要直接拿到这个字符串来进行一些其他的操作。这时候,就可以像下面这样来引入这个文件:

import myCssString from '@/styles/my.css?raw';

这样,我们就可以拿到 my.css 文件中的样式字符串,并进行相应处理。

四、导入脚本作为 Worker

脚本可以通过 ?worker 或 ?sharedworker 后缀导入为 web worker。

// 在生产构建中将会分离出 chunk
import Worker from './shader.js?worker'
const worker = new Worker()
// sharedworker
import SharedWorker from './shader.js?sharedworker'
const sharedWorker = new SharedWorker()
// 内联为 base64 字符串
import InlineWorker from './shader.js?worker&inline'

众所周知,js是单线程的,而vite对于加载静态资源时使用 import 资源路径 + ?worker 的方式,其实就是告诉 Vite 这份代码是一个 Worker,需要特殊处理。在 Vite 中,Worker 也是一种模块,通常是在主线程之外执行,并且可以利用多个 CPU 核心来进行计算和渲染

当我们使用 import 资源路径 + ?worker 的方式来导入一个 Worker 的时候,在 Vite 的编译过程中,会自动将其编译为一个字符串,然后通过 Blob 构造函数来创建一个新的 Worker 实例。这样就可以实现在浏览器中利用多个 CPU 核心来并行处理大量复杂的计算任务,提高代码运行效率

需要注意的是,在使用 import 资源路径 + ?worker 的方式来导入一个 Worker 的时候,我们需要确保这份代码中没有依赖其它模块,否则会出现引用错误的问题。因此,我们通常会在 import 语句中使用相对路径来导入 Worker 中需要的其它代码。

举个例子

新建一个myworker.js文件, 通过postMessage项主线程发送消息

  • myworker.js
let i = 0
function timedCount() {
  i = i + 1
  postMessage(i) // 向主线程发送消息
  setTimeout(timedCount, 500) // 500ms后再次调用timedCount
}
timedCount()

在app.vue中引入

// 导入worker
import Worker from '@/test/myworker.js?worker'
const worker = new Worker()
worker.onmessage = (e) => {
  console.log(e)
  console.log('接收worker传递过来的值', e.data) 
}

打印结果如图:
在这里插入图片描述
可以看到我们成功的接收到了来自worker 传递过来的值,实现了主线程和子线程之间的通信。

五、导入JSON

JSON 可以被直接导入 —— 同样支持具名导入:

// 导入package.json
import pkg from '../package.json'
console.log(pkg)

打印的pkg内容如下:
在这里插入图片描述

// 具名导入
import { name } from '../package.json'
console.log(name)

打印的name值如下:
在这里插入图片描述

Vue3 - vite 引入本地图片方法,页面引入本地静态资源图像详细教程,解决 UI 前端组件库的图片属性无法使用本地图像问题(无论是本地开发还是打包部署,本地图片的路径正常可用)
王佳斌
09-08 8902
vue3 vite引入使用本地图片,vue3 vite如何引入本地资源的图片图像,vite 怎么把本地的图片赋值给src图片标签属性,vue3 vite 使用require引入本地图像报错,vue3 vite组件库的组件怎么引入本地图片,vue3 vite 如何给组件库的图片属性链接本地资源的图像,element plus ant design vue 组件怎么使用本地资源的静态图片,vue3 vite版本 引入本地静态图片的方式vue3 + vite引入本地图片,vue3如何加载本地图片等静态资源引入
Vite(二)依赖预构建、静态资源处理、构建生产版本
qq_43456781的博客
10-26 3078
Vite(二)依赖预构建、静态资源处理、构建生产版本 文章目录Vite(二)依赖预构建、静态资源处理、构建生产版本1. 依赖预构建原因自动依赖搜寻Monorepo 和链接依赖自定义行为缓存文件系统缓存浏览器缓存2. 静态资源处理将资源引入为 URL显式 URL 引入将资源引入为字符串导入脚本作为 Worker`public` 目录3. 构建生产版本浏览器兼容性公共基础路径自定义构建多页面应用模式库模式 网址:https://vitejs.cn/guide/why.html 1. 依赖预构建 当你首次
(05)vite处理静态文件及引入
秋来九月八
12-21 912
vite.config.js进行配置,通过resolve和alias 完成配置,和webpack那边基本一致。利用node自带的path来解析路径,然后配置别名,方便项目各种层级的引用。一般打包的配置放到vite.prd.config.js。配置别名后,引入静态资源时直接使用。
Vue-静态资源路径的使用
m0_74462339的博客
08-20 270
当你在 Vue 项目使用@/assets或相对路径引用静态资源时,Webpack 会处理这些路径。@/assets是 Vue CLI 的路径别名,表示src/assets目录。如果你遇到错误,通常是因为 Webpack 未正确处理这些路径,或者你的静态资源没有正确地放在构建后的目录
vue3+js+vite学习之静态资源引入(包括动态图片)
u014015203的博客
09-14 1548
因为vite不支持require的写法,所以在vite使用的方法获取图片url。
vue+vite项目,动态导入静态资源的几种方式
关注前端,关注原创
02-06 2448
项目遇到一个场景,页面的标题栏结构基本相同,只是图片需要动态改变,不同类型的页面,进入后,加载不同的图片。遇到问题,查官网。官网不懂,问博主。
前端框架搭建(二)导入静态资源vite
qq_22841387的博客
12-14 798
原生创建的显然无法进行自定义的修改,我们需要将其函数化,方便对各个插件进行个性化操作。因为后续我们还需要引入css框架,因此在项目创建目录存放外部样式导入。我们需要将其改造为一个方法,统一由一个方法导入插件或者挂载节点。这里可根据你项目的样式文件类型创建,因为这里我只有一个。这样子改造main方法就会使得我们整个项目更加清晰。这里将导入静态资源封装为一个方法,方便统一导入。
vue3+vite动态引入静态资源(动态引入assets文件夹的图片)
m0_58293192的博客
03-02 1680
vue3+vite动态引入静态资源(动态引入assets文件夹的图片)
Vite: 静态资源在生产环境部署
Wang的专栏
06-24 1299
3 ) 打包成单文件或作为base64文件内联。5 )雪碧图减少图片的HTTP的请求。1 )通用的 cdn 前缀。2 ) 图片托管到其他地址。5.2 使用雪碧图优化。
详解vue静态资源打包的坑与解决方案
11-28
静态资源打包使用相对路径后css文件引入大图片路径错误问题。 1、问题 vue-cli 脚手架生成的默认打包配置文件情况下运行 npm run build 打包后,部署项目至特定路径下:如: //ip:port/public/springActivity/ ...
vue3+electron开发桌面应用,静态资源处理方式及路径问题总结
autumngold的专栏
02-27 2355
的引用解析为相应模块的路径,并且,如果项目配置了相应的loader,Webpack 还会处理文件内容,可能会转换这些静态资源为 base64 URI,或者将其复制到输出目录,并修改为最终路径。当你的网站或应用需要在多个子路径或不同的环境部署,而没有固定的根路径时,设置。目录下的静态资源时,例如图片或样式文件,Webpack 会使用相应的加载器(loader)来处理它们。这里的静态路径是指直接写死的字符串,动态路径是指vue的响应式数据生成的路径。静态路径没什么好说的,写相对路径,vue会自动处理好。
vue3+vite创建项目-(傻瓜式教程)
01-19
Vue3 + Vite 创建项目教程 Vue.js 是一个流行的前端框架,它的最新版本Vue3引入了许多新特性,如Composition API、Suspense、Teleport等,提供了更好的性能和更灵活的开发体验。Vite是由Vue.js作者尤雨溪开发的一款...
vite静态资源css、img、svg等)的加载机制及其相关配置
weixin_46769087的博客
12-05 8619
vite静态资源文件的处理
vite引入图片的几种方式
blue_121的博客
05-19 1万+
该目录的资源在开发时能直接通过 / 根路径访问到,并且打包时会被完整复制到目标目录的根目录下。请注意: 引入 public 的资源永远应该使用根绝对路径 —— 举个例子,public/icon.png 应该在源码被引用为 /icon.png。在一个 JavaScript 模块,通过相对路径我们就能得到一个被完整解析的静态资源 URL:(相对路径一定要写正确,当前引入图片的文件,相对图片的位置)生产环境,开发环境统统无效。目录会更省事,不管是开发环境还是生产环境,可以始终以根目录保持图片路径的一致。
Vue 3 + vite技术架引入静态文件的问题(require和import方式
start_sea的博客
06-28 2474
研究了一下才发现,好像vite引入静态资源或者插件啥的,不用require()引入,好像只能使用import引入。郁闷,require()挺好用的捏,居然不行了。使用require()引入可以在data()里面,return返回自定义的数据时,直接挂钩,使用import引入就只能提前引入。使用Vue 3 + vite技术架开发过程引入静态资源时,习惯性使用require()引入,突然发现报错了。
二、Vite 静态资源文件处理(json、图片、svg、js等)
黄彪博客
07-06 1415
/ 如果是 scss 文件 或者 .module.css 文件,会编译 scsscss,然后转为 css module 对象。// 如果引入的是Vue文件,就会编译 Vue文件,有 render函数,调用render 会生成一个 Vue实例对象。// 如果引入的是Vue文件,就会编译 Vue文件,有 render函数,调用render 会生成一个 Vue实例对象。// 如果引入的是Vue文件,就会编译 Vue文件,有 render函数,调用render 会生成一个 Vue实例对象。
Vite】生产环境静态资源的优化与处理详解
最新发布
lph159的博客
09-22 1099
前端开发静态资源通常包括图片、字体、CSS、JS 文件等,它们都是 Web 应用的重要组成部分。有效地处理和优化这些资源对页面加载速度、用户体验有直接影响。Vite 在生产环境提供了开箱即用的优化功能,减少开发者的配置负担。Vite 在生产环境静态资源处理高度自动化,开发者只需进行少量的配置即可享受到优质的性能优化效果。从资源内联、哈希命名到代码压缩与分块,Vite 为现代 Web 应用提供了一整套完善的资源处理机制。在实际项目,善用这些机制不仅能提升用户体验,还能有效减轻服务器负担。
vue3+vite 动态引用静态资源,动态引入assets文件夹图片的几种方式
热门推荐
我总是词不达意的博客
07-20 3万+
vue3+vite 动态引用静态资源,动态引入assets文件夹图片的几种方式
Vite: 关于静态资源处理机制
Wang的专栏
06-23 1123
随着前端技术的飞速发展,项目规模和复杂度不断增加,如何高效地处理静态资源成为了提升开发效率和应用性能的关键Vite,作为新一代前端构建工具,以其轻量级、快速启动和热更新著称,同时也为静态资源的管理和优化提供了先进的解决方案上面,我们总结了 Vite如何处理图片、字体、CSSJavaScript、 JSON 、Worker 文件 、 Web Assembly等文件等静态资源,以及如何利用其特性提升开发体验和生产环境性能而静态资源本身并不是标准意义上的模块,因此对它们的处理和普通的代码是需要区别对。
vite启用history路由后静态资源请求地址会加上路由后缀,我要如何解决这个问题
05-25
如果您在使用 Vite 的 history 模式时,静态资源请求地址会加上路由后缀,您可以尝试以下方法来解决这个问题: 1. 修改 base 路径 在 Vite 配置文件 `vite.config.js` ,将 `base` 属性设置为您的路由路径,例如: ```js module.exports = { base: '/your-route/', // 其他配置项 } ``` 2. 修改静态资源路径 如果您的静态资源路径是使用相对路径引入的,例如: ```html <script src="./js/main.js"></script> ``` 则可能会出现请求路径错误的问题。可以尝试使用绝对路径引入静态资源,例如: ```html <script src="/js/main.js"></script> ``` 这样静态资源的请求路径就不会受到路由后缀的影响了。
写文章

热门文章

  • nginx配置gzip压缩,优化传输效率,加快页面访问速度 15193
  • vue3的getCurrentInstance获取组件实例踩坑记录 14893
  • vue跳转外部链接的方法 13668
  • blender的下载安装和配置中文环境 13264
  • vue3报错 Unexpected mutation of “xxx“ prop.(eslintvue/no-mutating-props) 12575

分类专栏

  • 菜鸟的踩坑之旅 67篇
  • 开发日记 3篇
  • vite 12篇
  • uni-app 17篇
  • 前端面试题 9篇
  • 工具网站 6篇
  • vue3从入门到精通 38篇
  • vue的那些事 53篇
  • 百度地图 8篇
  • 数据结构和算法 7篇
  • 常用的数据处理 7篇
  • 高德地图 11篇
  • AI 4篇
  • react从入门到精通 10篇
  • three.js 27篇
  • 前端常用布局和注意事项 14篇
  • webpack 31篇
  • 前端性能优化 6篇
  • node 22篇
  • ts 13篇
  • js设计模式 1篇
  • arcgis for javascript 8篇

最新评论

  • Vue3 + Vite + Ts 报错:Property ‘xxx‘ does not exist on type ‘never‘

    vues: 虽然能解决,但是把对象写成这样有点欠妥,有其他好的方法的吗?

  • 前端常见面试题之异步(event loop, promise, async/await, 宏任务/微任务)

    jieyucx: // 1 // 2 // 5 // 6 // 11 // 9 // 10 // 13 // 4 // 7 // 8 // 12 // 14 // 15

  • vue3 el-upload文件上传隐藏文件列表

    常乐-: :show-file-list="false" 用这个就可以隐藏了

  • npm ERR! code CERT_HAS_EXPIRED npm ERR! errno CERT_HAS_EXPIRED npm ERR! request to https://registry.

    爪哇小白2021: npm cache clean --force npm config set strict-ssl false // 前两步执行完之后再重新下载依赖 npm install 确实可以 直接清除了一次缓存之后 重新下载然后就可以了.

  • vue中使用高德地图实现历史轨迹回放并能控制播放轨迹的倍速

    功能点分享: 这个代码是播放器设置播放倍数,不是播放中改变倍数,

大家在看

  • 身为程序员的你,卷到最后剩下了什么?35岁从互联网大厂程序员转行成为一名网络安全工程师的心路历程
  • 单臂路由和三层交换 427
  • 旅游平台APP 582
  • 实验二 类与对象
  • Java 各种规则引擎

最新文章

  • Network面板的Waterfall(瀑布流)视图
  • vite项目配置本地开发使用https访问
  • uniapp和vue3中使用vConsole在H5中开启移动端调试
2024年39篇
2023年264篇
2022年29篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

jieyucx

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

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

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

打赏作者

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

抵扣说明:

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

余额充值

深圳坪山网站建设公司广州网站优化简历商丘优化网站排名哪里靠谱初步优化好网站注意事项代发广告网站优化网站源代码优化技巧西安网站界面优化宁夏网站优化哪里靠谱网站seo优化报价什么叫网站优化蔚云速捷青州网站seo优化凤冈县网站优化公司常州网站优化推广安丘网站优化推广价格求推荐好的网站托管如何优化优化网站推广策略网站搜索优化有这云速捷高明北流网站关键词优化大型企业网站seo优化团队宜丰网站优化渠道刚建好的网站优化网站推广优化企业海口网站优化咨询有利于优化推广的外贸网站企石网站优化费用广西网站优化关键词排名过度优化的网站服务行业网站优化案例殷都区网站优化外包优化网站是什么意思专业排名优化网站香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声卫健委通报少年有偿捐血浆16次猝死汪小菲曝离婚始末何赛飞追着代拍打雅江山火三名扑火人员牺牲系谣言男子被猫抓伤后确诊“猫抓病”周杰伦一审败诉网易中国拥有亿元资产的家庭达13.3万户315晚会后胖东来又人满为患了高校汽车撞人致3死16伤 司机系学生张家界的山上“长”满了韩国人?张立群任西安交通大学校长手机成瘾是影响睡眠质量重要因素网友洛杉矶偶遇贾玲“重生之我在北大当嫡校长”单亲妈妈陷入热恋 14岁儿子报警倪萍分享减重40斤方法杨倩无缘巴黎奥运考生莫言也上北大硕士复试名单了许家印被限制高消费奥巴马现身唐宁街 黑色着装引猜测专访95后高颜值猪保姆男孩8年未见母亲被告知被遗忘七年后宇文玥被薅头发捞上岸郑州一火锅店爆改成麻辣烫店西双版纳热带植物园回应蜉蝣大爆发沉迷短剧的人就像掉进了杀猪盘当地回应沈阳致3死车祸车主疑毒驾开除党籍5年后 原水城县长再被查凯特王妃现身!外出购物视频曝光初中生遭15人围殴自卫刺伤3人判无罪事业单位女子向同事水杯投不明物质男子被流浪猫绊倒 投喂者赔24万外国人感慨凌晨的中国很安全路边卖淀粉肠阿姨主动出示声明书胖东来员工每周单休无小长假王树国卸任西安交大校长 师生送别小米汽车超级工厂正式揭幕黑马情侣提车了妈妈回应孩子在校撞护栏坠楼校方回应护栏损坏小学生课间坠楼房客欠租失踪 房东直发愁专家建议不必谈骨泥色变老人退休金被冒领16年 金额超20万西藏招商引资投资者子女可当地高考特朗普无法缴纳4.54亿美元罚金浙江一高校内汽车冲撞行人 多人受伤

深圳坪山网站建设公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化