美文网首页
Vue Cli 项目引入图片

Vue Cli 项目引入图片

作者: 卓三阳 | 来源:发表于2020-12-16 00:09 被阅读0次

    1. vue-cli 2.x版本中conf/index文件中路径的含义

    assetsRoot: path.resolve(__dirname, '../dist'),  
    assetsSubDirectory: 'static',
    assetsPublicPath: '/',
    

    assetsRoot
    资源根路径 项目打包后存放的路径 即项目目录下的dist文件
    assetsSubDirectory
    资源子目录 存放静态资源文件的static
    assetsPublicPath
    资源公共路径

    打包之后的文件路径为 assetsPublicPath + assetsSubDirectory :
    /static/xxx


    2.vue 项目引入图片

    2.1 情况一:图片在/src/assets目录下

    这时候图片会被webapck打包,我们需要将图片视为模块使用。

    1. 图片地址直接写在html或者css里

    图片地址直接写在html或者css里,使用相对路径或者模块路径引入资源,webpack会帮你处理这个图片最终的地址或者base64。

    <template>
     <!-- 
    相对路径  or 模块路径
     --> 
      <img src="../assets/logo.png" />
      <img src="~@/assets/logo.png" />
    </template>
    
    <template>
    <div class="logo-container"></div>
    <template>
    
    <style lang="scss" scoped>
    .logo-container {
        background-image: url('../../assets/logo.png');
        background-image: url('~@/assets/logo.png');
    }
    </style>
    

    使用绝对路径不行。使用绝对路径的时候会直接被当成字符串。具体查看webpack关于路径处理的文档

    2. 动态引入图片

    当动态定义图片路径的时候,url-loader是无法探测到图片路径的。

    (1)在data里面导入这张图片
     {
        logoImage: require('@/assets/logo.png')
     }
    

    or

    import logoImage from '@/assets/logo.png'
     {
        logoImage: logoImage
     }
    

    上面require 或者 import 的作用就是将图片引入为模块,转换编译为打包后的资源。

    (2)然后在template里面对需要background-image属性的标签绑定
    <img :src="logoImage">
    <div :style="{ backgroundImage: `url(${logoImage})` }"></div>
    

    3.2 情况二:图片在/public目录下 或者 外部资源。

    直接通过图片路径引入即可

    <!-- 相对路径,在index.html的同级目录下查找此图片 -->
    <img src="logo.png">
    <!-- 绝对路径,/表示编译后的dist文件夹 -->
    <img src="/logo.png">
    
    <div style="background-image: url('login-bg.png');"></div>
    <div style="background-image: url('/login-bg.png');"></div>
    

    相关文章

      网友评论

          本文标题:Vue Cli 项目引入图片

          本文链接:https://www.haomeiwen.com/subject/fmdxgktx.html