zoukankan      html  css  js  c++  java
  • webpack使用svg-sprite-loader详解

    总结下svg-sprite-loader的使用以及配置过程中遇到的不懂的地方

    创建svgIcon组件

    <template>
    <svg :class="svgClass" aria-hidden="true" v-on="$listeners">
    <use :xlink:href="iconName"/>
    </svg>
    </template>
    
    <script>
    export default {
    name: 'SvgIcon',
    props: {
    iconClass: {
    type: String,
    required: true
    },
    className: {
    type: String,
    default: ''
    }
    },
    computed: {
    iconName() {
    return `#icon-${this.iconClass}`
    },
    svgClass() {
    if (this.className) {
    return 'svg-icon ' + this.className
    } else {
    return 'svg-icon'
    }
    }
    },
    mounted () {
    // console.log(111, this.iconClass)
    }
    }
    </script>
    
    <style scoped>
    .svg-icon {
     1em;
    height: 1em;
    vertical-align: -0.15em;
    fill: currentColor;
    overflow: hidden;
    }
    </style>
    

      


    创建icons文件夹放入svg图片

    > index.js
    1

    import Vue from 'vue'
    import svgIcon from '../components/SvgIcon'
    Vue.component('svg-icon', svgIcon) // 注册全局组件
    const req = require.context('./svg', false, /.svg$/)
    const requireAll = requireContext => requireContext.keys().map(requireContext)
    requireAll(req)
    

      


    const req = require.context(’./svg’,false, /.svg$/)

    第一个参数表示相对的文件目录,第二个参数表示是否包括子目录中的文件,第三个参数表示引入的文件匹配的正则表达式

    const requireAll = requireContext => requireContext.keys().map(requireContext)

    这个是webpack提供的require方法, 可以创建上下文环境, 相当于将svg目录下的svg文件require进来
    最后把这个js 导入到工程的入口文件main.js中

    下载安装插件
    cnpm install --save svg-sprite-loader

    修改配置webpack中webpack.base.conf.js

    {
    test: /.svg$/,
    loader: 'svg-sprite-loader',
    include: [resolve('src/icons')],
    options: {
    symbolId: 'icon-[name]'
    }
    },
    {
    test: /.(png|jpe?g|gif|svg)(?.*)?$/,
    loader: 'url-loader',
    exclude: [resolve('src/icons')],
    options: {
    limit: 10000,
    name: utils.assetsPath('img/[name].[hash:7].[ext]')
    }
    }
    

      

    插件使用

    <svg-icon icon-class="documentation" class="test"/>
    1
    使用svg的好处

    页面代码清爽
    可使用ID随处重复调用
    每个SVG图标都可以更改大小颜色

    原文链接:https://blog.csdn.net/qq867263657/article/details/88529356

  • 相关阅读:
    cesium 之图层管理器篇(附源码下载)
    cesium 之三维场景展示篇(附源码下载)
    InfluxDB 常用命令
    开始使用Chronograf(官方说明)
    InfluxDB(官方使用说明)
    centos su命令
    CentOS7使用firewalld打开关闭防火墙与端口
    HBase教程
    OpenTSDB安装
    OpenTSDB(时序数据库官网)
  • 原文地址:https://www.cnblogs.com/onesea/p/15347822.html
Copyright © 2011-2022 走看看