第二章《uni-app记账小程序引导页+登录+注册篇》

前言:

  uni-app的框架结构本质上和vue有很多相似的地方,只不过为了实现多端跨平台做了部分转换处理.所以只要你会写基本的css  和vue 基本没什么问题。

这次介绍的是uni-app 的《插件市场》 作为一个后端程序员UI是最为头疼的问题,但有了uni-app的插件市场很多UI库都能从里面找到
当然这些UI库都是一些大神的开源作品,这里我选取了ColorUII这个UI库。[ColorUI-UniApp]https://github.com/weilanwl/ColorUI

博客园里uni-app实战同僚的文章讲解的非常详细,这里转载为他点赞👍

目录
博客园地址
第一章搭建uni-app 记账小程序
第二章《uni-app记账小程序导航登录注册篇》

正文
<font size=4 face="微软雅黑" >微信的调试预览和真机调试功能是需要开发者ID的,申请步骤很简单就不再赘述了</font>
微信开发工具
避免重复造轮子,直接前往插件市场找
使用引导页面资源
APP-引导页 新增定位及天气👍
1.做app的引导界面
实现原理:
(1)通过app.vue的启动函数 onLaunch 进入函数以后,使用api uni.setTabBarBadge()来控制你要率先显示的界面,也就是显示你要的引导页
(2)再通过swiper组件是实现滑动的效果
(3)本地保存是否显示引导界面的参数,用来判断首次安装或是首次加载(引导界面展示的图片可以用网络路径 https ,而控制是否显示的参数也是后台api接口提供,这样,比如你更新了或是有新的广告图片可以在服务端控制)
案例都有了实现起来就很简单了
第一步
新建 guide.vue pages文件夹->index文件夹->右键 (新建-vue文件) 页面做两件事

<template>
    <view class="content">
        <swiper class="swiper" :autoplay="autoplay" :duration="duration">
            <swiper-item>
                <view class="swiper-item">
                    <view class="swiper-item-img">
                        <image src="../../static/guide/title_01.png" mode="aspectFit"></image>
                    </view>
                    <view class="swiper-item-img">
                        <image src="../../static/guide/icon_01.png" mode="aspectFit"></image>
                    </view>
                </view>
                <view class="jump-over" @tap="launchFlag()">{{jumpover}}</view>
            </swiper-item>
        </swiper>
        <view class="uniapp-img">
            <image src="../../static/guide/uniapp4@2x.png" mode="aspectFit"></image>
        </view>
    </view>
</template>

<script>
    export default {

        data() {
            return {
                jumpover: '跳过',
                autoplay: false, //是否自动切换- 这里swiper 就相当于是轮播图
                duration: 500, //滑动时长
                loagtime: setTimeout(() => {     ///过了5秒没有点击就自动关闭
                    uni.setStorage({
                        key: 'launchFlag',
                        data: true,
                    });
                    uni.reLaunch({
                        url: '/pages/index/index'
                    });
                }, 3000),
            }
        },
        onLoad() {
             this.loagtime;
        },
        methods: {
            launchFlag: function() {
                clearTimeout(this.loagtime);
                /**
                 * 向本地存储中设置launchFlag的值,即启动标识;
                 */
                try {
                    console.log('我来设置启动的值')
                    uni.setStorage({
                        key: 'launchFlag',
                        data: true,
                    });
                    uni.reLaunch({
                        url: '/pages/index/index'
                    });
                } catch (e) {
                    //TODO handle the exception
                    console.log('报错了')
                }


            }
        }
    }
</script>
<style>
    page,
    .content {
        width: 100%;
        height: 100%;
        background-size: 100% auto;
        padding: 0;
    }

    .swiper {
        width: 100%;
        height: 80%;
        background: #FFFFFF;
    }

    .swiper-item {
        width: 100%;
        height: 100%;
        text-align: center;
        position: relative;
        display: flex;
        /* justify-content: center; */
        align-items: flex-end;
        flex-direction: column-reverse
    }

    .swiper-item-img {
        width: 100%;
        height: auto;
        margin: 0 auto;
    }

    .swiper-item-img image {
        width: 80%;
    }

    .uniapp-img {
        height: 20%;
        background: #FFFFFF;
        display: flex;
        justify-content: center;
        align-items: center;
        overflow: hidden;
    }

    .uniapp-img image {
        width: 40%;
    }

    .jump-over,
    .experience {
        position: absolute;
        height: 60upx;
        line-height: 60upx;
        padding: 0 40upx;
        border-radius: 30upx;
        font-size: 32upx;
        color: #454343;
        border: 1px solid #454343;
        z-index: 999;
    }

    .jump-over {
        right: 45upx;
        top: 125upx;
    }

    .experience {
        right: 50%;
        margin-right: -105upx;
        bottom: 0;
    }
</style>


第二步
新建 index.vue pages文件夹->index文件夹->右键 (新建-vue文件) 页面做一件事 (判断 我们是不是第一次安装或是第一次加载)

<template>
    <view class="content">
        <image class="logo" src="/static/logo.png"></image>
        <view class="out-btn" @tap="outBtn()">清除launchFlag值</view>
        <view>
            <text class="title">{{title}}</text>
        </view>
    </view>
</template>

<script>
    <template>
    <view class="content">
        <image class="logo" src="/static/logo.png"></image>
        <view class="out-btn" @tap="outBtn()">清除launchFlag值</view>
        <view>
            <text class="title">{{title}}</text>
        </view>
    </view>
</template>

<script>
    export default {
        data() {
            return {
                title: 'Hello'
            }
        },
        onLoad() {
            console.log('再次加载')
            this.loadExecution()
        },
        methods: {
            outBtn: function() {
                uni.showModal({
                    title: '清除launchFlag值',
                    content: '确定要清除launchFlag值,进行重启测试?',
                    success: function(res) {
                        if (res.confirm) {
                            console.log('用户点击确定');
                            // 清除缓存
                            uni.clearStorage();
                            // 两秒后重启
                            // #ifdef APP-PLUS
                            uni.showToast({
                                icon: 'none',
                                duration: 3000,
                                title: '清除成功2秒后重启'
                            });
                            setTimeout(function() {
                                uni.hideToast();
                                plus.runtime.restart();
                            }, 2000);
                            // #endif
                            // 两秒后跳转
                            // #ifdef H5 || MP-WEIXIN
                            uni.showToast({
                                icon: 'none',
                                duration: 3000,
                                title: '清除成功2秒后刷新'
                            });
                            setTimeout(function() {
                                uni.reLaunch({
                                    url: '/pages/index/guide'
                                });
                            }, 2000);
                            console.log('跳转到首页')
                            // #endif
                        } else if (res.cancel) {
                            console.log('用户点击取消');
                        }
                    }
                });
            },
            loadExecution: function() {
                /**
                 * 获取本地存储中launchFlag的值
                 * 若存在,说明不是首次启动,直接进入首页;
                 * 若不存在,说明是首次启动,进入引导页;
                 */
                try {
                    const value = uni.getStorageSync('launchFlag');
                    if (!value||value=='') {
                        uni.reLaunch({          //// 跳转方式不同
                            url: '/pages/index/guide'
                        });
                    }
                } catch (e) {
                    // error 
                    uni.setStorage({
                        key: 'launchFlag',
                        data: true,
                        success: function() {
                            console.log('error时存储launchFlag');
                        }
                    });
                    uni.reLaunch({
                        url: '/pages/index/index'
                    });
                }
            }
        }
    }
</script>

<style>
    .content {
        text-align: center;
        height: 400upx;
    }

    .logo {
        height: 200upx;
        width: 200upx;
        margin-top: 200upx;
    }

    .title {
        font-size: 36upx;![](https://img2018.cnblogs.com/blog/781685/201904/781685-20190411073441891-50454106.gif)

        color: #8f8f94;
    }
</style>

<font size=4 face="微软雅黑" >注意:我跳转用的 reLaunch(关闭所有页面重新打开一个界面) ,uni.navigateTo(OBJECT) 是保持当前页面,因为微信 限制 打开的最高层数10层,所以要用reLaunch 跳转才能看到测试效果,不然navigateTo跳转第10界面它就不会动了 像这个样子</font>


image

<font size=4 face="微软雅黑" >设置 ”不校验合法域名、web-view(业务域名)、TLS 版本以及 HTTPS 证书 “ 不设置会提示你http错误什么的,两种方式</font>
微信开发工具


image
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,100评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,308评论 3 388
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,718评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,275评论 1 287
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,376评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,454评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,464评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,248评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,686评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,974评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,150评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,817评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,484评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,140评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,374评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,012评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,041评论 2 351

推荐阅读更多精彩内容