Vuevue的静态资源处理---vue项目路径使用的@和~的区别
在我们的项目结构里,有两个静态文件的路径,分别是:src/assets
和 static/
。那这两个到底有什么区别呢?
Webpacked 资源
为了回答这个问题,我们首先需要理解webpack是怎样处理静态资源的。
在*.vue
组件中,所有的templates
和css
都会被vue-html-loader
和css-loader
解析,寻找资源的URL。
举个例子,在<img src="https://blog.csdn.net/weixin_42960907/article/details/logo.png">
和background: url(./logo.png)
中的"./logo.png"
,都是相对资源路径,都会被webpack
解析成模块依赖 。
由于logo.png
不是JavaScript
,当被看成一个模块依赖的时候,我们需要使用url-loader
和file-loader
进行处理。 该模板已经配置好了这些loaders
,所以你能够使用相对/模块路径时不需要担心部署的问题。
由于这些资源可能在构建的时候被 内联 / 复制 / 重命名, 所以它们从本质上来说是你源码的一部分。
这就是为什么我们建议将交由webpack
处理的静态资源和其它源文件一样放在/src路径下面。
实际上,你甚至不需要把它们全都放在/src/assets
路径下:你可以基于 模块 / 组件 的使用来组织文件结构。
例如,你可以把每个组件和属于它的静态资源放在它自己的目录下。
资源处理规则
相对URL
例如 ./assets/logo.png
将会被解释成一个模块依赖。它们会被一个基于你的webpack
输出配置自动生成的URL替代。
没有前缀的URL
例如 assets/logo.png
将会被看成相对URL,并且转换成./assets/logo.png
前缀带~的URL
require('some-module/image.png')
会被当成模块请求,如果你想要利用webpack
的模块处理配置,就可以使用这个前缀~
。
例如,如果你有一个对于assets的路径解析,你需要使用<img src="https://blog.csdn.net/weixin_42960907/article/details/~assets/logo.png">
来确保解析是对应上的。
相对根目录的URL
例如 /assets/logo.png
是不会被处理的.
实际问题
例如如下 css中使用background-image: url(~@/assets/images/system/university.svg);
webpack中的配置, @这是webpack设置的路径别名。
config.resolve.alias
.set('@', resolve('src'))
.set('components', resolve('src/components'));
~
是 stylus-loader 的东西,参考 https://github.com/shama/stylus-loader(但是好像不引入这个库,也可以用~)
~
是相对于其他路径(文件)的,类似于相对路径
示例:
~@/assets/scss/aaa.scss
表示相对于@
(别名,一般是src目录)下的 assets/scss/aaa.scss;
<app-tree
class="half"
:treeConfig="treeConfig"
:expandedKeys.sync="treeConfig.defaultExpandedKeys"
:selectedKeys="treeConfig.defaultSelectedKeys"
:checkedKeys.sync="treeConfig.defaultCheckedKeys"
:tree-data="treeData"
:onSearch="onSearch"
:onSelect="onSelect"
:onLoadData="onLoadData"
>
<template #title="{ node }">
<div class="system-role-title">
<div class="title-icon" :class="node.icon"></div>
<div class="title-label">{{ node.label }}</div>
</div>
</template>
</app-tree>
.system-role-title {
display: flex;
align-items: center;
.title-icon {
width: 0.16rem;
height: 0.16rem;
margin-right: 0.04rem;
color: #848484;
background-size: 100% 100%;
&.fa-university {
background-image: url(~@/assets/images/system/university.svg);
}
&.fa-user-circle-o {
background-image: url(~@/assets/images/system/user.svg);
}
}
}
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhibeghf
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
微信运动停用后别人还能看到步数吗
PHP中文网 07-22 -
excel打印预览压线压字怎么办
PHP中文网 06-22