共计 659 个字符,预计需要花费 2 分钟才能阅读完成。
在使用 webpack
开发的时候,引入一个模块
import xx from '../../../xxx/xxx'
通过会是上面这样的,但相对路径写着有点繁琐,就设置一个 alias
吧。
例如
resolve: {
...,
alias: {'@': resolve('src')
}
}
配置 @
为项目根目录下放资源和源码的 /src
目录的别名。
import Utils from '@/utils'
于是就可以这样引入模块。
但是在 css
文件,如 less
、sass
、stylus
中,使用 @import '@/style/theme'
的语法引用相对 @
的目录确会报错,”找不到‘@’目录”,说明 webpack
没有正确识别资源相对路径。
原因是 css
文件会被用 css-loader
处理,这里 css
@import
后的字符串会被 css-loader
视为绝对路径解析,因为我们并没有添加 css-loader
的 alias
,所以会报找不到 @
目录。
引用路径的字符串最前面添加上 ~
符号,如 @import '~@/style/theme'
;Webpack
会将以 ~
符号作为前缀的路径视作依赖模块而去解析,这样 @
的 alias
配置就能生效了。
各类非 js
直接引用(import
require
)静态资源,依赖相对路径加载问题,都可以用 ~
语法完美解决。
例如 css
module 中:@import '~@/style/theme'
css
属性中:background: url('~@/assets/xxx.jpg')
html
标签中:<img src="~@/assets/xxx.jpg" alt="alias">
正文完