dgiot-dashboard 最佳实践

vue2

1import Vue from 'vue';
2const requireComponent = require.context('./components', true, /[A-Z]\w+\.(vue|js)$/);

获取组件配置

1import _ from 'lodash';
2requireComponent.keys().forEach((fileName) => {
3  const componentConfig = requireComponent(fileName);
4  const componentName = _.upperFirst(
5    _.camelCase(
6      fileName
7        .split('/')
8        .pop()
9        .replace(/\.\w+$/, '')
10    )
11  );
12});

全局注册组件

1Vue.component(componentName, componentConfig.default || componentConfig);

Vite 注册全局组件的方式

import.meta.glob()

import.meta.globEager()

1const components = import.meta.glob('./components/*/*.vue');
2export default function install(app) {
3  for (const [key, value] of Object.entries(components)) {
4    const name = key.split('/')[1];
5    app.component(name, defineAsyncComponent(value));
6  }
7}

在 main.js 文件中 import 并 use

1import { createApp } from 'vue';
2import App from './App.vue';
3import components from './components/index.js';
4createApp(App).use(components).mount('#app');

因为在 Vite 中不能使用 webpack 的 require.context()方式来读取文,所以之前使用 webpack 注册全局组件的方式就不能使用了。