DCloud_UNI_GSQ
DCloud_UNI_GSQ
  • 发布:2021-06-04 15:53
  • 更新:2023-06-28 18:11
  • 阅读:2662

支付宝小程序使用动态加载插件

分类:uni-app

支付宝小程序插件支持动态加载,下面以淘宝联盟支付宝小程序营销套件为例说明一下在 uni-app 中的使用方式。

安装插件

在 npm 下载 miniapp-bc-user 模块后,将 miniapp-bc-user 模块及其依赖的 tslib 模块移动到 mycomponents 目录下

manifest 配置

在 manifest.json 中 mp-alipay 节点下配置 "useDynamicPlugins" : true

page 使用

<template>  
    <view>  
        <bc-module v-if="showComponent" code="suite://bc.suite.union618/bc.template.nav" name="block-nav" />  
    </view>  
</template>  

<script>  
    const {  
        loadBC  
    } = __non_webpack_require__('/mycomponents/miniapp-bc-user')  
    export default {  
        data() {  
            return {  
                showComponent: false,  
            }  
        },  
        async onReady() {  
            await loadBC().then(() => {  
                this.showComponent = true  
            })  
        }  
    }  
</script>  

<style>  

</style>

注意事项

  • 在 HBuilderX 3.1.19 版本之前,还需要在每次编译到小程序平台后,手动在生成的支付宝小程序 app.json 中增加 "useDynamicPlugins" : true
  • 需要使用 non_webpack_require 替代 require 来加载 miniapp-bc-user 模块,因为在此原生组件内也加载了相关模块,并依赖的模块内共享的状态,如果直接使用 require 会被 webpack 编译,和原生组件内引用的并非同一个模块,导致状态无法共享。
  • 需要开启压缩编译,因为在支付宝小程序内也使用了 webpack 编译,require 会被编译为 webpack_require 且由于编译时未进行安全重命名导致和 uni-app 框架的 webpack_require 冲突,启用 uni-app 的压缩编译后,uni-app 框架的 __webpack_require__ 会被压缩命名,避免和小程序框架冲突。
0 关注 分享

要回复文章请先登录注册

Rongshi

Rongshi

https://ask.dcloud.net.cn/article/40600,新搞了个解决方案
2023-06-28 18:11
sucjun

sucjun

这个帖子对吗,我怎么调也跑不起来啊,有人知道怎么解决动态加载插件吗
2023-06-27 22:41
1***@163.com

1***@163.com

折腾半天总算接成功了,记一下遇到的坑:
1.报错页面找不到:没有开压缩编译,cli工程需要在package.json里加--minimize
2.报错找不到模块:复制miniapp-bc-user文件夹时必须把里面的package.json文件带上
3.loadBC调用成功但组件没加载:需要在pages.json的对应页面下配置
"usingComponents": {
"bc-module": "/mycomponents/miniapp-bc-user/es/bc-module/bc-module"
}
文档里没有写这一步,排查了好久。。。
2023-04-28 11:19
1***@qq.com

1***@qq.com

const {
loadBC
} = __non_webpack_require__('/mycomponents/miniapp-bc-user')


使用这种引入方式,支付宝小程序报错页面找不到
2021-10-13 14:20
1***@qq.com

1***@qq.com

回复 1***@qq.com :
请问这个问题你解决了吗
2021-10-12 19:24
d***@qq.com

d***@qq.com

回复 DCloud_UNI_GSQ :
试了在调式和打包后,这个mycomponents的目录都没有打包进去,用官方的npm安装的.也是没有复制过去.这是什么原因?
2021-09-30 14:14
d***@qq.com

d***@qq.com

我也是引用后找不到文件,好像编译后没有把文件打包进去
2021-09-30 11:47
1***@qq.com

1***@qq.com

回复 1***@qq.com :
运行时点压缩代码
2021-07-14 17:43
DCloud_UNI_GSQ

DCloud_UNI_GSQ (作者)

回复 1***@qq.com :
此为指导其他用户成功使用后的记录贴,如您未成功,请详细说明一下情况。
2021-07-07 11:55
1***@qq.com

1***@qq.com

这种引入在支付宝小程序报错 找不到这个模块
2021-07-06 10:37