微信小程序开发--详情【开发一次 多端覆盖】

目录

1、准备工作

了解 uni-app :

准备开发工具:

下载 :

安装完成后,打开这个开发者工具:

对微信小程序进行配置:

使用开发工具HBuilderX::

先安装终端插件

2、初始化一个demo

创建项目:

方式一:通过 HBuilderX 的可视化界面

方式二:通过 vue-cli 命令行

项目创建好之后 打开所在文件夹:

安装 node_modules 依赖:

运行初始项目:

若出现错误:

解决:(打开服务端口)

打开之后 这两个工具就可以连起来了(即:当在HBuilderX中点击运行 并成功后,会自动打开微信开发者工具 )

微信开发者工具:(运行之后的界面)

3、完善项目

新建页面:

无法直接导入pinia,若直接运行 会报错,

解决:

实现页面跳转:

方式一:使用组件

方式二:navigateTo方法【只能在菜单之间跳转,超出范围 就不能跳转】

“登录”

注册微信小程序:

小程序 ID 和 密钥:

注册之后 找到小程序的开发管理 点击“生成”,即可生成自己的密钥

利用上述的 小程序ID 和 密钥,进行App模块配置:

资源:

阿里开源的图标组件:https://www.iconfont.cn/

注意:

① 在 pages.json 里:使用tabBar组件创建菜单

② 注意 uni-app 里面的 pages.json 对应的是 微信开发者工具里的 app.json

③ onMounted 和 onLoad 注意:

④ 注意调用之间的顺序:

⑤ 我们要的就是openID , 它比较重要 是因为openID是 用户的唯一标识, 而且 openID 要存到 pinia 里面

⑥ tabBar 规定 至少有两个items

4、新加内容

遇到的报错内容:

解决方案:

代码参考:

结果截图:

涉及到的知识点:

数据流向


1、准备工作

了解 uni-app :

查看uni-app的官网:https://uniapp.dcloud.net.cn/

uni-app 就是 用 Vue.js 开发所有前端应用 的框架

用vue去写,uni-app会帮我们生成 各个终端适配的一个应用

可以实现开发者编写一套代码,就能发布到iOS、Android、Web(响应式)、以及各种小程序(微信/支付宝/百度/头条/飞书/QQ/快手/钉钉/淘宝)、快应用等多个平台。【即:一次开发 多端覆盖】

准备开发工具:

下载 :

① HBuilder X 开发工具

官网: https://www.dcloud.io/hbuilderx.html

了解 HBuilder X :

uni-app开发工具 是由 HBuilder X 开发工具来写的,对这个框架的支持度比较高

进 HBuilder X 的官网 下载 :(免安装 解压完就可直接用)

② 微信小程序的模拟器 (也称 微信开发者工具)

官网: https://developers.weixin.qq.com/miniprogram/dev/devtools/stable.html

了解 微信小程序的模拟器:

它是将 HBuilder X 上写的代码,构建成 符合微信小程序的项目结构 在这上面编译并运行的

进官网 下载稳定版更新日志 :

点击之后 下载步骤:

安装完成后,打开这个开发者工具:

先扫二维码登录微信

点“测试号”,会生成 AppID ,拿到这个AppID就行 其他不用管

对微信小程序进行配置:

① 配置AppID:直接将AppID放里面就行了,会自动保存

【注意: 相关配置 放进去会自动保存,但是像那些vue文件 编辑之后 需要手动 ctrl+s 保存】

② 配置微信小程序的启动地址:

使用开发工具HBuilderX::

先安装终端插件

安装“内置的终端插件” 失败:

解决:

查看日志:

根据日志信息 解决:

安装成功:

2、初始化一个demo

创建项目:

方式一:通过 HBuilderX 的可视化界面

方式二:通过 vue-cli 命令行

打开命令行窗口 的方式:

输入命令:

① 全局安装 vue-cli(脚手架):(一般都装过了 就不用再安装了)

npm install -g @vue/cli

Java

② 创建项目

npx degit dcloudio/uni-preset-vue#vite-ts 项目名

Java

创建成功截图:

项目创建好之后 打开所在文件夹:

安装 node_modules 依赖:

npm i

Java

安装完成 就会自动出来这个依赖文件夹

运行初始项目:

若出现错误:

解决:(打开服务端口)

打开之后 这两个工具就可以连起来了(即:当在HBuilderX中点击运行 并成功后,会自动打开微信开发者工具 )

微信开发者工具:(运行之后的界面)

3、完善项目

新建页面:

无法直接导入pinia,若直接运行 会报错

解决:

① 先升级vue :

npm i vue@3.4.31

Shell

② 再安装pinia:

npm i pinia

Java

实现页面跳转

(参考官网:https://uniapp.dcloud.net.cn/component/navigator.html)

方式一:使用组件

<navigator :url="'/pages/navigate/navigate?item='+ encodeURIComponent(JSON.stringify(item))"></navigator>

Java

方式二:navigateTo方法【只能在菜单之间跳转,超出范围 就不能跳转】

详情可参考: https://uniapp.dcloud.net.cn/api/router.html

“登录”

可参考官网:https://uniapp.dcloud.net.cn/api/plugins/login.html#login

注册微信小程序:

进官网 注册: https://mp.weixin.qq.com/

小程序 ID 和 密钥:

注册之后 找到小程序的开发管理 点击“生成”,即可生成自己的密钥

利用上述的 小程序ID 和 密钥,进行App模块配置:

资源:

阿里开源的图标组件:https://www.iconfont.cn/

(是公开、免费使用的才能下载)

注意:

① 在 pages.json 里:使用tabBar组件创建菜单

② 注意 uni-app 里面的 pages.json 对应的是 微信开发者工具里的 app.json

③ onMounted 和 onLoad 注意:

在 vue 里面 用onMounted 和 onLoad ,他们都是生命周期的钩子函数

由于 是先加载完之后 再挂载,所以 onLoad 会先出发 再执行 onMounted

④ 注意调用之间的顺序:

微信小程序申请之后 会有个自己的 ID 和 密钥, 要拿用户的信息 我们必须通过 ID 和 密钥,

由于 不能直接在微信小程序里面 调 ID 和 密钥的接口 拿用户信息(因为微信小程序 最终打包也是前端的 ,如果把密钥这些都放进去 很容易信息被盗取)

所以 一定要中转一下,就是要先调用自己的服务器 自己的服务器通过自己申请的appID 和 密钥,再通过微信的服务器调url 拿到用户的id

⑤ 我们要的就是openID , 它比较重要 是因为openID是 用户的唯一标识, 而且 openID 要存到 pinia 里面

⑥ tabBar 规定 至少有两个items

4、新加内容

遇到的报错内容:

[plugin:vite:vue] [@vue/compiler-sfc] <script setup> cannot contain ES module exports. If you are using a previous version of <script setup>, please consult the updated RFC at https://github.com/vuejs/rfcs/pull/227.

解决方案:

代码参考:

<template>    <view>        <view>            <form @submit="formSubmit" @reset="formReset"><view class="uni-form-item uni-column">                    <view class="title">姓名:</view>                    <input class="uni-input" name="input" placeholder="请输入姓名" />                </view><view class="uni-form-item uni-column">                    <view class="title">性别</view>                    <radio-group name="radio">                        <label>                            <radio value="radio1" /><text>男</text>                        </label>                        <label>                            <radio value="radio2" /><text>女</text>                        </label>                    </radio-group>                </view>                <view class="uni-form-item uni-column">                    <view class="title">爱好</view>                    <checkbox-group name="checkbox">                        <label>                            <checkbox value="checkbox1" /><text>唱歌</text>                        </label>                        <label>                            <checkbox value="checkbox2" /><text>运动</text>                        </label>                    </checkbox-group>                </view>                <view class="uni-form-item uni-column">                    <view class="title">年龄</view>                    <slider value="50" name="slider" show-value></slider>                </view><view class="uni-btn-v">                    <button form-type="submit">提交</button>                    <button type="default" form-type="reset">重置</button>                </view>            </form>        </view>    </view></template>
<script >    export default {            data() {                return {                }            },            methods: {                formSubmit: function(e) {                    console.log('form发生了submit事件,携带数据为:' + JSON.stringify(e.detail.value))                    var formdata = e.detail.value                    uni.showModal({                        content: '表单数据内容:' + JSON.stringify(formdata),                        showCancel: false                    });                },                formReset: function(e) {                    console.log('清空数据')                }            }        }</script>
<style>      .uni-form-item .title {              padding: 20rpx 0;          }     </style>

Java

结果截图:

涉及到的知识点:

数据流向

  • 数据收集

  • 当表单提交时,formSubmit 方法被触发。

  • 事件对象 e 包含了表单的数据,可以通过 e.detail.value 获取。

  • 这些数据被打印到控制台,并通过 uni.showModal 显示给用户。

  • 数据处理

  • 数据并没有被导出到外部,而是在组件内部被处理。

若是将数据导出到外部,

例如发送到服务器或保存到本地存储中,

需要在 formSubmit 方法中添加相应的逻辑。例如,可以使用 fetchaxios 发送 HTTP 请求 来将数据发送到服务器

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/52686.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2024广东省职业技能大赛云计算赛项实战——安装ELK日志分析服务

安装ELK日志分析服务 前言 ELK是一个用于处理和分析日志数据的开源技术栈&#xff0c;由三个主要组件组成&#xff0c;E即Elasticsearch&#xff0c;L即Logstash&#xff0c;K即Kibana。 Elasticsearch是一个分布式搜索和分析引擎&#xff0c;用于存储、搜索和分析大量数据&…

OpenCV绘图函数(4)绘制轮廓线的函数drawContours()的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 函数会在图像中绘制轮廓线&#xff0c;如果 thickness ≥ 0&#xff0c;则绘制轮廓线&#xff1b;如果 thickness < 0&#xff0c;则填充由轮…

某系统任意用户创建漏洞

初来人间不知苦&#xff0c;潦倒半生一身无&#xff0c;转身回望来时路&#xff0c;方知生时为何哭。 漏洞描述 某系统存在任意用户创建漏洞&#xff0c;发送特定的请求包攻击者可以创建管理员账户登录后台 漏洞实战 出现漏洞的文件为 userproce.php&#xff0c;出现漏洞的…

基于STM32开发的智能垃圾桶系统

目录 引言环境准备工作 硬件准备软件安装与配置系统设计 系统架构硬件连接代码实现 系统初始化超声波传感器检测与垃圾桶开关控制状态显示与声音提示Wi-Fi通信与满溢通知应用场景 家庭环境的智能垃圾桶管理办公室与公共场所的智能垃圾处理常见问题及解决方案 常见问题解决方案…

POJO、PO、DTO、VO、BO到底是什么?都如何使用?(基础概念+传输示意图+示例代码)带你一次玩转层出不穷的Object

文章目录 前言一、解释关系二、POJO、PO、DTO、VO、DAO、BO1.什么是POJO&#xff08;Plain Old Java Object&#xff09;2.什么是PO&#xff08;Persistent Object&#xff09;3.什么是DTO&#xff08;Data Transfer Object&#xff09;4.什么是VO&#xff08;View Object&…

TCP三次握手过程详解

三次握手过程&#xff1a; 客户端视角&#xff1a; 1.客户端调用connect&#xff0c;开启计时器&#xff0c;发送SYN包&#xff0c;如果重传超时&#xff0c;认为连接失败 2.如果收到服务端的ACK&#xff0c;则进入ESTABLISHED状态 3.清除重传计时器&#xff0c;发送ACK&…

NoSQL数据库-Redis集群详解及案例实现

一、 关系型数据库和 NoSQL 数据库 1.1 数据库主要分为两大类&#xff1a;关系型数据库与 NoSQL 数据库 关系型数据库&#xff0c;是建立在关系模型基础上的数据库&#xff0c;其借助于集合代数等数学概念和方法来处理数据库中的数据主流的 MySQL、Oracle、MS SQL Server 和 D…

mac 虚拟机PD19运行E-prime实验遇到E-prime unable to set display mode:0*80004001问题解决

作者&#xff1a;50% unable to set display mode问题 总结&#xff1a; 1. 修改该Experiment的Devices中的Dispaly为640*680&#xff0c;Color Bit Depth设置为32。&#xff08;这个分辨率仅限于学习用&#xff0c;实际实验应该还是在真机上&#xff09; 2. 右键开始菜单中的E…

取模+背包

前言&#xff1a;一开始我想错了&#xff0c;一开始我想的是直接统计每一项模完后的和&#xff0c;我们只要能够取到一半&#xff0c;那么就有解&#xff0c;但是时间复杂度太大了 我们做推导 x y s u m x y sum xysum x − y k ∗ n x - y k * n x−yk∗n 那么我们可…

Mysql语句性能优化

SQL查询过程 查询缓存&#xff1a; 执行查询语句的时候&#xff0c;会先查询缓存&#xff08;MySQL 8.0 版本后移除&#xff0c;因为这个功能不太实用&#xff09;。分析器&#xff1a; 没有命中缓存的话&#xff0c;SQL 语句就会经过分析器&#xff0c;分析器说白了就是要先看…

C程序设计——类型转换

什么是类型转换 当两个不同类型的数据&#xff0c;进行算数运算时&#xff0c;就需要将两个数据转换成同一类型&#xff0c;再运算&#xff0c;这就叫类型转换。 注意&#xff0c;类型转换只是发生在计算过程中&#xff0c;并不更改变量或常量本身的类型。 隐式类型转换 经…

2024年第十五届蓝桥杯图形化省赛真题分享包含答案

Scratch初级:8月24日9:30-11:00 Scratch中级:8月24日14:00-15:30 Python:8月25日9:30-11:00 C++:8月25日14:00-15:30 这次考了哪些内容呢,我们来大概看看(编程题没有答案,编程题有,大家可以评论群留言单选题的答案): <

MATLAB 计算凹凸多边形的面积(85)

MATLAB 计算凹凸多边形的面积(84) 一、算法介绍二、算法实现1.代码一、算法介绍 计算凹凸多边形的面积,并输出计算结果,可视化 二、算法实现 1.代码 % 设置多边形的顶点坐标 % 这里以一个五边形为例 x = [1, 3, 4

Codeforces 1304C - Air Conditioner(1500)

Air Conditioner 题面翻译 一个餐馆中有个空调&#xff0c;每分钟可以选择上调 1 1 1 个单位的温度或下调 1 1 1 个单位的温度&#xff0c;当然你也可以选择不变&#xff0c;初始的温度为 m m m 。 有 n n n 个食客&#xff0c;每个食客会在 t i t_i ti​ 时间点到达&am…

千亿养生茶饮市场待觉醒,如何善用“批量混剪”带火中药茶?

入夏以来&#xff0c;中医养生正强势打开年轻人的市场。 上线24h卖出115万帖&#xff0c;服务器被挤爆&#xff0c;浙江省中医院“乌梅汤2.0”打开了中药代茶饮爆单的序幕。 进入三伏天后&#xff0c;除了爆火的晒背外&#xff0c;中医药地摊纷纷扎在各地夜市里&#xff0c;把脉…

软件设计师全套备考系列文章15 -- 数据库:规范化、控制功能、大数据

软考-- 软件设计师&#xff08;15&#xff09;-- 数据库&#xff1a;规范化、控制功能、大数据 文章目录 软考-- 软件设计师&#xff08;15&#xff09;-- 数据库&#xff1a;规范化、控制功能、大数据前言一、章节考点二、规范化三、数据库的控制功能四、大数据、数据仓库 前言…

Linux之7z命令压缩和解压(三十四)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 新书发布&#xff1a;《Android系统多媒体进阶实战》&#x1f680; 优质专栏&#xff1a; Audio工程师进阶系列…

【Java设计模式】非循环访问者模式:简化对象交互

文章目录 【Java设计模式】非循环访问者模式&#xff1a;简化对象交互一、概述二、非循环访问者设计模式的意图三、非循环访问者模式的详细解释及实际示例四、Java中非循环访问者模式的编程示例五、非循环访问者模式类图六、Java中何时使用非循环访问者模式八、非循环访问者模式…

pdf怎么转换成excel?掌握好这9个pdf转换方法就够了(全)

pdf怎么转换成excel&#xff1f;日常的办公生活中&#xff0c;我们经常需要接触很多文档格式&#xff0c;而pdf格式文件因为其稳定性和安全性受到很多办公人士的喜爱。但PDF文件不能直接编辑&#xff0c;很多小伙伴们就会出现关于pdf格式转换的难题&#xff0c;比如说想把一份带…

边听边打?不再是难题,4款音频转文字神器推荐

无论是会议记录、课堂笔记还是采访录音&#xff0c;能快速准确地转录成文本&#xff0c;那可是大大提高了工作效率。市面上有几款工具在这方面做得不错&#xff0c;比如365在线转文字、布谷鸟配音、腾讯云语音识别和Speechnotes。今天就来个大比拼&#xff0c;看看它们各自的表…