潍坊大型做网站建设的公司,做网站如何通过流量赚钱吗,珠海网站建设技术托管,网络运营者不得泄露项目中为了体验好、性能优、资源丰富等原因经常会用svg这种矢量图#xff0c;但是svg不能直接像image标签一样直接使用#xff0c;这就需要前端的同学自己处理了。 svg有以下优点#xff1a;
svg放大不失真,png#xff0c;jpg会出现失真现象 svg的体积非常小#xff0c;对…项目中为了体验好、性能优、资源丰富等原因经常会用svg这种矢量图但是svg不能直接像image标签一样直接使用这就需要前端的同学自己处理了。 svg有以下优点
svg放大不失真,pngjpg会出现失真现象 svg的体积非常小对有大量图标图片的页面体验友好 图像文件可读易于修改和编辑 svg文件还可嵌入JavaScript脚本来控制svg对象
node版本:v14.19.0 svg-sprite-loader版本:6.0.11
1.安装svg-sprite-loader npm install svg-sprite-loader2、webpack 配置vue.config.js
const { defineConfig } require(vue/cli-service)
const path require(path);
function resolve(dir) {return path.join(__dirname, dir)
}
module.exports defineConfig({publicPath: ./,outputDir: baseData,assetsDir: assets,productionSourceMap: false,transpileDependencies: true,lintOnSave:false,//为了解决 Component name index should always be multi-wordcss:{loaderOptions:{scss:{additionalData:import ~/styles/theme.scss;}}},
//注意此处configureWebpack: {resolve: {alias: {: path.resolve(src)}}},
//注意此处chainWebpack: (config) {// 配置 svg-sprite-loaderconfig.module.rule(svg).exclude.add(resolve(src/assets/svg)).end();config.module.rule(icons).test(/\.svg$/).include.add(resolve(src/assets/svg)).end().use(svg-sprite-loader).loader(svg-sprite-loader).options({symbolId: icon-[name],}).end();}
})注意这里的chainWebpack对象是跟devServer是平级的对象 3、创建、注册和导出svg的组件
创建svg组件在components下创建了svg组件文件夹 templatesvgclassNamesvg-iconaria-hiddentrue:style{ width: width, height: height }use :xlink:hreficonName //svg
/templatescript
export default {props: {iconClass: {type: String,required: true,},width: {type: String,default: 16px,},height: {type: String,default: 16px,},},computed: {iconName() {return #icon-${this.iconClass};},},
};
/script注册svg组件在assets下创建目录svg,其中index.js为注册(将所有的svg放在同级目录下) import Vue from vue;
import SvgIcon from /components/SvgIcon; // svg component// register globally
Vue.component(SvgIcon, SvgIcon);const req require.context(/assets/svg, false, /\.svg$/);
const requireAll (requireContext) requireContext.keys().map(requireContext);
requireAll(req);main.js中引入 import /assets/svg/index;//自定义svg图标 组件中使用(iconClass的名字,就是svg的文件名) SvgIcon :iconClasshelp classsvg-icon height14px width14px//MyTooltip