利用uniapp创建移动端项目

news2024/12/28 3:56:26

目录

申请微信开发者账号

一、特殊声明

二、申请微信开发者账号

创建小程序项目

一、引言

二、创建小程序工程

三、uni-app框架简介

初识uniapp项目

一、uni-app工程目录结构

二、创建练习页面

创建登录页面

一、拷贝所有素材文件

二、创建登陆页面

 创建注册页面

一、创建注册页面

二、跳转到注册页面

注册新用户的业务要点说明

一、激活码有什么用途?

二、激活码的过期时间

三、新员工帐户与微信绑定

四、如何获取微信账号的OpenId字符串?

 获取临时授权和微信基本信息

一、获取临时授权字符串

uni.login(OBJECT)

二、获取微信基本信息

uni.getUserInfo(Object)


申请微信开发者账号

        虽然开发微信小程序可以使用工具提供的测试号,但是测试号提供的功能极为有限,而且使用测试号开发的微信小程序不能上架发布。因此说我们想要开发一个可以上架的微信小程序,首先必须要申请微信开发者账号。大家尽可放心,个人申请和使用微信开发者账号是免费的。如果你要开发的是商用小程序,那么就需要以企业身份申请微信开发者账号,而且还要缴纳认证费用。

一、特殊声明

        Emos在线办公小程序,内部包含微信支付和在线视频会议功能,这两项业务,微信平台不对个人小程序开放。所以等到同学们开发到这两个业务模块的时候,我会借给你企业小程序资质(仅供开发,不能上架发布),你把小程序项目中的配置文件修改一下,换上我提供的AppID就可以了。

        当然了,如果你想上架发布小程序,可以自己注册个人主体的小程序开发者账号,然后把小程序中的在线会议和支付功能去掉,就可以上架发布了。

二、申请微信开发者账号

        用浏览器访问 微信公众平台,然后点击页面右上角的 立即注册 链接。 

        帐户类型选择 小程序 ,然后填写好注册信息,然后微信平台会给你发送一封电子邮件。你需要点击电子邮件中的激活小程序账号的链接,然后在跳转的页面中,个人详细信息,这样才算是把个人主体的微信小程序开发者账号给注册下来。三、获取AppID和密钥

        开发微信小程序必须要用到AppID和密钥,这两个东西可以在微信开发者平台上面获得。刚才大家已经成功注册了开发者账号,那么就处在登陆的状态,不用重新登录微信开发者平台。 

        在网页中找到 开发 栏目,然后选择 开发设置 选项卡,在面板中你就能看到自己的小程序对应的 AppID 和 密钥 了。如果是刚注册下来的账号,密钥还没有生成,你要手动点击页面上的按钮,生成密钥字符串。如果已经生成过密钥字符串,那么默认情况,页面会隐藏密钥字符串,你只能点击重置按钮,生成新的密钥字符串了。所以强烈建议大家,获取了密钥字符串之后,最好能用文件把密钥字符串保存下来。

创建小程序项目

一、引言

第二章的时候,我们已经把后端Java项目搭建出来了。为了能让大家对Emos项目开发有更直观的感受,接下来我们就从小程序这一端开始做起。我们看到小程序的页面设计,自然就知道需要向后端Java项目发出什么请求,提交什么数据,以及后端系统要查询哪些表的记录才能满足客户端的需求。接下来咱们就把小程序项目给创建一下。

二、创建小程序工程

        1. 在HBuilderX上面,创建emos-wx项目

        2. 在manifest.json文件中填写你自己注册下来小程序AppID 

        3. 启动微信开发者工具,并且扫码登陆 

        4. 选择运行微信小程序

三、uni-app框架简介

        uni-app 是一个基于VUE语法的跨平台移动端框架,会VUE的人,半天时间就能上手掌握 uni-app 框架。从项目结构,到页面语法,与前端的VUE工程几乎相同。 

        uni-app 框架最让人着迷的地方在于,借助于 HBuilderX 工具,我们可以把 uni-app 项目,编译成各种类型的移动端工程。比如说我们可以把 uni-app 项目编译成 微信小程序 、 支付宝小程序 、 QQ小程序 、 今日头条小程序 、 安卓APP 、 iOS APP 、 H5 App 、 H5网站 等。仅凭这一点,就大大节省了开发团队的人力成本、时间成本和资金成本。

初识uniapp项目

一、uni-app工程目录结构

uni-app 项目创建出来之后,目录结构如下: 

序号            结构                      用途 

1                  pages目录           存放页面文件

2                  static目录             存放静态文件(图片)

3                 App.vue文件          所有小程序页面都被引用到该文件运行

4                 main.js文件           项目入口文件,用来初始化VUE对象,定义全局组件等

5                 manifest.json文件 工程配置文件,声明应用的名称、图标、权限等

6                 pages.json文件      页面注册文件,配置页面路径、窗口样式、标题文字等

7                  uni.scss文件          全局样式文件

二、创建练习页面

1. 在pages目录上右击,新建页面,名称demo。

2. 在pages.json文件中,把demo页面设置为第一个页面

"pages": [ 
    { 
        "path": "pages/demo/demo", 
        "style": { 
            "navigationBarTitleText": "", 
            "enablePullDownRefresh": false
        } 
    },
    {
        "path": "pages/index/index",
        "style": {
            "navigationBarTitleText": "uni-app"
        }
    }
] 

3. 编写demo.vue文件

<template>
    <view>
        <view>{{username}}</view>
        <view v-for="one in tel">{{one}}</view>
        <view v-if="age>=18">
        <button @tap="signUp">我要报名</button>
    </view>
    <view>
        <input type="text" v-model="address" placeholder="输入地址" />
    </view>
        <view>输入的内容:{{address}}</view>
    </view>
</template>
<script>
export default {
    data() {
        return {
            username: "Scott",
            tel: [13312345678, 15912345678],
            age: 18,
            address: ""
        };
    },
    methods:{
        signUp: function() {
            uni.showToast({
                title: "点击了报名按钮"
            })
        }
    }
}
</script>
<style>
</style>

4. 运行项目之前,先设置小程序调试基础库为最新 

        因为低版本的调试基础库对uni-app支持的不够好,所以我们要先把 详情 〉本地设置 〉调试基础库 的版本设置为最新,然后再运行小程序项目,这样才没有问题。

创建登录页面

        这节课我们要设计的Emos系统登录页面如下,我觉得这个登陆界面设计的还是挺漂亮的。其实开发这么一个登陆页面并不困难,用到的标签和样式也不多,那么这节课咱们就一起来完成这个登陆页面吧。当然了,我们只是先把静态的登陆页面给设计出来,下节课我们往里面添加各种JS代码。

一、拷贝所有素材文件

        各位同学可以资料中,找到微信小程序项目,然后把里面的 static文件夹 拷贝到当前小程序项目中,也就算是导入了开发小程序用到的各种静态资源。

二、创建登陆页面

1. 在小程序中创建 login.vue 文件,然后把这个文件的注册顺序设置成第一位。 

2. 创建 login.less 文件,然后引用到登陆页面中

<style lang="less">
    @import url('login.less');
</style>

3. 创建 style.less 文件作为全局样式文件

@font-color: #333;
@desc-color: #999;
@background-color: #3474FF;
@background-color-active: #0052FF;

4. 编写 login.vue 文件

<template>
    <view>
        <image src="../../static/logo-1.png" mode="widthFix" class="logo"></image>
        <view class="logo-title">EMOS企业在线办公系统</view>
        <view class="logo-subtitle">Ver 2050.2</view>
        <button class="login-btn" open-type="getUserInfo" @tap="login()">登陆系统</button>
        <view class="register-container">
            没有账号?
            <text class="register" @tap="toRegister()">立即注册</text>
        </view>
    </view>
</template>
<script>
export default {
    data() {
        return {};
    },
    methods: {
    }
};
</script>
<style lang="less">
    @import url('login.less');
</style>

5. 编写 login.less 文件

@import url("../../style.less");
.logo{
    width: 70%;
    display: block;
    margin-left: auto;
    margin-right: auto;
    margin-top: 30%;
}
.logo-title{
    font-size: 48rpx;
    font-weight: bold;
    text-align: center;
    margin-top: 8%;
    color: @font-color;
}
.logo-subtitle{
    font-size: 34rpx;
    text-align: center;
    margin-top: 20rpx;
    color: @font-color;
}
.login-btn{
    width: 60%;
    position: absolute;
    bottom: 20%;
    left: 20%;
    box-sizing: border-box;
    background-color: @background-color;
    color: #FFF;
}
.login-btn:active{
    background-color: @background-color-active;
}
.register-container{
    position: absolute;
    bottom: 50rpx;
    width: 100%;
    text-align: center;
    font-size: 30rpx;
    color: @font-color;
    .register{
        color: @background-color;
    }
}

 创建注册页面

        上节课我们创建了登陆页面,但是登陆功能是针对老用户的,如果是新用户的话,需要走注册流程,所以这节课我们先设计好注册页面,然后在登陆页面上,添加JS代码,就可以跳转到注册页面了。

一、创建注册页面

1. 在小程序项目中创建 register.vue 文件 

2. 创建 register.less 文件,然后引用到页面 

3. 编写注册页面代码

<template>
    <view>
        <image src="../../static/logo-2.png" mode="widthFix" class="logo"></image>
        <view class="register-container">
            <input placeholder="输入你的邀请码" class="register-code" maxlength="6" v-model="registerCode" />
            <view class="register-desc">管理员创建员工证账号之后,你可以从你的个人邮箱中获得注册邀请码</view>
            <button class="register-btn" open-type="getUserInfo" @tap="register()">执行注册</button>
        </view>
    </view>
</template>
<script>
export default {
    data() {
        return {
            registerCode: null
        };
    },
    methods: {
    }
};
</script>
<style lang="less">
    @import url('register.less');
</style>

4. 编写页面样式

@import url("../../style.less");
.logo{
    width: 70%;
    display: block;
    margin-left: auto;
    margin-right: auto;
    margin-top: 80rpx;
}
.register-container{
    width: 70%;
    margin-top: 150rpx;
    margin-left: auto;
    margin-right: auto;
    .register-code{
        border: solid 1rpx #e0e0e0;
        font-size: 34rpx;
        color: @font-color;
        height: 80rpx;
        padding: 0 20rpx;
        text-align: center;
        margin-bottom: 30rpx;
        background-color: #f5f5f5;
        border-radius: 10rpx;
    }
    .register-desc{
        color: @desc-color;
        font-size: 28rpx;
        line-height: 1.5;
        margin-bottom: 80rpx;
    }
    .register-btn{
        background-color: @background-color;
        color: #fff;
    }
}

二、跳转到注册页面

我们回到登陆页面,编写JS代码,实现从登陆页面跳转到注册页面。 

toRegister: function() { 
    uni.navigateTo({
        url: '../register/register'
    });
}

注册新用户的业务要点说明

        上节课我们设计好了注册页面的内容,这节课我们编写JS代码,获取到用户的注册信息,后续的小节,我们会把注册信息提交给后端Java项目,完成新用户注册。

一、激活码有什么用途?

        首先大家要知道Emos系统并不是完全对外开放的在线办公系统,只有本公司内部人员才可以使用这套系统,所以Emos系统并不完全对外开放注册。 

        当管理者在Emos系统中创建了新员工记录,然后Emos系统会自动向新员工的邮箱发出Email邮件,邮件中就包含了激活码。当新员工打开Emos小程序之后,在注册页面填写上激活码,于是用户的微信账号就自动跟Emos系统绑定了。以后登录Emos系统的时候,只需要在微信上确认一下,就可以完成登陆。 

        我设计的Emos系统包含一个内置的 超级管理员账号 ,这个账号的激活码是固定的(默认000000 )。公司部署好Emos系统之后,管理者在Emos小程序注册页面填写这个固定的激活码,然后就可以让自己的微信账号和超级管理员账号绑定在一起。Emos系统中的超级管理员只有一个,也就是说只能绑定一个微信账号。

二、激活码的过期时间

        激活码是有过期时间的,它的过期时间就是Redis的过期时间。管理者在Emos系统上面创建新员工帐户之后,Emos系统会把激活码缓存到Redis上面,过期的时候Redis会自动删除缓存的激活码。

三、新员工帐户与微信绑定

        如果每个员工的记录跟微信帐户绑定的话,那么每名员工登陆的时候,直接在微信上确认就可以登录Emos系统了。 

        管理者在创建新员工记录的时候,并不知道新员工的微信账号,所以没办法完成绑定,需要新员工自己完成绑定。于是新员工在Emos小程序注册页面,填写激活码之后,Emos小程序获取新员工的微信账号信息,提交给Emos后台系统,后端系统把微信账号与新员工账号关联在一起,然后保存到MySQL数据库。 

        其实把微信账号与小程序关联在一起很简单,就是把微信基本信息(昵称、头像)和 OpenId ,存储到员工记录上面。因为每个微信账号的 OpenId 在当前的小程序上面都是 唯一的 ,只要MySQL记录下每名员工微信账号的 OpenId ,那么就实现了员工记录与微信账号的绑定。 

        员工登陆Emos小程序的时候,后端系统会拿着这个微信帐户的 OpenId 与数据库中的 OpenId 比对。如果用户表不存在这个 OpenId ,说明该微信帐户没有绑定员工账号,所以Emos拒绝用户登陆。如果用户表存在这个 OpenId ,那么就判定用户登陆成功。

四、如何获取微信账号的OpenId字符串?

        首先我们可以从微信APP上面获得用户临时授权字符串( Code ),然后把这个字符串传递给后端Java系统,让Java系统拿着 AppId 、 密钥 和 Code ,提交给微信平台换取 OpenId 。

OpenId大概是 用户微信id + 商户小程序appid + secret 加密形成。

String url = "https://api.weixin.qq.com/sns/jscode2session"; 
HashMap map = new HashMap();
map.put("appid", appId);
map.put("secret", appSecret);
map.put("js_code", code);
map.put("grant_type", "authorization_code");
String response = HttpUtil.post(url, map);
JSONObject json = JSONUtil.parseObj(response);
String openId = json.getStr("openid");

 获取临时授权和微信基本信息

        上个小节说到了,小程序注册新用户的时候,需要把微信临时授权字符串和微信基本信息提交给后端的Java项目,那么这节课咱们就先来获取临时授权字符串和微信基本信息,这部分内容很简单。

一、获取临时授权字符串

        在 uni-app 框架中,包含了原生微信小程序的 wx 对象,我们可以像写原生微信小程序代码一样,通过 wx 对象调用各种方法。但是我更推荐大家使用 uni 对象,因为这个对象是跨平台的,我们调用uni对象中的方法,HBuilderX在编译代码的时候,会把 uni 对象翻译成目标平台的对象,比如微信平台就是 wx 对象,支付宝平台就是 my 对象,所以 uni 对象的跨平台性更好,而且调用更加简单,强烈推荐大家使用。 

        使用uni对象可以轻松获取微信小程序的 临时授权字符串 ,这个 临时授权字符串 是有时间限定的,默认有效期是 5分钟 。如果过期,就无法换取 OpenId 了。

uni.login(OBJECT)

// 示例
uni.login({
    provider: 'weixin',
    success: function (resp) {
        console.log(resp.code);
    }
});

二、获取微信基本信息

uni.getUserInfo(Object)

        注意: 微信小程序端,在用户未授权过的情况下调用此接口,不会出现授权弹窗,会直接进入fail 回调(详见《微信小程序公告》)。在用户已授权的情况下调用此接口,可成功获取用户信息。

// 示例
uni.login({
    provider: 'weixin',
    success: function (resp) {
        let code = resp.code;
        // 获取用户信息
        uni.getUserInfo({
            provider: 'weixin',
            success: function (resp) {
                let nickName = resp.userInfo.nickName;
                let avatarUrl = resp.userInfo.avatarUrl;
            }
        });
    }
});

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

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

相关文章

【机器学习与遥感】sklearn与rasterio实现遥感影像监督分类

在学习遥感的过程中&#xff0c;我们都了解到了监督分类与非监督分类&#xff0c;二者是遥感解译的基础。之前更多的是使用Erdas与ENVI来进行这两种分类。这里使用python语言&#xff0c;基于机器学习库sklearn与遥感影像处理库rasterio&#xff0c;使用kmeans动态聚类方法实现…

实施计划:项目成功执行的关键

为了增加成功的机会&#xff0c;特别是当涉及到大型或复杂的项目时&#xff0c;团队可能需要关于项目执行过程的额外指导。实施计划可以用于这一目的。 简而言之&#xff0c;项目实施计划是一份文件&#xff0c;作为项目如何执行的路线图。它规定了项目完成过程中的步骤&#…

<C++> C++11右值引用

C11右值引用 1.左值引用和右值引用 传统的C语法中就有引用的语法&#xff0c;而C11中新增了的右值引用语法特性&#xff0c;所以从现在开始我们之前学习的引用就叫做左值引用。无论左值引用还是右值引用&#xff0c;都是给对象取别名。 什么是左值&#xff1f;什么是左值引用…

sonar-scanner-Windows本地Python代码检查使用方法【免费下载sonar-scanner验证有效】

背景介绍&#xff1a; sonar作为开源的代码扫描工具&#xff0c;sonar-scanner是windows扫描器。SonarQube是一个开源的代码质量管理平台&#xff0c;可以将 sonar-scanner扫描的结果进行分析。 公司有搭建SonarQube质量管理平台&#xff0c;支持本地扫描和gitlab集成扫描。现…

locust学习教程(7) - docker运行单个locust脚本

目录 1、安装 docker 2、下载镜像 3、运行脚本 4、开始压测 &#x1f381;更多干货 1、安装 docker widnows安装docker客户端blog.csdn.net/weixin_4545… 实施步骤&#xff1a; 第一步、启动docker客户端 2、下载镜像 cmd窗口下载locust镜像文件&#xff1a;docker pul…

隐私链或成监管和虚拟货币犯罪打击新挑战?

匿名币、混币器等是大家在当前案件侦办中常遇到的资金追踪“拦路虎”&#xff0c;而在区块链中还有一些隐私保护方案&#xff08;隐藏交易相关信息&#xff09;&#xff0c;可能大家较少涉猎&#xff0c;在当前的区块链相关案件中也还没有明显的表现&#xff0c;我们也希望通过…

深度解析:分布式事务解决方案大盘点,助你轻松应对复杂业务场景

随着互联网的发展&#xff0c;分布式系统已经成为了现代软件开发的主流。在分布式系统中&#xff0c;多个节点之间需要协同工作&#xff0c;以完成一些复杂的任务。然而&#xff0c;由于节点之间的网络延迟、故障等问题&#xff0c;这些节点之间可能会出现数据不一致的情况&…

华为OD机试真题 JavaScript 实现【最多获得的短信条数】【2023Q1 100分】,附详细解题思路

一、题目描述 某云短信厂商&#xff0c;为庆祝国庆&#xff0c;推出充值优惠活动。现在给出客户预算&#xff0c;和优惠售价序列&#xff0c;求最多可获得的短信总条数。 二、输入描述 第一行客户预算M&#xff0c;其中 0 ≤ M ≤ 10^6第二行给出售价表&#xff0c; P1, P2,…

一切美好如夏而至,中国人民大学与加拿大女王大学金融硕士项目陪你逐梦硕士

流光半夏&#xff0c;美好日长。愿所有春天里的酝酿&#xff0c;都在夏天热烈绽放。你春天酝酿的读研梦有实现吗&#xff1f;在这个最长的白昼&#xff0c;让我们与中国人民大学与加拿大女王大学金融硕士项目邂逅&#xff0c;一起在盛夏里追寻诗与远方。 都说有梦想&#xff0…

【07】STM32·HAL库开发-新建寄存器版本MDK工程 |下载STM32Cube固件包 | 新建MDK工程步骤

目录 1.新建工程前的准备工作&#xff08;了解&#xff09;1.1下载相关STM32Cube 官方固件包&#xff08;F1/F4/F7/H7) 2.新建寄存器版本MDK工程步骤&#xff08;熟悉&#xff09;2.1新建工程文件夹2.1.1Drivers文件夹2.1.2Middlewares文件夹2.1.3Output文件夹2.1.4Projects文件…

零基础入门网络安全,收藏这篇不迷茫【2022 最新】

前言 最近收到不少关注朋友的私信和留言&#xff0c;大多数都是零基础小友入门网络安全&#xff0c;需要相关资源学习。其实看过的铁粉都知道&#xff0c;之前的文里是有过推荐过的。新来的小友可能不太清楚&#xff0c;这里就系统地叙述一遍。 01.简单了解一下网络安全 说白…

ASEMI代理光宝光耦LTV-61L的工作原理与应用探析

编辑-Z 本文将对光耦LTV-61L进行深入的探讨&#xff0c;主要从其工作原理、应用领域、使用注意事项以及市场前景四个方面进行详细的阐述。光耦LTV-61L是一种常用的光电器件&#xff0c;其工作原理简单&#xff0c;应用领域广泛&#xff0c;但在使用过程中也需要注意一些问题。…

1分钟!免费将AI图像创作能力接入办公系统

随着人工智能技术的日新月异&#xff0c;各行各业都在尝试将AI技术融入到自己的生产和服务中以提升效率和用户体验&#xff0c;绘画领域也在迎来一轮新的生产方式革新。在数字绘画领域&#xff0c;AI绘图软件的出现&#xff0c;为数字绘画领域注入了新的活力。 但我们在使用AI绘…

【正点原子STM32连载】第三十八章 CAN通讯实验 摘自【正点原子】STM32F103 战舰开发指南V1.2

1&#xff09;实验平台&#xff1a;正点原子stm32f103战舰开发板V4 2&#xff09;平台购买地址&#xff1a;https://detail.tmall.com/item.htm?id609294757420 3&#xff09;全套实验源码手册视频下载地址&#xff1a; http://www.openedv.com/thread-340252-1-1.html# 第三…

VXLAN 主机VTEP(OVN)

EVE环境模拟搭建一个基于主机VTEP的VXLAN数据中心网络。 实验里vtep是在linux主机上&#xff0c;同时linux主机还得有路由功能使VTEP的端点IP可达&#xff0c;所以两台linux服务器需要安装FRR。 数据转发平面使用VXLAN封装&#xff1b;在控制平面我打算选择使用EVPN和OVN两种不…

Golang每日一练(leetDay0101) 最长递增子序列I\II\个数

目录 300. 最长递增子序列 Longest Increasing Subsequence &#x1f31f;&#x1f31f; 2407. 最长递增子序列 II Longest Increasing Subsequence ii &#x1f31f;&#x1f31f;&#x1f31f; 673. 最长递增子序列的个数 Number of Longest Increasing Subsequence &a…

YOLOv5/v7 添加注意力机制,30多种模块分析⑥,S2-MLPv2模块,NAM模块

目录 一、注意力机制介绍1、什么是注意力机制&#xff1f;2、注意力机制的分类3、注意力机制的核心 二、S2-MLPv2模块1、 S2-MLPv2模块的原理2、实验结果3、应用示例 三、NAM模块1、NAM 的原理2、实验结果3、应用示例 大家好&#xff0c;我是哪吒。 &#x1f3c6;本文收录于&a…

【Duilib】资源打包入EXE

环境 VS版本&#xff1a;VS2013 概述 资源打包成ZIP&#xff0c;ZIP文件放置EXE内部。 步骤 1、按上一篇建好工程。 2、RC文件添加ZIP资源。 这一步比较复杂&#xff0c;工程 添加资源&#xff0c;弹窗如下右侧对话框后&#xff0c;按①②③④步骤&#xff0c;找到theme.z…

Springboot项目使用原生Websocket

目录 1.启用Websocket功能2.封装操作websocket session的工具3.保存websocket session的接口4.保存websocket session的类5.定义websocket 端点6.创建定时任务 ping websocket 客户端 1.启用Websocket功能 package com.xxx.robot.config;import org.springframework.context.a…

机器学习实践(1.2)XGBoost回归任务

前言 XGBoost属于Boosting集成学习模型&#xff0c;由华盛顿大学陈天齐博士提出&#xff0c;因在机器学习挑战赛中大放异彩而被业界所熟知。相比越来越流行的深度神经网络&#xff0c;XGBoost能更好的处理表格数据&#xff0c;并具有更强的可解释性&#xff0c;还具有易于调参…