+
109
-

回答

小程序出于安全考虑,不支持直接动态加载远程js文件或组件。但有以下几种替代方案:

使用组件按需引用:

// 页面中动态引入组件
Component({
data: {
 componentPath: '' 
},
ready() {
 // 根据条件设置组件路径
 this.setData({
   componentPath: '/components/someComponent/index'
 })
}
})

远程加载组件配置:

// 通过API获取组件配置
wx.request({
url: 'https://your-api.com/component-config',
success: (res) => {
 this.setData({
   compConfig: res.data
 })
}
})

使用自定义组件工厂: 

// 组件工厂
function createComponent(config) {
  return Component({
    data: config.data,
    methods: config.methods
  })
}

// 使用时
wx.request({
  url: 'https://your-api.com/component-config',
  success: (res) => {
    createComponent(res.data)
  }
})

分包加载

{
  "subpackages": [
    {
      "root": "packageA",
      "pages": [
        "pages/cat",
        "pages/dog"
      ]
    }
  ]
}

建议:

优先使用小程序自带的组件系统对于动态内容,可以通过API获取数据后进行渲染使用分包加载机制实现按需加载如需复杂逻辑,可将其封装在云函数中

网友回复

我知道答案,我要回答