• 项目架构:vue3 + vite + directive指令模块封装


    主要的API:

    • vite 的 `import.meta.glob()`

    • vue 的 use()、directive()

    • `export default`

    有什么更好的建议和方案的话,欢迎留言讨论交流!

    当前案例只以 /directive 文件夹仅一层目录文件为演示,需再增加二级文件目录用来表明对应的指令功能范围的话,改为 import.meta.glob('./**.ts') 即可。

    1. /src/directive/highlight.ts
    2. // 样例文件
    3. export default {
    4. name:'highlight',
    5. directive:{
    6. created(el, binding, vnode) {
    7. // console.log('指令highlight',el, binding, vnode);
    8. },
    9. beforeMount(el, binding, vnode) {
    10. el.style.background = binding.value
    11. // console.log('beforeMount',vnode);
    12. },
    13. mounted(v1,v2,v3) {
    14. // console.log(v1,v2,v3);
    15. },
    16. beforeUpdate(a,b,c,prevNode) { //! 第四个参数 prevNode 只在beforeUpdate和updated才有!
    17. a.style.background = b.value
    18. // console.log(prevNode,'指令的prevNode');
    19. },
    20. updated(v1,v2,v3,v4) {
    21. // console.log(v1,v2,v3,v4,'有4个参数');
    22. },
    23. beforeUnmount(a,b,c) {
    24. // 当指令绑定的元素 的父组件销毁前调用。 <简单讲,指令元素的父组件销毁前调用>
    25. // console.log(a,b,c);
    26. },
    27. unmounted() {},// 当指令与元素解除绑定且父组件已销毁时调用。
    28. }
    29. }
    1. /src/directive/index.ts
    2. // const modules = import.meta.glob('./*.ts') // 获取当前目录下的所有同级的 .ts 文件。(不会获取到自身文件)
    3. const modules = import.meta.glob('./**.ts') // 获取当前目录下的所有.ts文件,不管层级有多深。(不会获取到自身文件)
    4. // console.log(modules);
    5. export default {
    6. install(app){
    7. for (const path in modules) {
    8. modules[path]().then((mod) => {
    9. // console.log(path, mod.default)
    10. let val = mod.default
    11. app.directive(val.name, val.directive)
    12. })
    13. }
    14. }
    15. }
    1. /src/directive/index.less'
    2. // 有些指令是需要样式的,所以定义个 index.less(.scss/.css) ,然后引入其他对应指令的样式
    3. // 最后在main.ts 里引入指令模块时,同时也引入该样式文件。
    4. // @import "./ripple.less"; 其他指令所需要的样式,此行代码仅表示 指令样式的封装结构
    1. /src/main.ts
    2. import directives from '@/directive/index' // 引入指令模块
    3. import '@/directive/index.less' // 引入指令样式
    4. // ......
    5. import { createApp } from 'vue'
    6. import App from './App.vue'
    7. const app = createApp(App)
    8. app.use(directives) // use 使用封装好的指令模块
    9. export default app
    10. // ......

    深圳找工作中,有木有内推的啊 ~~~~~

    提示文章质量过低,请凑行数。。。

    提示文章质量过低,请凑行数。。。

    提示文章质量过低,请凑行数。。。

    提示文章质量过低,请凑行数。。。

    提示文章质量过低,请凑行数。。。

    提示文章质量过低,请凑行数。。。


  • 相关阅读:
    C&C++控制结构实训
    数据结构——线性表的顺序表示和实现
    FastAPI 学习之路(二十三)用类作为依赖的注入
    期货开户手续费加一分是主流
    浅析三维模型重建的地面控制点精度常见的几个问题及解决方法
    idea不识别yaml文件导致,配置文件点击跳转不了类
    C# SolidWorks二次开发---工程图简单版标注长宽
    冒泡排序知识点
    云原生定义整理
    Java -Stream流和常见函数式接口
  • 原文地址:https://blog.csdn.net/lijiahui_/article/details/126918392