1234567891011121314151617181920212223242526272829303132333435363738394041 |
- /*
- * @Author: gitboyzcf boyzcf@qq.com
- * @Date: 2023-12-11 09:45:44
- * @LastEditors: gitboyzcf boyzcf@qq.com
- * @LastEditTime: 2023-12-20 14:00:23
- * @FilePath: \project-group\gy-project-group\BusinessServices\src\directives\index.js
- */
- import { kebabCase } from 'lodash-es'
- function validatorModules(obj) {
- const vueDirectiveKeys = [
- 'created',
- 'beforeMount',
- 'mounted',
- 'beforeUpdate',
- 'updated',
- 'beforeUnmount',
- 'unmounted'
- ]
- return vueDirectiveKeys.some((key) => Reflect.has(obj, key))
- }
- export default {
- install: (app) => {
- const directiveModules = import.meta.glob('./modules/*.js', { eager: true })
- Object.keys(directiveModules).forEach((key) => {
- const directiveName = key.replace(/^\.\/modules\/(.*)\.js$/, '$1')
- const modules = directiveModules[key].default
- if (typeof modules === 'function' || typeof modules === 'object') {
- if (typeof modules === 'object' && !validatorModules(modules)) {
- console.error(
- `${directiveName} 应该包含 created | beforeMount | mounted | beforeUpdate | updated | beforeUnmount | unmounted 等接口`
- )
- }
- app.directive(kebabCase(directiveName), modules)
- } else {
- console.error(`directive 模块的 ${directiveName}.js 导出的不是一个对象或者函数`)
- }
- })
- }
- }
|