template内引入静态资源,如image、video等标签的src属性时,可以使用相对路径或者绝对路径,形式如下:
<!-- 绝对路径,/static指根目录下的static目录,在cli项目中/static指src目录下的static目录 -->
<image class="logo" src="/static/logo.png"></image>
<image class="logo" src="@/static/logo.png"></image>
<!-- 相对路径 -->
<image class="logo" src="../../static/logo.png"></image>
注意
@开头的绝对路径以及相对路径会经过 base64 转换规则校验HBuilderX 2.6.6起template内支持@开头路径引入静态资源,旧版本不支持此方式HBuilderX 2.6.9起template节点中引用静态资源文件时(如:图片),调整查找策略为【基于当前文件的路径搜索】,与其他平台保持一致image 标签不可使用相对路径
css文件或style标签内引入css文件时(scss、less文件同理),可以使用相对路径或绝对路径(HBuilderX 2.6.6)
/* 绝对路径 */
@import url('/common/uni.css');
@import url('@/common/uni.css');
/* 相对路径 */
@import url('../../common/uni.css');
注意
HBuilderX 2.6.6起支持绝对路径引入静态资源,旧版本不支持此方式
css文件或style标签内引用的图片、字体等资源路径可以使用相对路径,也可以使用绝对路径。需要注意的是,有些小程序端css文件不允许引用本地文件(请看注意事项)。
/* 绝对路径 */
background-image: url(/static/logo.png);
background-image: url(@/static/logo.png);
/* 相对路径 */
background-image: url(../../static/logo.png);
字体文件可以存放在项目任意目录,在 css 文件或 style 标签中使用相对路径引入:
@font-face {
font-family: 'CustomFont';
src: url('./fonts/custom.woff2') format('woff2');
}
Tips
@开头的绝对路径以及相对路径会经过 base64 转换规则校验mp-weixin、mp-qq、mp-toutiao、app v2)
js/uts中引入静态资源,多用于静态资源存放在非static目录中的情况,可以使用import引入相对路径或绝对路径。
示例:目录结构如下,static 目录和页面目录下分别有静态资源:
├── pages
│ └── index
│ ├── index.uvue
│ └── icon.png
└── static
└── logo.png
正常情况下,在 image 的 src 中直接引入 static 目录下的 logo.png,可以使用相对路径或绝对路径:
<!-- /pages/index/index.uvue -->
<template>
<view class="content">
<image src="../../static/logo.png" />
<image src="/static/logo.png" />
<image src="@/static/logo.png" />
</view>
</template>
而引入 index 目录下的 icon.png 时,无论使用相对路径还是绝对路径,都无法显示,所以此时需要在 js/uts 中使用 import 引入:
<!-- /pages/index/index.uvue -->
<template>
<view class="content">
<image :src="src" />
</view>
</template>
<script>
// 使用 import 引入静态资源,并在 data 中赋值引用
import icon_src from './icon.png'
export default {
data() {
return {
src: icon_src
}
},
}
</script>
通常,项目根目录下的 static 目录为静态资源目录(目前暂不支持修改)。资源存放在此处后,可在任意文件中直接使用相对路径或者绝对路径引用,具体参考上述关于在模板、css 和 js/uts 中引入静态资源的说明。
而非 static 目录的静态资源,在模板中不支持直接引用,需要在 js/uts 中使用 import 来引入,确保路径正确;在 css 文件或 style 标签中,可以使用相对路径直接引用。
综上所述,我们总结一下静态资源引用的注意事项:
css 文件中使用 static 目录中的静态资源,无需特殊处理,可直接通过相对路径或者绝对路径引入。js/uts 文件中使用静态资源,需要使用 import 来引入。css 文件或 style 标签中引入非 static 目录中的静态资源,可以使用相对路径直接引入。static 目录中的静态资源,需要在 js/uts 文件中使用 import 来引入。项目 static 目录下的静态资源会被直接拷贝到编译后目录的 static 目录下。
在 vue3 下,非 static 目录中被引用的静态资源会编译到 assets 目录下,并重新命名为 原始名称+内容 hash,如:logo.png 会编译为类似 logo.cfd8fa94.png 的名称。如果该静态资源未被引用,则不会被编译器处理。
非 static 目录下的静态资源在 vue2 的不同平台下,编译规则有些不同:
自
HBuilderX 4.0起,已与vue3保持一致
static -> img 下,如小于 4kb 则转为 base64