| | |
| | | import svgIcon from "@/components/svgIcon/index.vue"; |
| | | Vue.component("svg-icon", svgIcon); |
| | | |
| | | const req = require.context("@/assets/icons/svg", false, /\.svg$/); |
| | | // 修改为将SVG注入到父应用DOM |
| | | const requireContext = require.context("@/assets/icons/svg", false, /\.svg$/); |
| | | const requireAll = (requireContext) => { |
| | | // requireContext.keys()数据:['./404.svg', './agency.svg', './det.svg', './user.svg'] |
| | | requireContext.keys().map(requireContext); |
| | | const svgSymbols = requireContext.keys().map(key => { |
| | | return requireContext(key).default || requireContext(key); |
| | | }); |
| | | |
| | | // 创建SVG sprite容器 |
| | | const spriteContainer = document.createElement('div'); |
| | | spriteContainer.id = 'svg-sprite-container'; |
| | | spriteContainer.style.display = 'none'; |
| | | |
| | | // 构建SVG sprite |
| | | const svgSprite = ` |
| | | <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> |
| | | ${svgSymbols.join('')} |
| | | </svg> |
| | | `; |
| | | |
| | | spriteContainer.innerHTML = svgSprite; |
| | | |
| | | // 关键:注入到父应用的body中 |
| | | (window.parent || window).document.body.appendChild(spriteContainer); |
| | | }; |
| | | requireAll(req); |
| | | |
| | | requireAll(requireContext); |