1 在src目录新建一个icons目录,目录结构如下 svg下面放iconfont的icon标签的svg标签文件,下下来复制粘贴即可使用 index.js文件: import Vue from 'vue' import SvgIcon from '@/components/SvgIcon'// svg组件 // register globally Vue.component('svg-icon', SvgIcon) const requireAll = requireContext => requireContext.keys().map(requireContext) const req = require.context('./svg', false, /\.svg$/) const iconMap = requireAll(req) 如上面代码而言,我们需要封装一下icon,在components下新建SvgIcon文件 index.vue文件内容: <template> <svg :class="svgClass" aria-hidden="true"> <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' } } } } </script> <style scoped> .svg-icon { 1em; height: 1em; vertical-align: -0.15em; fill: currentColor; overflow: hidden; } </style> 当然如参考文章所言,我们须加载依赖svg-sprite-loader,在webpack.base.conf.js 中 具体为什么这么用,请参考优雅的使用icon。 因为组件已经全局注册,即在组件中 <svg-icon iconClass="money"></svg-icon> 使用即可,这种用法好处很多。具体参考 你懂的。我就简单记录一下copy代码的过程而已。