公司目前在进行小程序项目对接第三方商城时,为了减少开发投入,采取了一种较为简略的方法,即直接从对方小程序跳转至我司小程序。然而,这种做法导致用户体验极差。虽然初期合作尚可忍受,但从长远角度考量,这种交互模式显然不可取。这个难题一直萦绕心头,期待着有朝一日能够解决。然而,由于其他事务的牵绊,始终未能腾出时间来处理这一问题。当然,方案并非没有考虑,从长远来看,选择Taro进行跨端应用开发不失为一个不错的选择。但需从头开始,耗时较长,并非当前最佳方案。除了直接跳转之外,如何实现快速且低成本的无缝切换呢?
经过深思熟虑,仍未能找到满意的解决方案。后来,偶然间听闻“小程序插件”这一概念,恍然大悟。之前虽在文档中见过,却未曾仔细研读,只是匆匆一瞥便略过。或许是自己过于粗心大意。这次,我仔细阅读了小程序插件的详细描述和开发文档(),一番确认后,发现这正是我所寻觅之物。真有一种“众里寻他千百度,蓦然回首,那人却在灯火阑珊处”的感慨。尽管确认了这插件能解决我的问题,但实施过程中仍面临诸多挑战需要克服。
我们的小程序编辑模块数据都保存在其中,但在插件中却无法直接调用,因为缺乏相应的方法。若无法使用,编辑器内修改数据的方法将不得不全部更新,这无疑是一项庞大的工程,难以掌控。此外,若其他存储策略处理不当,可能会引发更严重的问题,甚至导致小程序崩溃。在查阅了小程序插件文档和微信开发者社区后,我并未找到满意的答案。无奈之下,我只能反复研读官方文档,希望能从中找到一些线索。
刚开始我想到了使用wx.来传递参数,例:
// 调用 wx.navigateTo({ url: 'plugin page', success: function(res) { res的事件通道触发,向'data'发送信息,该信息包含getApp()获取的全局数据。 } }); // page Page({
尽管这种方法能够应对当前的问题,但它存在易出错的风险。为确保数据传输全程无断,每个环节,包括wx.的每一个页面,都必须执行与代码中相同的逻辑处理。然而,这样的方案仍让人感觉不尽如人意。
后来我偶然发现了这一技巧,相关文档上虽然阐述得相当简略,但我的直觉告诉我,这正是我一直在寻找的解决方案。我们只需在小程序插件所依托的小程序内,对方法进行定义和导出即可。
module.exports = { getGlobalData: () => { return getApp().globalData; } }
然后导出到插件
{ "myPlugin": { "version": "1.0.0",
在小程序插件中的任意位置我们只需要调用
调用requireMiniProgram函数,进而获取其getGlobalData方法的结果。
就可以获取到小程序的数据了。
采用此方案,我们能够轻松地将编辑器打造成插件,只需对代码进行相应的调整即可。
getApp().globalData
换成
requireMiniProgram().getGlobalData()
就可以了。其他可能就是一些细节的调整。
写在最后:
此方法不仅适用于解决使用上的难题,而且还能应对我们在小程序插件中遇到无法调用小程序某些方法的情况。
运用小程序插件,我们不仅能在不公开源码的前提下实现与第三方平台的流畅连接,提升使用感受,还能实现内容的异步发布。我们的编辑器优化和更新并不受限于所对接的第三方平台,一旦我们发布更新,所有与之对接的插件也将同步更新,这在一定程度上也减轻了维护的负担。
本文地址: /-use-.html