千家信息网

微信小程序中怎么使用WebSocket实现长连接

发表于:2025-11-07 作者:千家信息网编辑
千家信息网最后更新 2025年11月07日,这篇文章主要讲解了"微信小程序中怎么使用WebSocket实现长连接",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"微信小程序中怎么使用WebSocke
千家信息网最后更新 2025年11月07日微信小程序中怎么使用WebSocket实现长连接

这篇文章主要讲解了"微信小程序中怎么使用WebSocket实现长连接",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"微信小程序中怎么使用WebSocket实现长连接"吧!

项目使用的技术栈

  • 数据请求: flyio.js- 同时支持浏览器、小程序、Node、Weex的基于Promise的跨平台http请求库。可以让您在多个端上尽可能大限度的实现代码复用

  • css预编译器: stylus-基于Node.js的CSS的预处理框架

  • 数据来源:EasyMock-为测试提供模拟数据

  • 整体框架: mpvue

  • 地图:腾讯地图api

下载启动步骤

  • 1、git clone

  • 2、安装启动

# install dependenciesnpm install# serve with hot reload at localhost:8080npm run dev# build for production with minificationnpm run build# build for production and view the bundle analyzer reportnpm run build --report
  • 3、小程序开发工具指向下面的dist目录

mpvue与小程序擦出的火花(采坑之旅)

在写美团外卖小程序时,我跟大家一样步履蹒跚。总会遇到各种各样的问题以及徘徊在vue写法和mpvue写法中间不能自拔。mpvue刚出不久,有效的资源真的甚少,没有一套基本项目流程的介绍。所以我便萌发了这篇文章,通过这个完整的项目去构思整套mpvue开发。很多问题可能不能一一列举,但我会把最常见最常用的地方尽我所能的去阐述。乐于分享,帮助社区。

一、mpvue中数据请求的封装

写项目最重要的便是数据,有了数据整个页面就活起来了,数据的浇灌便需要http的请求。微信小法度榜样的就javascript运行情况和浏览器不合,页面的脚本逻辑是在JsCore中运行,JsCore是一个没有窗口对象的情况,所以不克不及裹足本中应用window,也无法裹足本中操作组件,JsCore中也没有XmlhttpRequest对象,所以jquery 、zepto、axios这些在小法度榜样中都不克不及用,而此时,fly便担任了这一重任。

  • 1、安装flyio.js

npm install flyio
  • 2、在util创建一个fly.js用于封装

import Vue from 'vue' var Fly=require("flyio/dist/npm/wx.js") //wx.js为flyio的微信小程序入口文件var fly=new Fly(); //创建fly实例//添加拦截器fly.interceptors.request.use((config,promise)=>{    config.headers["X-Tag"]="flyio";  //给所有请求添加自定义header    return config;})//配置请求基地址fly.config.baseURL="https://www.easy-mock.com/mock/5aded45053796b38dd26e970/"Vue.prototype.$http=fly  //将fly挂载在vue上供全局使用export default fly
  • 3、在根目录的main.js下封装一个getList方法.用到请求数据的页面直接调用这个方法即可。提高代码复用率

    Vue.prototype.getList = function () {     wx.showLoading({       title: '加载中',   })   this.$http.get('sell#!method=get').then((res)=>{       this.restaurant = res.data.data.restaurant;  //商家数据       this.goods = res.data.data.goods; //商品数据       this.seller = res.data.data.seller; //商家详细数据       this.ratings= res.data.data.ratings //评论数据       wx.hideLoading();     }).catch((e)=>{     console.log(e)   })}

封装好了数据的请求,我们的项目就实现了一大半了。接下来就是如何利用这些数据来填充我们的页面完成交互。

二、mpvue实用功能的详解

接下来我将会一一介绍在mpvue中如何实现定位,位置搜索,上拉加载下拉刷新,物品之间的二级联动。让我们打起精神,一起focus下面的知识点。

mpvue定位及位置搜索

mpvue中定位及位置搜索跟小程序类似


官方拷贝下来的js放在utils下,这里要注意的是一定要将他的输出更改为

export default QQMapWX;

这样才可以在页面中使用,这里配合微信小程序提供的 wx.getLocation()和 wx.chooseLocation()API使用。

 import QQMapWX from "../../utils/map"; //导入刚引入的js    var qqmapsdk;    qqmapsdk = new QQMapWX({    key:'DHNBZ-2ZLKK-T7IJJ-AXSQW-WX5L6-A6FJZ'    });
mpvue上拉加载下拉刷新

通过onPullDownRefresh和onReachBottom方法实现mpvue小程序下拉加载和上拉刷新

// 局部开启下拉刷新,就在文件下的main.js

export default {  config: {    "enablePullDownRefresh": true,  }}
 onReachBottom() {        let nextPage = this.page +1; //定义每一页page,下来刷新新的一页+1        this.page = nextPage  //更新page        this.$http.get('sell#!method=get').then((res)=>{        this.restaurant =[...res.data.data.restaurant,...this.restaurant]//请求的新数据,解构出来渲染页面        }).catch((e)=>{        console.log(e)        })    },onPullDownRefreash(){  this.isShow = !this.isShow }
mpvue中实现二级联动

实现该功能的思路:

  • 1 左到右:通过点击左侧滑栏的某一项,获取到该元素携带的 id ,然后动态传给右侧滑栏的 scroll-into-view ,从而实现右侧滑栏对应的该元素运动置顶。

  • 2 右到左:通过计算整个右侧滑栏滚动上去的高度 与右侧滑栏中每一个分类距顶部的距离做比对,获取到该滚动置顶的分类的 index 。然后用获取到的 index 乘以左侧滑栏中某一项的高度,动态赋值给左侧滑栏内的 scrollTop ,控制左侧滑栏的联动。

注意这几点:

(1) 小程序 wxss 中使用 rpx,而 js 中 scrollTop 获取到的值是 px,所以存在rpx 转 px 的问题。以 iPhone6 为基准,转换公式:

// percent 为当前设备1rpx对应的px值var percent = res.windowWidth / 750;

(2) 微信自带scroll-view UI组件,通过 bindscroll="scroll" 绑定滚动事件;通过 scroll-top="{{scrollTop}}" 动态控制 左侧滑栏的被动滚动。代码就不一一贴出来,项目中有详细的注释。点这里查看

三、mpvue组件分析,组件通信

做完一个项目并不难,但做好一个项目却要经过无数次的思考。其中之一就是看文档,所谓书读百变,其义自现。的确,当你一遍又一遍的看文档后你会发现你写起来非常的顺手,用到即来。没事可以点击vue文档多看看。

组件分析

什么是组件分析?对mpvue来讲,组件是构成项目的基本单元。只要划分好了组件,项目写起来那是非常的快的。为了方便理解,这里定义两类组件:页面组件,功能组件。页面组件就是当前你看见的这个网页地址的完整显示,他将包含几个功能组件。
美团外卖小程序功能组件很多,大致的列几个:

  1. 评分组件,需要的props的值为:星星的大小,商家的评分

  2. 购物车组件: 需要的props:selectFoods,deliveryPrice, minPrice等

  3. 公告组件:每个项目难免发布一些公告或者弹窗,把它抽出来当一个组件

  4. 间距split组件: 组件可以很大很多功能,也可能很少,只要在项目中经常用的就可以抽出来当一个组件。

  5. swiper组件: 轮播图作为一个组件,可以减少我们一个页面成堆的代码,把它抽出来当一个组件,日后也更易维护。

组件通信

一、 组件间可以通过props传递数据,这里以选物品 -> 选择组件 -> 购物车 -> 订单详情一条线来详细描述组件间数据怎么传递的。

  • props: {      food: {  //接受一个food,代表选择的是哪个商品          type: Object,      }  },  addCart(event) {      if(!this.food.count){          this.$set(this.food, 'count', 1)  //点击事件传递给父组件          this.food.count = 1;       }else{          this.food.count++  // 商品++      }  },
    • 1 选择组件

  • 2 购物车

通过props接受一个selectFood,这里把它放入小程序的本地中提供给订单页面 try {            wx.setStorageSync('selectFoods', this.selectFoods)        } catch (e) {               console.log(e)         }
  • 3 订单页面

 try {    var value = wx.getStorageSync('selectFoods') //拿到存储的数据,使用同步的概念    if (value) {      this.isShow = false; // 判断订单也是否有数据,没有数据则用v-show引用一个组件去渲染页面      this.orderList=value; //数据渲染页面    }  } catch (e) {    console.log(e)  };

二、父子组件间方法的调用可以通过$on, $emit

var Event = new Vue();//相当于又new了一个vue实例,Event中含有vue的全部方法Event.$emit('msg',this.msg);//发送数据,第一个参数是发送数据的名称,接收时还用这个名字接收,第二个参数是这个数据现在的位置Event.$on('msg',function(msg){//接收数据,第一个参数是数据的名字,与发送时的名字对应,第二个参数是一个方法,要对数据的操})

感谢各位的阅读,以上就是"微信小程序中怎么使用WebSocket实现长连接"的内容了,经过本文的学习后,相信大家对微信小程序中怎么使用WebSocket实现长连接这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

组件 数据 程序 页面 项目 功能 方法 代码 位置 参数 右侧 就是 订单 问题 下拉 封装 动态 名字 商品 商家 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 贵州智能土地gis系统软件开发 航天通信属于网络安全吗 在南通哪里学软件开发 关于软件开发 的创业计划书 ecs 云服务器是什么 问道手游稳定服务器 微信小程序数据库数据存在哪 软件开发的用户故事实例 mysql访问不同数据库 文件系统和数据库系统之间的联系 在哪登录服务器网址 CEIC数据库质量 数据库java存储过程 建筑实践期刊收录三大数据库吗 网络安全凯撒密码怎么算 开展网络安全检查并出具反馈意见 win 7服务器管理器 网络安全与国家秘密的联系 福建省委网络安全专家 数据库qes怎么保存 多媒体数据库应用实例 网络安全大赛 注重 江西联想服务器虚拟化优化 网络安全与道德 学情分析 网络安全国家安全例子 软件开发公司做的都是什么项目 数据库商品信息建表语句 程序测试在软件开发中的地位 我与网络安全有个约定手抄报幼儿 行政企事业单位网络技术
0