vue 动态加载目录组件页面 无需批量import

本文介绍了一种在Vue中使用计算属性computed动态加载组件的方法,以解决import大量组件或动态渲染的问题。通过设置计算属性loadertpl,结合Promise处理成功和失败的情况,实现动态组件的渲染。在页面上,使用<component v-bind:is="rendertpl"></component>进行展示。当组件不存在时,加载404组件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一般我们使用组件内使用组件时,直接import *** from *** 等一些操作,但是对于导入量大或动态渲染时是一个很头疼的问题,下面是我个人使用的处理方式:

 

开始:众所周知,vue内存在一个计算属性:computed,这是一个很好的属性,若有不懂我就不细说,推荐看下这篇文章:https://www.cnblogs.com/gunelark/p/8492468.html

代码如下:

1、计算属性内添加一个计算方法;用于动态加载组件
      computed:{
            loadertpl(){
                return () => import('@/components/library/public/'+this.tpl+'/')
            }
        },
       这里值得注意的是:
       1、this.tpl  是data内的一个变量,我用于动态加载目录组件库下的组件名,用于watch等操作的
       2、components/library/public 这是我定义的组件库目录,内的每个目录就是一个闭合组件

 

2、其实到这里,懂得使用computed属性的伙伴其实都知道怎么做了,下面我就在methods内定义一个方法使用loadertpl:

### 如何在 UniApp Vue3 项目中引入和使用自定义组件 #### 创建自定义组件 为了创建一个自定义组件,在 `src/components` 文件夹内新建名为 MyComponent.vue 的文件。此操作遵循标准的 Vue 组件结构,允许开发者利用单文件组件的优势[^1]。 ```html <template> <div class="my-component"> <!-- 组件模板 --> </div> </template> <script setup> // 这里可以声明响应式数据、方法和其他选项 import { ref } from 'vue'; const message = ref('Hello from my component!'); </script> <style scoped> .my-component { /* 样式 */ } </style> ``` #### 注册并使用组件 当希望在一个页面或另一个组件中使用上述创建好的自定义组件时,需先导入再注册它。对于采用 `<script setup>` 语法糖的情况,可以直接在脚本标签内部完成这些工作[^2]。 ```html <!-- Page 或其他父级组件中的代码片段 --> <template> <div> <MyComponent /> </div> </template> <script setup> import MyComponent from '@/components/MyComponent.vue'; </script> ``` 如果打算在整个应用范围内全局可用,则可以在项目的入口文件 main.js(main.ts) 中进行一次性注册: ```javascript import { createApp } from 'vue' import App from './App.vue' // 导入所有需要作为全局组件的部分 import MyComponent from '@/components/MyComponent.vue' const app = createApp(App) // 将其挂载到全局上下文中以便任何地方都能访问 app.component('MyComponent', MyComponent).mount('#app') ``` 另外一种方式是在 `env.d.ts` 文件中做批量模块声明,从而简化路径引用过程[^5]: ```typescript declare module '@/components/*' { import type { ComponentOptions } from 'vue' const component: ComponentOptions export default component } ``` 这样设置之后就可以更方便快捷地按需加载各个局部使用的组件无需每次都写完整的相对路径了。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值