有什么更好的建议和方案的话,欢迎留言讨论交流!
当前案例只以 /directive 文件夹仅一层目录文件为演示,需再增加二级文件目录用来表明对应的指令功能范围的话,改为 import.meta.glob('./**.ts') 即可。
- /src/directive/highlight.ts
-
- // 样例文件
- export default {
- name:'highlight',
- directive:{
- created(el, binding, vnode) {
- // console.log('指令highlight',el, binding, vnode);
- },
- beforeMount(el, binding, vnode) {
- el.style.background = binding.value
- // console.log('beforeMount',vnode);
-
- },
- mounted(v1,v2,v3) {
- // console.log(v1,v2,v3);
- },
- beforeUpdate(a,b,c,prevNode) { //! 第四个参数 prevNode 只在beforeUpdate和updated才有!
- a.style.background = b.value
- // console.log(prevNode,'指令的prevNode');
- },
- updated(v1,v2,v3,v4) {
- // console.log(v1,v2,v3,v4,'有4个参数');
- },
- beforeUnmount(a,b,c) {
- // 当指令绑定的元素 的父组件销毁前调用。 <简单讲,指令元素的父组件销毁前调用>
- // console.log(a,b,c);
- },
- unmounted() {},// 当指令与元素解除绑定且父组件已销毁时调用。
- }
- }
- /src/directive/index.ts
-
- // const modules = import.meta.glob('./*.ts') // 获取当前目录下的所有同级的 .ts 文件。(不会获取到自身文件)
- const modules = import.meta.glob('./**.ts') // 获取当前目录下的所有.ts文件,不管层级有多深。(不会获取到自身文件)
- // console.log(modules);
-
-
- export default {
- install(app){
- for (const path in modules) {
- modules[path]().then((mod) => {
- // console.log(path, mod.default)
- let val = mod.default
- app.directive(val.name, val.directive)
- })
- }
- }
- }
- /src/directive/index.less'
-
- // 有些指令是需要样式的,所以定义个 index.less(.scss/.css) ,然后引入其他对应指令的样式
- // 最后在main.ts 里引入指令模块时,同时也引入该样式文件。
-
- // @import "./ripple.less"; 其他指令所需要的样式,此行代码仅表示 指令样式的封装结构
-
- /src/main.ts
-
- import directives from '@/directive/index' // 引入指令模块
- import '@/directive/index.less' // 引入指令样式
-
- // ......
- import { createApp } from 'vue'
- import App from './App.vue'
- const app = createApp(App)
- app.use(directives) // use 使用封装好的指令模块
- export default app
- // ......
深圳找工作中,有木有内推的啊 ~~~~~
提示文章质量过低,请凑行数。。。
提示文章质量过低,请凑行数。。。
提示文章质量过低,请凑行数。。。
提示文章质量过低,请凑行数。。。
提示文章质量过低,请凑行数。。。
提示文章质量过低,请凑行数。。。