vue安装svg 依赖包,配置全局svg组件

朱雀 2023-02-17 02:56 365阅读 0赞

1,终端安装 npm

  1. npm install svg-sprite-loader --save-dev

2,自定义组件

20200611160048821.png

在src下创建一个icons文件夹,创建一个index.js页面和 svgIcons.vue页面,再创建一个svg的文件夹用来存放我们要用到的svg图片。

svgIcons.vue页面:

  1. <template>
  2. <svg :class="svgClass" aria-hidden="true">
  3. <use :xlink:href="iconName"></use>
  4. </svg>
  5. </template>
  6. <script>
  7. export default {
  8. name: 'svg-icon',
  9. props: {
  10. iconClass: {
  11. type: String,
  12. required: true
  13. },
  14. className: {
  15. type: String
  16. }
  17. },
  18. computed: {
  19. iconName () {
  20. return `#icon-${this.iconClass}`
  21. },
  22. svgClass () {
  23. if (this.className) {
  24. return 'svg-icon ' + this.className
  25. } else {
  26. return 'svg-icon'
  27. }
  28. }
  29. }
  30. }
  31. </script>
  32. <style scoped>
  33. .svg-icon {
  34. width: 1.2em;
  35. height: 1.2em;
  36. vertical-align: -0.18em;
  37. fill: currentColor;
  38. overflow: hidden;
  39. }
  40. </style>

index.js页面:

  1. import Vue from 'vue'
  2. import SvgIcon from './svgIcon.vue' // svg组件
  3. // register globally 全局注册
  4. Vue.component('svg-icon', SvgIcon)
  5. const requireAll = requireContext => requireContext.keys().map(requireContext)
  6. const req = require.context('./svg', false, /\.svg$/)
  7. // (创建了)一个包含了 svg 文件夹(不包含子目录)下面的、所有文件名以 `.suv` 结尾的、能被 require 请求到的文件的上下文。
  8. // 这个是webpack提供的require方法,可以创建上下文环境。相当于将svg目录下的svg文件require进来。
  9. requireAll(req)

3,在main.js引入

20200611160737552.png

4,配置svg环境

在我们的vue.config.js文件配置:

配置路径:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2FzdGVyaWFW_size_16_color_FFFFFF_t_70

  1. configureWebpack: (config) => { // webpack配置,值位对象时会合并配置,为方法时会改写配置
  2. Object.assign(config, { // 开发生产共同配置
  3. resolve: {
  4. alias: {
  5. 'vue':'vue/dist/vue.js',
  6. '@': path.resolve(__dirname, './src'), //设置路径别名
  7. '@c':path.resolve(__dirname, './src/components')
  8. }
  9. }
  10. })
  11. },

配置svg 环境:

  1. chainWebpack: config => {
  2. //一个规则里的 基础Loader
  3. // svg是个基础loader
  4. const svgRule = config.module.rule('svg')
  5. // 清除已有的所有 loader。
  6. // 如果你不这样做,接下来的 loader 会附加在该规则现有的 loader 之后。
  7. svgRule.uses.clear()
  8. // 添加要替换的 loader
  9. svgRule
  10. .use('svg-sprite-loader')
  11. .loader('svg-sprite-loader')
  12. .options({
  13. symbolId: 'icon-[name]'
  14. })
  15. },

这里要注意了,只要修改了我们的vue.config.js文件都得重启项目。

5,调用

1)先在我们的Iconfont阿里巴巴矢量图标库里面添加至你的项目,然后下载

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2FzdGVyaWFW_size_16_color_FFFFFF_t_70 1

选择svg下载

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2FzdGVyaWFW_size_16_color_FFFFFF_t_70 2

复制到你的项目中去,修改相应的名称 。

需要注意的是我们最好在设置svg图片名称时最好是语义话,便于我们理解和使用。

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2FzdGVyaWFW_size_16_color_FFFFFF_t_70 3

2)在页面中直接使用,只要把我们需要用到的svg图片的名称填上:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2FzdGVyaWFW_size_16_color_FFFFFF_t_70 4

效果图:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2FzdGVyaWFW_size_16_color_FFFFFF_t_70 5

所以,只要我们配置好全局svg组件,我们需要那个图标,只需要改变iconClass和 className参数对应到相应的svg图片名称即可。

发表评论

表情:
评论列表 (有 0 条评论,365人围观)

还没有评论,来说两句吧...

相关阅读