webpack+vueの中で別名のパスを使って静止画の住所を引用します。
webpackのエイリアスの良さはみんな知っていますが、vueのテンプレートでは、エイリアスを使う時に問題が発生します。長い間解決方法が見つからなくて、webpackの原因だと思っていました。
様々な捜索を経て原因を探していますが、最終的には原因が見つかりました。
vue-html-loader and css-loader translates non-root URLs to relative paths.In order to treat it like a module path,prefix it with~
別名の前に一つを追加します。
最終コードの作成:
注意:templateの中の静的なファイルアドレスとstyleの中の静的なファイルアドレスだけが必要です。scriptの中の別名は何と定義していますか?
これで数ヶ月間の問題を解決しました。
ついでに自分で使うエイリアスリストを貼り付けます。
alias: {
'src': path.resolve(__dirname, '../src'),
'assets': path.resolve(__dirname, '../src/assets'),
'components': path.resolve(__dirname, '../src/components')
}
<template>
<img src="assets/images/logo.jpg" />
</template>
<script>
import 'assets/css/style.css'
</script>
<style>
.logo {
background: url(asset/images/bg.jpg)
}
</style>
上のコードはstyle.cssを導入するだけで成功しています。画像アドレスと背景画像アドレスは解析に失敗しました。様々な捜索を経て原因を探していますが、最終的には原因が見つかりました。
vue-html-loader and css-loader translates non-root URLs to relative paths.In order to treat it like a module path,prefix it with~
別名の前に一つを追加します。
最終コードの作成:
alias: {
'src': path.resolve(__dirname, '../src'),
'assets': path.resolve(__dirname, '../src/assets'),
'components': path.resolve(__dirname, '../src/components')
}
<template>
<img src="~assets/images/logo.jpg" />
</template>
<script>
import 'assets/css/style.css'
</script>
<style>
.logo {
background: url(~asset/images/bg.jpg)
}
</style>
キャリアは相対的な経路ではなく、モジュールであることを伝える。注意:templateの中の静的なファイルアドレスとstyleの中の静的なファイルアドレスだけが必要です。scriptの中の別名は何と定義していますか?
これで数ヶ月間の問題を解決しました。
ついでに自分で使うエイリアスリストを貼り付けます。
alias: {
'assets': path.resolve(__dirname, '../src/assets'),
'src': path.resolve(__dirname, '../src'),
'~api': path.resolve(__dirname, '../src/api'),
'~components': path.resolve(__dirname, '../src/components'),
'~pages': path.resolve(__dirname, '../src/pages'),
'~router': path.resolve(__dirname, '../src/router'),
'~store': path.resolve(__dirname, '../src/store'),
'~utils': path.resolve(__dirname, '../src/utils')
}
以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。