微信小程序实现历史搜索功能(h5同理)

1.实现效果

在这里插入图片描述

2.实现原理

将数据存在storage中。

wx.setStorageSync('search_history', JSON.stringify(this.data.list))

 取数组前15条。

 if (wx.getStorageSync('search_history') ){
     this.setData({
       list:JSON.parse(wx.getStorageSync('search_history') ).slice(0, 15)
     })
   }

并将每次选择的数据移到数组的第一条。

 this.data.list.unshift(data);

清空所有历史。

clearHistory() {
   this.setData({
     list:[]
   })
   wx.removeStorageSync('search_history')
 },

3.微信小程序中将数据存在storage中,除非用户手动触发,否则不会过期,同理,若想在浏览器中实现,只需将数据存在localStorage中即可。

4.代码

<view class=
### UniApp 开发微信小程序 MQTT 协议集成教程 #### 1. 安装依赖库 为了在 UniApp 中集成 MQTT 协议,可以使用 `mqtt.js` 库作为基础工具。通过 npm 或手动下载的方式引入该库。 安装命令如下: ```bash npm install mqtt --save ``` 随后,在项目中创建一个文件夹用于存储自定义的 MQTT 工具类,例如 `/common/utils/mqtt.js` 文件[^1]。 --- #### 2. 创建 MQTT 连接管理器 以下是基于 `mqtt.js` 的连接管理器实现: ```javascript // common/utils/mqtt.js import mqtt from 'mqtt'; let client = null; export default { connect(url, options) { if (!client || !client.connected) { client = mqtt.connect(url, options); } return new Promise((resolve, reject) => { client.on('connect', () => resolve(client)); client.on('error', (err) => reject(err)); }); }, subscribe(topic, qos, callback) { if (client && client.connected) { client.subscribe(topic, { qos }, (err) => { if (err) console.error(`Subscribe error: ${err}`); else if (callback) callback(); }); } }, publish(topic, message, options) { if (client && client.connected) { client.publish(topic, message, options, (err) => { if (err) console.error(`Publish error: ${err}`); }); } }, onMessage(callback) { if (client && client.connected) { client.on('message', (topic, payload) => { callback(topic, payload.toString()); }); } }, }; ``` 此模块提供了基本功能:连接、订阅、发布以及接收消息处理[^1]。 --- #### 3. 设置 WebSocket URL 地址 由于不同平台(H5小程序)使用的 WebSocket 方案有所不同,需针对环境动态设置地址。 对于 H5 平台,通常采用标准 WebSockets (`wss`);而对于微信小程序,则需要使用专属前缀 `wxs` 来适配其网络层特性[^2]。 代码示例: ```javascript // pages/index/index.vue <script> import mqtt from '@/common/utils/mqtt.js'; export default { data() { return {}; }, onLoad(options) { let url; // 动态判断运行环境 // #ifdef H5 url = 'wss://broker.example.com:8888/mqtt'; // #endif // #ifdef MP-WEIXIN url = 'wxs://broker.example.com:8888/mqtt'; // #endif const options = { clientId: 'unique_client_id_' + Math.random().toString(36).substr(2), username: '', // 如果有认证需求填写用户名 password: '' // 密码同理 }; mqtt.connect(url, options) .then(() => { console.log('Connected to broker'); mqtt.subscribe('$SYS/brokers/+/clients/#', 0, this.receiveCallback); }) .catch((err) => { console.error('Connection failed:', err.message); }); }, methods: { receiveCallback() { console.log('Subscription successful!'); } } } </script> ``` 在此部分实现了根据当前运行环境自动切换 WebSocket URL,并完成客户端初始化与主题订阅操作[^2]。 --- #### 4. 处理消息回调 当服务器推送数据到已订阅的主题时,可以通过监听事件获取最新内容并更新界面状态。 扩展前面的例子来展示如何捕获新消息: ```javascript methods: { initMqttListener() { mqtt.onMessage((topic, message) => { console.log(`Received Message - Topic:${topic}, Payload:${message}`); // 更新 UI 数据或其他逻辑... }); } }, onLoad() { ... this.initMqttListener(); // 添加消息监听函数调用 } ``` 这样便能实时响应来自 Broker 的通知[^1]。 --- #### 总结 以上介绍了完整的 uni-app 微信小程序下 MQTT 集成流程,涵盖了从配置到实际应用各环节要点。开发者可根据具体业务场景调整参数设定或者优化架构设计以满足更高性能要求。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嫣嫣细语

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值