论坛项目小程序和h5登录

news2025/7/19 15:44:31

项目中安装uview


出现npm安装uview 直接报错:

创建一个package.json配置文件在进行安装。

cmd到项目。初始化一个package.json文件(vue项目的配置文件)
npm init --yes
安装uview

项目点击关注


进入管页面,需要验证用户是否登录

查用户是否存在登录缓存(token)

使用官方内置缓存API

uni.setStorage   异步接口
uni.setStorageSync   同步接口

调试对应缓存位置

在检测不到用户登录信息跳转登录界面需要使用导航跳转

//获取token令牌值
                    uni.getStorage({
                        key: "_token",
                        success: (res) => {
                        },
                        fail(error) {
                            //进这个位置没有token
                            //跳转登录
                            uni.navigateTo({
                                url: "/pages/login"
                            })
                        }
                    })
navigateTo  跳转page界面  可以传递参数
switchTab   跳转tabbar  不可以传递参数

//其他属性参考文档

uniapp登录界面效果展示根据不同平台切换


uniapp官方提供了条件编译。
根据平台不同编译不同的模板或者代码或者配置

uni-app能实现一套代码、多端运行,核心是通过编译器 + 运行时实现的:

为什么编译出不同的效果:

条件编译是用特殊的注释作为标记,在编译时根据这些特殊的注释,将注释里面的代码编译到不同平台。

条件编译的写法:

以 #ifdef 或 #ifndef 加 %PLATFORM% 开头,以 #endif 结尾。

#ifdef  %****%
//代码

#endif
<template>
    <view class="login">
        <!-- #ifdef MP-WEIXIN -->
        <button>按钮</button>
        <!-- #endif -->
        <!-- #ifndef MP-WEIXIN -->
        <button>按钮1</button>
        <button>按钮2</button>
        <!-- #endif -->
    </view>
</template>

<script>
    export default {
        mounted() {
            // 微信小程序 可执行
            // #ifdef MP-WEIXIN
            console.log("小程序");
            // #endif
            // #ifndef  MP-WEIXIN 
            console.log("其他");
            // #endif
        }
    }
</script>

<style>
    /* #ifdef MP-WEIXIN */

    /* #endif */
</style>

page.json 文件配置条件编译

// #ifdef MP-WEIXIN
    "globalStyle": {
        "navigationBarTextStyle": "black",
        "navigationBarTitleText": "uni-app",
        "navigationBarBackgroundColor": "#F8F8F8",
        "backgroundColor": "#F8F8F8"
    },
    //#endif
    // #ifndef MP-WEIXIN
    "globalStyle": {
        "navigationBarTextStyle": "black",
        "navigationBarTitleText": "uni-app",
        "navigationBarBackgroundColor": "#F8F8F8",
        "backgroundColor": "#F8F8F8",
        "navigationStyle": "custom"
    },
    //#endif

小程序登录


登录流程—原生小程序文档搜索

登录凭证校验。通过 wx.login 接口获得临时登录凭证 code 后传到开发者服务器调用此接口完成登录流程

用户点击登录按钮授权登录

代码演示:

         //小程序用户登录
                // #ifdef MP-WEIXIN
                //获取临时登录凭证
                uni.login({
                    success(res) {
                        console.log(res);
                    }
                })
                // #endif

uniapp中获取用户的头像和昵称

官网:

    //获取用户的基本信息
                        uni.getUserInfo({
                            success(user) {
                                console.log(user);
                            }
                        })
    //返回的是匿名数据
uni.getUserProfile(OBJECT)
获取用户信息。每次请求都会弹出授权窗口,用户同意后返回 userInfo。
该API仅支持微信小程序端(基础库2.10.4-2.27.0版本)
    uni.getUserProfile({
                    desc: "用户登录",
                    success(user) {
                        console.log(user);
                    }
                })
                //代码书写上  获取用户信息  不放在login临时凭证中
    uni.getUserProfile({
                    desc: "用户登录",
                    success(user) {
                        console.log(user);
                        uni.login({
                            success(res) {
                                console.log(res);
                            }
                        })
                    }
                })

H5端登录


手机+验证码登录

使用条件编译来处理兼容

点击获取验证码

//获取验证码
            async getCode() {
                //获取验证码
                if (!this.mobile.length) {
                    this.$refs.uToast.show({
                        type: 'default',
                        message: "请输入手机号!",
                    })
                    return;
                }
                //检测手机号是否为空
                if (!/^[1][3|4|5|7|8][0-9]{9}$/.test(this.mobile)) {
                    //手机号不合法
                    this.$refs.uToast.show({
                        type: 'default',
                        message: "请输入正确手机号!",
                    })
                    return;
                }
                let res = await getcodeMsg(this.mobile);
                this.$refs.uToast.show({
                    type: 'default',
                    message: res.msg,
                })
            },

点击登录按钮登录发送ajax

async userLogin() {
                //h5登录
                // #ifndef MP-WEIXIN
                let {
                    mobile,
                    code
                } = this;
                let result = await mobileCodeLogin(mobile, code);
                console.log(result);
                // #endif
                //小程序用户登录
                // #ifdef MP-WEIXIN
                uni.getUserProfile({
                    desc: "用户登录",
                    success: (user) => {
                        //获取用户头像和昵称
                        let {
                            avatarUrl,
                            nickName
                        } = user.userInfo;
                        //获取临时登录凭证
                        uni.login({
                            success: (res) => {
                                //获取临时code
                                let {
                                    code
                                } = res;
                                this.sendMsg(avatarUrl, nickName, code);
                            }
                        })
                    }
                })
                // #endif
            },

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

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

相关文章

Python编程自动化办公案例(3)

作者简介&#xff1a;一名在校计算机学生、每天分享Python的学习经验、和学习笔记。 座右铭&#xff1a;低头赶路&#xff0c;敬事如仪 个人主页&#xff1a;网络豆的主页​​​​​​ 目录 前言 一.前几章代码 1.获取到第一题的选项单元格 2.实现批量获取文件 二. 批…

Linux——UDP协议与相关套接字编程

一.概念在网络通信中&#xff0c;传输层中最常用的通信协议有两个&#xff1a;TCP协议与UDP协议。这两种协议虽然都可以用于网络通信&#xff0c;但是通信方式不同决定了应用场景的不同。与TCP协议相比&#xff0c;UDP协议最具特色的不同点有两个&#xff1a;无连接与面向数据报…

kubernetes集群pod中的pause容器作用

kubernetes集群pod中的pause容器作用 我们搭建完集群了以后&#xff0c;可以使用最简单的方式创建一个pod&#xff0c;随意你建立什么pod&#xff0c;去访问相应node上执行docker ps 就会看到有一种pause容器&#xff0c;但是你可能从来没有启用 etrics-scraper_dashboard-me…

C++中的内存管理

文章目录前言1.C中内存空间的划分2.C内存管理方式1.对内置类型的处理2.对自定义类型的处理3.new和delete实现原理4.定位new3.总结1. malloc/free和new/delete的区别2. 内存泄漏前言 C中的内存空间划分和C语言是很像的&#xff0c;基本上区别不大。但是因C中&#xff0c;引入了…

【华为OD机试模拟题】用 C++ 实现 - 找字符(2023.Q1)

最近更新的博客 【华为OD机试模拟题】用 C++ 实现 - 货币单位换算(2023.Q1) 【华为OD机试模拟题】用 C++ 实现 - 选座位(2023.Q1) 【华为OD机试模拟题】用 C++ 实现 - 停车场最大距离(2023.Q1) 【华为OD机试模拟题】用 C++ 实现 - 重组字符串(2023.Q1) 【华为OD机试模…

MyBatis-常用SQL操作

一、动态SQL 1.概述】 1.1动态SQL&#xff1a; 是 MyBatis 的强大特性之一&#xff0c;解决拼接动态SQL时候的难题&#xff0c;提高开发效 1.2分类&#xff1a; if choose(when,otherwise) trim(where,set) foreach 2.if 2.1 做 where 语句后面条件查询的,if 语句是可以…

【OpenFOAM】-olaFlow-算例10-wavemakerTank

算例路径&#xff1a; olaFlow\tutorials\wavemakerTank 算例描述&#xff1a; 采用 Flap和Piston两种方式的动网格进行造波 学习目标&#xff1a; 了解 olaDyMFlow 的使用&#xff1b;理解动网格使用和参数设置&#xff0c;理解 dynamicMotionSolverFvMesh 参数设置&#xff1…

ChatGPT对于普通人有什么机会和影响?

ChatGPT爆火“出圈”&#xff0c;短短三个月里&#xff0c;势如破竹。 月活已经达到1亿&#xff0c;什么概念呢&#xff1f;Tiktok在海外达到1亿月活用了将近9个月时间&#xff0c;Instagram用了大约2年半&#xff0c;就连比尔盖茨都表示“Web3没那么重要&#xff0c;元宇宙没…

STM32---备份寄存器BKP和 FLASH学习使用

BKP库函数 学习BKP&#xff0c;首先就是知道BKP每一个函数的作用然后如何使用即可 使用备份域的作用只需要操作上面的两个函数即可&#xff0c;其余的都是它的其他功能 BKP简介 备份寄存器是42个16位的寄存器&#xff0c;可用来存储84个字节的用户应用程序数据。他们处在备份…

【Jupyter Notebook的简单入门使用】

【Jupyter Notebook的简单入门使用】简单介绍安装与配置简单使用Markdown关闭简单介绍 Jupyter官网 Jupyter Notebook 介绍 简单来讲&#xff0c;它是一个网页应用&#xff0c;可以进行文档编写&#xff0c;甚至运行 py 代码等功能 安装与配置 下载合适版本的 python &#…

【C语言】带你彻底理解指针(1)

✨✨✨✨如果文章对你有帮助记得点赞收藏关注哦&#xff01;&#xff01;✨✨✨✨ 文章目录指针的介绍&#xff1a;一、简单指针&#x1f308;1.1 指针的定义与使用1.2 指针与数组二、指针数组✨三、数组指针&#x1f31e;3.1 数组指针的定义3.2 ”数组名“与”&数组名“3.…

达梦数据库DSC集群部署

一、概述 1.1 DSC 集群架构 1.2 架构说明 1、DMDSC 集群是一个多实例、单数据库的系统。 多个数据库实例可以同时访问、修改同一个数据库的数据。 2、数据文件、控制文件在集群系统中只有一份,不论有几个节点,这些节点都平等地使用这些文件, 这些文件保存在共享存储上。 3…

肠道核心菌属——双歧杆菌属,了解并拥有它

双歧杆菌 双歧杆菌属&#xff08;Bifidobacterium&#xff09;是放线菌门严格厌氧的革兰氏阳性多形性杆状细菌。末端常常分叉&#xff0c;故名双歧杆菌。是人和动物肠道的重要核心菌群和有益生理菌群&#xff0c;也是母乳喂养婴儿中发现的第二大菌。 肥胖、糖尿病和过敏等各种疾…

高德地图基础教程超详细版

在当前社会&#xff0c;对于地图的使用是很必须的&#xff0c;所以对于程序员来说也是需要掌握的技能&#xff0c;目前主流的又百度地图和高德地图&#xff0c;但是我建议使用高德地图&#xff0c;因为百度地图的API着实不好用吖&#xff0c;不好理解&#xff0c;对于开发人员来…

浏览器输入www.baidu.com后执行的全部过程

日升时奋斗&#xff0c;日落时自省 <1>URL输入 URL称为 : 统一资源定位符,用于定位互联网上的资源,也就是平常提起的"网址" 地址栏输入网址之后按下回车,浏览器会对输入的信息进行评判 (1)检查输入的内容是否是是一个合法的网址连接(非法地址不行) (2)合法的…

【spring教程】3.IoC容器概述

IoC 是 Inversion of Control 的简写&#xff0c;译为“控制反转”&#xff0c;它不是一门技术&#xff0c;而是一种设计思想&#xff0c;是一个重要的面向对象编程法则&#xff0c;能够指导我们如何设计出松耦合、更优良的程序。 Spring 通过 IoC 容器来管理所有 Java 对象的实…

【数据结构】二叉树的原理及实现

1.什么是数&#xff1f; 树这种数据结构在计算机中是非常重要的&#xff0c;是一种非线性数据结构。一些数据库的底层与快速索引都离不开树这种数据结构。树是有很多节点组成的具有一定层次关系的集合。最上面的可以看成是树的头&#xff0c;下面的很多节点就在这个头的基础上…

前端如何实现局部滚动效果?

一、基础版局部滚动 重点在于给需要滚动的区域加上 overflow: auto; 属性 废话不多说&#xff0c;先上基础版的局部滚动代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head> <meta charset"UTF-8"> <meta http-equiv…

智能优化算法——遗传算法(GA)(纯理论,不包含代码)

今天接着PSO&#xff0c;记录一下遗传算法的实现原理。&#xff08;若有错误&#xff0c;请大佬帮忙指正&#xff01;&#xff09;&#xff08;同样&#xff0c;主要参考b站视频学习加入自己的一些理解&#xff0c;如果想要看视频学习&#xff0c;可以直接移步最后参考链接&…

深度学习引言

动手学深度学习pytorch版-笔记原文链接日常生活中的机器学习机器学习中的关键组件数据模型目标函数优化算法各种机器学习问题监督学习回归分类标记问题搜索推荐系统序列学习无监督学习与环境互动强化学习特点小结原文链接 动手学深度学习pytorch中文版 日常生活中的机器学习 …