动态导入使用
webpack 中:
/ https://webpack.js.org/guides/dependency-management/require.context('./test', false, /\.test\.js$/);
Vite 中:
- import.meta.glob
该方法匹配到的文件默认是懒加载,通过动态导入实现,构建时会分离独立的 chunk,是异步导入,返回的是 Promise,需要做异步操作:
const Components = import.meta.glob('../components/**/*.vue');// 转译后:const Components = {'./components/a.vue': () => import('./components/a.vue'),'./components/b.vue': () => import('./components/b.vue')}
- import.meta.globEager
该方法是直接导入所有模块,并且是同步导入,返回结果直接通过 for…in循环就可以操作:
const Components = import.meta.globEager('../components/**/*.vue');// 转译后:import * as __glob__0_0 from './components/a.vue'import * as __glob__0_1 from './components/b.vue'const modules = {'./components/a.vue': __glob__0_0,'./components/b.vue': __glob__0_1}
如果仅仅使用异步导入 Vue3 组件,也可以直接使用 Vue3 defineAsyncComponent API 来加载:
// https://v3.cn.vuejs.org/api/global-api.html#defineasynccomponentimport { defineAsyncComponent } from 'vue'const AsyncComp = defineAsyncComponent(() =>import('./components/AsyncComponent.vue'))app.component('async-component', AsyncComp)
配置全局 scss
配置在 vite.config.ts 得 css.preprocessorOptions.additionalData 中:
// vite.config.tsexport default defineConfig({css: {preprocessorOptions: {// 添加公共样式scss: {additionalData: '@import "./src/style/style.scss";'}}},// 省略其他配置})
