uniapp 跨分包自定义组件引用

1、开启分包


a、在manifest.json文件中对应平台开启分包
manifest.json

{
    "mp-weixin": { /* 微信小程序特有相关 */
        "optimization": {
            // 开启分包
            "subPackages": true
        },
        "appid": "",
        "setting": {
            "urlCheck": false
        },
        "usingComponents": true
    },
}

b、pages同级创建文件夹packageA

├── App.vue
├── main.js
├── manifest.json
├── pages.json
├── uni.scss
├── packageA     
├── pages
    ├── index

c、在pages.json文件配置subPackages字段
pages.json

{
    "pages": [...],
    "subPackages": [{
        "root": "packageA",
        "pages": [...]
    }],
    "globalStyle": [...],
}

2、分包创建自定义组件


在/packageA/components/下创建自定义组件package-com

├── App.vue
├── main.js
├── manifest.json
├── pages.json
├── uni.scss
├── packageA  // 分包
│   ├── pages
│   └── components
│       ├── package-com.vue
│       
├── pages  // 主包
    ├── index

package-com.vue

<template>
	<view class="content">packageCom</view>
</template>

<script>

export default {
	data() {
		return {
                
           }
    },
    mounted(){
           
           
    },
    methods:{

    }
}
</script>

<style lang="scss">

</style>

3、使用


导入组件 - 注册组件 - 使用组件设置占位组件

/pages/index.vue

<template>
	<view class="content">
		<view class="title">{{title}}</view>
		<!-- 3.使用组件 -->
		<package-com />
	</view>
</template>

<script>
	// 1.导入组件
	import packageCom from '../packageA/components/package-com.vue'
	export default {
		components: { packageCom }, // 2.注册组件
		data() {
			return {
				title: 'pages/index',
			}
		},
		onLoad() {

		},
		methods: {
			
		}
	}
</script>

<style>
	
</style>

pages.json

{
    "pages": [{
        "path": "pages/index",
        "style": {
              "navigationBarTitleText": "uni-app",
               // 4.设置占位组件
               "componentPlaceholder": {
                    // "其他分包自定义组件": "占位组件"
                   "package-com": "view"
               }
         }

     }],
    "subPackages": [...],
    "globalStyle": [...],
}

注:分包(pages)使用其他分包(packageA)的自定义组件时,由于其他分包(packageA)还未下载或注入,其他分包(packageA)的组件处于不可用的状态。所以先设置占位组件渲染,在其他分包(packageA)下载结束后再替换。

若未设置占位组件报错信息如下所示

编译后,在开发者工具中,index.wxml和index.json文件如下所示3处,自定义组件名称不一致也会出现引用不成功的情况
/pages/index.wxml

/pages/index.json

 

  • 5
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
引用和是关于在uni-app中使用自定义组件的代码示例。在主包和分包中使用自定义组件的方法是一样的。您只需要在需要使用自定义组件的页面中引入并注册组件,然后在模板中使用即可。 您可以按照以下步骤在uni-app中使用自定义组件: 1. 在需要使用自定义组件的页面中,首先引入自定义组件的文件。例如,假设您的自定义组件文件路径为`components/footer/footer.vue`,可以使用以下代码引入: ```javascript import Footer from '../../components/footer/footer.vue' ``` 2. 注册自定义组件,将其添加到页面的`components`选项中。例如: ```javascript export default { components: { Footer }, } ``` 3. 在模板中使用自定义组件。例如: ```html <template> <Footer :active="3"></Footer> </template> ``` 这样,您就可以在uni-app中使用自定义组件了,无论是在主包还是分包中。只需确保引入和注册的路径是正确的即可。<span class="em">1</span><span class="em">2</span> #### 引用[.reference_title] - *1* *2* [uniapp引入组件不生效解决方法](https://blog.csdn.net/qq_29483485/article/details/125377630)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值