# 1. 静态资源处理

工具备注
webpack使用 require 处理
vite使用 new URL(url, import.meta.url).href 处理

import.meta.url 包含了对于目前 ES 模块的绝对路径

new URL(url [, base]) 构造函数返回一个新创建的 URL 对象,如果 url 是相对 URL,则会将 base 用作基准 URL。如果 url 是绝对 URL,则无论参数 base 是否存在,都将被忽略

new URL('../assets/images/home.png', import.meta.url).href
// 在 src/constants/menus.ts 下引入图片
//import.meta.url 返回 http://localhost:8080/src/constants/menus.ts
//new URL (...).href 返回
//http://localhost:8080/src/assets/images/home.png

# 2. 组件自动化注册

webpack

<script>
    const path = require('path');
    // 读取 @/components/BaseEchartsModel 下所有.vue 文件
    const files = require.context('@/components/BaseEchartsModel', false, /\.vue$/);
    const modules = {};
    files.keys().forEach((key) => {
        const name = path.basename(key, '.vue');
        modules[name] = files(key).default || files(key);
    });
    export default {
        name: 'BaseEcharts',
        components: modules,
    };
</script>

vite

<script setup lang="ts">
    // 读取 @/components/BaseEchartsModel 下所有.vue 文件
    import.meta.glob('@/components/BaseEchartsModel/*.vue');
</script>