微信小程序原生组件使用

微信小程序 --- 微信原生 API 小程序中也能够像网页一样支持本地数据缓存,本地数据缓存是小程序存储在当前设备上硬盘上的数据,本地数据缓存有非常多的用途,我们可以利用本地数据缓存来存储用户在小程序上产生的操作,在用户关闭小程序重新打开时可以恢复之前的状态。其包含以下 8个主要的 API。但一般我们在开发阶段时,处于开发阶段的服务器接口可能还没部署到对应的域名下,经常会通过另一个域名来进行开发调试,考虑到这一点,为了方便开发者进行开发调试,开发者工具、小程序的开发版和小程序的体验版在某些情况下允许。 阅读详情

1、video组件使用

 <view class="live-video">
      <video id="myVideo" src="{{videoSrc}}" bindplay="onPlay" bindfullscreenchange="fullScreenChange" controls object- 
      fit="contain">        
      </video>
 </view>
data:{
 videoSrc:'https://jumeiyouhu.com/huawei_obs/product_info%2F20240509%2Fe44a7a3dfa5e459a897bf5466bbcf755.mp4',
},
 fullScreenChange(e) {
    console.log('全屏状态改变', e.detail.fullScreen);
    // 非全屏
    if (!e.detail.fullScreen) {
      videoContext.pause(); // 暂停视频播放
    }
  },
  onPlay() {
    console.log('视频开始播放');
    let videoContext = wx.createVideoContext('myVideo');
    videoContext.requestFullScreen();
  },

2、map组件使用 

这里把map封装成了一个公共组件jm-stroke

 <jm-stroke endLat="28.24689" endLng="112.962817" endLat="28.24689" startTitle="芙蓉区马王街道中电软件园" endTitle="谷山森林公园" startLat="28.142858" startLng="113.033865" cityCode="4031" />

 jm-stroke:

<view class="stroke-map">
  <map id="myMap" polyline="{{polyline}}" longitude="{{longitude}}" latitude="{{latitude}}" markers="{{markers}}"  ></map>
</view>
// components/jm-stroke/jm-stroke.js
const APP = getApp()
const MAP = require("../../utils/map")
Component({
  lifetimes: {
    attached() {
      this.onLoadMap()
    }
  },
  /**
   * 组件的属性列表
   */
  properties: {
    endLat: {
      type: Number,
      value: null
    },
    endLng: {
      type: Number,
      value: null
    },
    startLat: {
      type: Number,
      value: null
    },
    startLng: {
      type: Number,
      value: null
    },
    cityCode: {
      type: Number,
      value: null
    },
    startTitle: {
      type: String,
      value: ''
    },
    endTitle: {
      type: String,
      value: ''
    },
  },

  /**
   * 组件的初始数据
   */
  data: {
    baseUrl: APP.globalData.baseUrl,
    markers: [],
    latitude: '',
    longitude: '',
    polyline: ''
  },

  /**
   * 组件的方法列表
   */
  methods: {
    onLoadMap() {
      const markers = []
      const markerStart = {
        id: 1,
        latitude: this.data.startLat,
        longitude: this.data.startLng,
        iconPath: this.data.baseUrl + '/images/start.png',
        width: 50,
        height: 50,
        callout: {
          content: this.data.startTitle,
          color: '#000',
          fontSize: 12,
          borderRadius: 10,
          bgColor: '#fff',
          padding: 10,
          display: 'ALWAYS',
          textAlign: 'center'
        }
      }
      const markerEnd = {
        id: 2,
        latitude: this.data.endLat,
        longitude: this.data.endLng,
        iconPath: this.data.baseUrl + "/images/end.png",
        width: 50,
        height: 50,
        callout: {
          content: this.data.endTitle,
          color: '#000',
          fontSize: 12,
          borderRadius: 10,
          bgColor: '#fff',
          padding: 10,
          display: 'ALWAYS',
          textAlign: 'center'
        }
      }
      markers.push(markerStart)
      markers.push(markerEnd)
      let includePoints = [{
          latitude: this.data.endLat,
          longitude: this.data.endLng
        },
        {
          latitude: this.data.startLat,
          longitude: this.data.startLng
        }
      ]
      this.setData({
        markers,
        cityCode: this.data.cityCode,
        includePoints
      })
      this.direction('driving')
      this.direction('transit')
    },
    // 路线规划
    direction(mode) {
      let parmas = {
        key: 'BEBBZ-4PZKB-6JMU6-NCJ7F-QUIH7-GQFFS',
        from: this.data.startLat + ',' + this.data.startLng,
        to: this.data.endLat + ',' + this.data.endLng,
        mode
      }
      const THAT = this
      if (mode === 'driving') {
        MAP.directionByDriving(parmas).then(res => {
          if (res.status === 0) {
            const result = res.result
            const route = result.routes[0]
            let coors = route.polyline,
              pl = [];
            let kr = 1000000;
            for (let i = 2; i < coors.length; i++) {
              coors[i] = Number(coors[i - 2]) + Number(coors[i]) / kr;
            }
            //将解压后的坐标放入点串数组pl中
            for (let i = 0; i < coors.length; i += 2) {
              pl.push({
                latitude: coors[i],
                longitude: coors[i + 1]
              })
            }
            THAT.setData({
              distance: (result.routes[0].distance / 1000).toString().slice(0, -2),
              latitude: pl[0].latitude,
              longitude: pl[0].longitude,
              // 绘制路线
              polyline: [{
                points: pl,
                color: '#58c16c',
                width: 6,
                borderColor: '#2f693c',
                borderWidth: 1
              }]
            })
          } else {
            wx.showToast({
              title: res.message,
              icon: 'none'
            })
          }
        })
      }
    }
  }
})

引用的.map组件方法:

const MAP = {
  // 驾车路线规划
  directionByDriving(data) {
    return new Promise((resolve, reject) => {
      wx.request({
        url: "https://apis.map.qq.com/ws/direction/v1/driving",
        data,
        header: {
          'content-type': 'application/json' // 默认值
        },
        success: (res) => {
          resolve(res.data)
        },
        fail: reject
      })
    })
  }
}

module.exports = MAP

微信小程序 - video使用总结 2.点击封面的时候,获取到该视频的id,进行判断,如果当前没有视频播放,就把该视频设置为播放的状态;如果当前有视频播放,则停止当前播放的视频,再播放你点击的这个视频。感觉自定义的tabbar会方便许多,因为有时候底部tabbar的情况会不一样。我自己粗心没注意到这个问题。判断当前视频是否是播放的状态,如果是就显示视频,如果不是就隐藏视频;1.视频播放的时候,滑动页面视频会一直在那个位置不会跟着滚动条移动。2.一个视频播放的时候,其他视频停止播放,并显示封面。2.视频播放的时候,会挡住底部的tab导航。 阅读详情

相关推荐

告别迷茫!用ETAS RTA-OS配置你的第一个AUTOSAR OS任务(含VRTA虚拟ECU实战)

本文详细介绍了如何使用ETAS RTA-OS工具链在VRTA虚拟ECU上配置和运行第一个AUTOSAR OS任务。通过从XML配置到任务调度的全流程实战,帮助开发者快速掌握嵌入式操作系统开发的核心步骤,特别适合刚接触AUTOSAR的开发者快速上手。

weixin_42533622的博客 418

《十三》微信小程序中常用的内置组件

同层渲染是为了解决原生组件的层级问题,在支持同层渲染后,原生组件与其它组件可以随意叠加,有关层级的限制将不再存在。在表单中的组件上加上 name 来作为它的 key,在 submit 或 reset 绑定的事件处理函数中就可以获取到表单中的组件的 value 值。在工具上,原生组件是用 web 组件模拟的,因此很多情况并不能很好的还原真机的表现,建议在使用到原生组件时尽量在真机上进行调试。微信小程序中的组件分为原生组件和非原生组件。大部分都是非原生组件,少部分是由微信客户端创建的原生组件。

花铛 2902

ESP32-S3驱动雨滴传感器实战:从原理到ADC/GPIO双模式数据采集

本文详细介绍了ESP32-S3驱动雨滴传感器的实战教程,涵盖其工作原理及ADC/GPIO双模式数据采集方法。通过解析传感器利用水的导电性检测雨量的核心机制,提供了完整的硬件连接方案与软件驱动代码,包括模拟量(AO)的ADC读取和数字量(DO)的GPIO读取,并附有调试技巧,帮助开发者快速实现雨滴检测功能。

weixin_32005771的博客 154

原生微信小程序基础-分包加载&&自定义组件&&&项目全流程

小程序基础-分包加载&&自定义组件&&&项目全流程,基础封装-消息反馈,网络请求,鉴权组件,文件上传,腾讯位置服务,路线规划,保存本地........

2301_76866366的博客 4010

STM32输入捕获功能,同时捕获8路波形。

STM32输入捕获功能,使用TIM2和TIM3同时捕获8路波形。 工作上的一个需求,要采集两组控制步进电机的信号。就是采集8个通道的方波,测量频率和计脉冲个数。看起来简简单单的东西,磕磕碰碰搞了两天,走了一些弯路,这里写出来记录一下。顺便理解一下输入捕获个多种用法。 1. 硬件设计 首先看一下用到那些IO口。在STM32手册里找这样TIMx_CHx的就是输入捕获的口了。 这里用了TIM2的4个口和TIM3的4个口。 定义 端口 TIM2_CH1 PA0 TIM2_CH2 PA1 TI

qq_36353009的博客 5122

【项目案例】前后端分离项目 【Web图书管理系统 】SpringBoot + Vue + Element UI + Mysql

Web图书管理系统

激流丶的博客 5396

微信小程序原生学习笔记—组件(1)

原生微信小程序 组件开发常用的知识点

zj858482854的博客 774

2024年全国大学生电子设计竞赛A题_AC-AC变换电路并联运行

AC-AC变换电路并联运行(A 题)【本科组】

qq_74395263的博客 7835

mpvue使用微信小程序原生组件scroll-view,swiper,movable-view的方法

公司做小程序要用mpvue来做,mpvue没有文档肿么办,公司只有我一个前端啊啊啊啊,这下写代码纯属靠猜了 这不遇到问题了,下拉事件怎么整,传统的ui组件会报错……,逼着用小程序原生的组件,写呗,但是触发不了事件啊,心累…… 好不容易弄好了,在这里以&lt;scroll-view&gt;为例子介绍,mpvue使用微信小程序原生组件的方法,真心躺坑过来的,蓝瘦香菇…… 小程序官网例子是这样...

唯一的切慕,唯一的诗歌…… 1万+

RK3588开发笔记-mipi csi接口imx415摄像头调试记录

摘要:本文详细介绍了RK3588开发板适配SONY IMX415 MIPI CSI摄像头的调试过程。从硬件环境准备(包括RK3588核心板、IMX415模块连接及测试工具)、软件环境配置(Linux 5.10内核、驱动状态确认),到设备树关键配置(MIPI链路、GPIO引脚、电源域等)都进行了详细说明。调试过程中通过dmesg日志、media-ctl拓扑分析等工具验证了摄像头驱动加载和图像采集功能。最终实现了800万像素高清图像采集,总结了硬件连接验证、信号完整性优化等关键经验,为类似MIPI摄像头调试提供

flypig has a dream! 881

05 Transformer 到底解决了什么问题

Transformer 是现代大语言模型的底层骨架。本文不推公式,而是从 CNN、RNN/LSTM 的瓶颈讲起,解释 Transformer 如何通过自注意力同时解决长距离依赖和并行训练问题,并说明它为什么能支撑 GPT、BERT 和现代大模型的规模化。

老于的笔记的专栏 245

mpvue中如何使用微信小程序原生组件

首先,必须在static目录下新建iview文件夹,里面放原生的组件。 在需要使用原生组件的页面中,在其json中配置一下,和原生小程序一样,在页面中使用,大概就这些。 ...

前端-尔嵘 1427

大模型的应用与微调:如何调用 LLM?从 OpenAI API 到本地部署

本篇文章介绍了如何调用 OpenAI、DeepSeek、Manus、通义千问等大模型 API,并探讨了 LLM 本地部署的方法。在实际应用中,可以根据需求选择云端 API 或本地化部署方案,以满足不同的计算需求和隐私要求。下一篇:大模型微调与 RAG 技术(LoRA、QLoRA、向量数据库)

晴天彩虹雨的博客 1157

小程序使用vant-dialog组件内容出不来_由微信小程序原生组件层级引发的“血案”...

点击右上方红色按钮关注“web秀”,让你真正秀起来前言今天就来谈谈微信小程序,原生组件层级导致的问题。 官方是这样说的:“原生组件的层级是最高的,所以页面中的其他组件无论设置 z-index 为多少,都无法盖在原生组件上。”有了这句话,如果我们用到了原生组件,就必须考虑层级问题了。否则很容易被原生组件搞乱层级显示问题。比如:意见反馈页面,有一个textarea,填写内容后,提交有一个自定义弹框提示...

weixin_30404433的博客 2275

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

UniApp 中使用微信小程序原生组件实战指南

在 UniApp 跨端开发中,我们经常会遇到**平台特有能力**的需求:例如微信小程序的 `xr-frame 3D`、原生地图、直播组件、AI 能力、原生插件等。 这些能力**无法通过 UniApp 内置组件直接实现**,必须使用**小程序原生自定义组件**。

weixin_45563734的博客 561

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

小程序开发框架是否支持原生组件

第三方框架如wepy、mpvue、taro和uni-app也都支持微信的所有原生组件和API,无限制。因此,无论是使用微信原生开发框架还是第三方框架,开发者都可以利用小程序的原生组件进行开发。这些原生组件有特定的使用限制,例如它们拥有最高的层级,无法被其他组件覆盖,并且部分CSS样式无法应用于原生组件。此外,原生组件的事件监听有特定的写法要求,不支持。小程序开发框架是支持原生组件的。根据微信官方文档,小程序中的部分组件是由客户端创建的原生组件,这些组件包括。(仅在focus时表现为原生组件)、

370

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

微信小程序:原生组件与能力

问题导向 原生组件如何使用? 如果你都有了答案,可以忽略本文章,或去小程序学习地图寻找更多答案 提示,加载,确认框 加载 wx.showLoading() //加载 wx.hideLoading() //结束加载 提示 wx.showToast({ title:'注册成功', icon:'success', duration:3000 }) 确认框 wx.showModal({ title:'提示', content:'这是一个模态弹窗', succ

weixin_44828005的博客 381

微信小程序 原生组件说明

完整微信小程序(Java后端) 技术贴目录清单页面(必看) 原生组件 小程序中的部分组件是由客户端创建的原生组件,这些组件有: camera canvas input(仅在focus时表现为原生组件) live-player live-pusher map textarea video 原生组件同层渲染 同层渲染是为了解决原生组件的层级问题,在支持同层渲染后,原生组件与其它组件可以随意叠加,有关层级的限制将不再存在。但需要注意的是,组件内部仍由原生渲染,样式一般还是对原生组件内部无效。当前所有原生组件(

java1234的博客 798

微信小程序原生组件swiper在mpvue工程中使用注意事项

时下微信小程序开发框架中mpvue是主流的选择之一。其中,免不了还要使用部分小程序原生的组件。swiper组件几乎成为典型小程序界面的必备组成组件之一。但是,我在试用中遇到一个典型问题,很多相关网页中都没有给出明确的注意事项总结。在此文中,我主要强调一个值得注意的问题。 把原生组件swiper封装成一个SFC 为了突出问题,我给出了最大程度的简化,把原生组件swiper封装成一个SFC,文件名为S...

weixin_34292959的博客 621

mpvue使用微信小程序原生组件的坑

style <scroll-view :style="{'height': '300px'}"></scroll-view>要设置高度 原生的事件 <scroll-view :style="{'height': '300px'}" :scroll-y="true" @scrolltolower="scrolltolower" @scroll="scroll" > <div :style="{'height': '200px','background-.

拱卒的博客 807

微信小程序 解决textarea,input等原生组件层级太高遮挡其他组件的问题

微信小程序 解决textarea等原生组件层级太高遮挡其他组件的问题 <view class=''> <button class=''type="primary" style='font-size:12pt;border:0px;width:750rpx'> 保 ...

chenpang2969的博客 2535

微信小程序绝对定位元素无法覆盖原生组件

问题描述: 在使用微信小程序的原生组件video时,需要在视频播放前加上标题的信息,标题使用绝对定位,发现标题无法覆盖video组件 问题出现原因: video为原生组件 由于原生组件脱离在 WebView 渲染流程外,因此在使用时有以下限制: 原生组件的层级是最高的,所以页面中的其他组件无论设置 z-index 为多少,都无法盖在原生组件上。 问题解决办法: cover-v...

天心天地生的博客 3828

【WebSocket】微信小程序原生组件使用SocketTask 调用星火认知大模型

微信小程序中使用SocketTask 调用星火认知大模型API WebSocket

小帅丶的专栏 1921
上一篇: vue3中的一些便捷写法记录
下一篇: Ant Design Vue表单校验报错
FF_XM
博客等级 码龄5年 19粉丝 44原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值