zhongshujie
2 天以前 ce70bc450a2401997bb850f89f3c4dc0a23e0a72
src/assets/icons/index.js
@@ -2,9 +2,29 @@
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);