论坛项目小程序和h5登录

news/2024/7/24 5:49:53 标签: 小程序, 前端, javascript

项目中安装uview


出现npm安装uview 直接报错:

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

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

项目点击关注


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

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

使用官方内置缓存API

javascript">javascript">uni.setStorage   异步接口
uni.setStorageSync   同步接口

调试对应缓存位置

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

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

//其他属性参考文档

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


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

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

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

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

条件编译的写法:

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

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

#endif
javascript">javascript"><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 文件配置条件编译

javascript">javascript">// #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 后传到开发者服务器调用此接口完成登录流程

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

代码演示:

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

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

官网:

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

H5端登录


手机+验证码登录

使用条件编译来处理兼容

点击获取验证码

javascript">javascript">//获取验证码
            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

javascript">javascript">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.niftyadmin.cn/n/96417.html

相关文章

关于物理像素,逻辑像素,像素比

关于物理像素、逻辑像素&#xff08;css像素&#xff09;、分辨率、像素比的超详细讲解 在日常生活中&#xff0c;有这样一个问题。同样的图片为什么在不同的设备上显示的大小是不一样的。&#x1f912;带着这个问题来说明一下。 一、物理像素 设备刚生产出来就已经固定了&a…

实验室信息化管理行业方案

为适应新时代下的管理机制与应用场景&#xff0c;越来越多的检测实验室需对研发部门和实验部门进行全面的、现代化的、电子化的综合管理&#xff0c;帮助检测机构对实验室的规划与计划、项目立项与管理、项目成果、合同&#xff0c;以及基建等工作进行统一的管理&#xff0c;而…

pytorch1.2.0+python3.6

一、说明 pytorch1.2.0python3.6CUDA10.0cudnn7.4.1.5 二、步骤 在conda中创建一个新的虚拟环境 查看一下自己的所有环境 激活虚拟环境 conda activate torch1.2.0 关于cuda和cudnn 1、查看自己电脑系统是10.2版本 http://链接&#xff1a;https://pan.baidu.com/s/1v5cN6…

【Java基础 下】 027 -- 异常、File、综合案例

目录 一、异常 1、异常的分类 ①、Error ②、Exception ③、小结 2、编译时异常和运行时异常 ①、编译时异常 ②、运行时异常 ③、为什么异常要分成编译时异常和运行时异常&#xff1f; ④、小结&#xff08;运行时异常和编译时异常的区别&#xff09; 3、异常的作用 ①、查看b…

leetcode Day5(卡线复试,放弃版)

Day5 最后一个单词长度&#xff08;要求最后一个&#xff0c;可以反向计数&#xff09; int lens.length()-1; while(s.charAt(len)){len--;//最后是一个空格&#xff0c;就是无字符时 } int wordlen0;//记录字符长度 /*charAt() 方法用于返回指定索引处的字符。索引范围为从 0…

RK3568平台开发系列讲解(驱动基础篇)中断子系统框架

🚀返回专栏总目录 文章目录 一、中断硬件的组成二、软件框架三、中断常见概念沉淀、分享、成长,让自己和他人都能有所收获!😄 📢中断是指 CPU 正常运行期间,由于内外部事件或程序预先安排的事件,引起的 CPU 暂时停止正在运行的程序, 转而为该内部或外部预先安排的事…

【GlobalMapper精品教程】054:标签(标注)功能案例详解

同ArcGIS标注一样,globalmapper提供了动态标注的功能,称为标签,本文详解标签的使用方法。 文章目录 一、标签配置二、创建标签图层三、标签图层选项1. 标签字段2. 标签样式3. 标签格式4. 标签语言5. 标签优先级一、标签配置 在配置页面的【矢量显示】→标签选项卡下,有标签…

SkyWalking 将方法加入追踪链路(@Trace)

SkyWalking8 自定义链路追踪@Trace 自定义链路,需要依赖skywalking官方提供的apm-toolkit-trace包.在pom.xml的dependencies中添加如下依赖: <dependency><groupId>org.apache.skywalking</groupId><artifactId>apm-toolkit-trace</artifactId>&…