IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> 创新实训——记录2 -> 正文阅读

[移动开发]创新实训——记录2

目录

内容综述

项目架构

index:主页

内容

代码实现

draw:画板

内容和实现?

my:个人中心

内容

Tabs组件的实现

组件实现

在index页面中应用

总结


内容综述

本文将会详细阐述微信小程序前端项目的正式搭建过程。

项目架构

根据之前的研究,核心功能画板已经实现,现在是要将画板整理到正式的项目中。由于我们采用迭代增量开发的过程,我目前确定的项目功能主要包含三部分:登录、画板、骨刻文相关介绍。因此,骨刻文项目会采用一个单页面TabBar,展示各个功能。

先通过微信开发者工具新建项目,然后构建以下文件结构:

其项目架构,与上一篇博客所说是一致的,大致是:components保存封装的组件;icon保存图片;pages保存各个页面;utils保存工具JavaScript函数;app.js是全局JavaScript文件;app.json是全局配置文件;app.wxss是全局样式文件;剩下两个文件都是配置文件。

通过在app.json中配置Tabbar,得到如下结果:

首页、画板、个人中心分别对应index、draw、my三个文件夹。

index:主页

内容

index目录下保存了项目展示的第一页,也就是主页。它主要完成用户的登录、骨刻文相关信息展示。经过思考,我决定,先展示一个登录页面,在用户登录完成后,将用户信息保存在app.js中,并且跳转到信息展示页面。

代码实现

首先需要在app.js中保存用户信息,以便全局都可以访问到。因此在app.js的globalData中新建:

userInfo保存用户信息对象,包括头像、微信名等;openid是微信小程序中的用户唯一身份标识。

然后,在index/index.wxml中,搭建页面结构。当用户信息为空时,将会展示一个登录页面,用户点击按钮,然后弹出对话框,确认用户是否授权登录。在这个登录页,我使用了骨刻文的背景图片。整体wxml代码如下:

index.js的data中,同样建立userInfo变量:

?

使用wx:if判断,当userInfo还未获取时,userInfo.avatarUrl为undefined,因此会显示bgImg背景图和beforeHavaUserMenu按钮区域。经过调整布局,得到如下界面:

对按钮intoGame,需要设置open-type为getUserInfo,绑定点击事件函数为getUserProfile。在index.js中实现这个函数:

使用wx.getUserProfile的API,获取用户信息。获取信息之后,再调用wx.login,获取用户的openid,并保存在全局变量中。至此,用户登录过程已经实现。

登录完成后,按照wxml中的判断逻辑,应该展示骨刻文相关信息。为此,我去访问了刘凤君老师的骨刻文网站:

??

我初步选定展示刘凤君的介绍、论文、专著等。对于这些,我仍然需要封装一个TabBar来在index页面中实现内容的切换。这里就用到了前面提到的components文件夹,我封装了Tabs组件,具体如何实现将在后面说明。借助Tabs组件,在wxml文件中搭建代码结构:

使用Tabs组件,通过4个block传入相关内容,每个分别展示相关信息。这些都是静态数据,牵涉到的逻辑不多,因此不再细说。最终得到的页面如下:

?

?

?

这样就完成了信息的展示。至此,index页面功能基本实现。

draw:画板

内容和实现?

对于画板,在上一篇博客中已经详细说明了。这里采取旧版接口,直接完全复用代码即可。直接给出结果:

对于导出图片,将会在后端搭建成功后一并写出。

my:个人中心

内容

个人中心应该展示的信息包括用户微信名、用户头像和用户参与的详细数据。但这些必须仅能在用户登录后展示,如果用户还没有登录,则应该提示用户先前往首页登录。在my.js中,同样保存了userInfo,它是来自globalData。为了保证它能够第一时间更新,我在onShow生命周期函数中更新userInfo,保证每次展示my页面时都能够获取当前的userInfo:

?

由此,搭建wxml代码:

?

userInfo将会展示用户的信息和数据;promrammer_data中显示了我们团队的人员名单(这个后期可以放到另一个地方)。因此,当用户没有登录时:

当用户在首页登录后得到:

目前这些数据都是静态的,因此没有很难的逻辑。

Tabs组件的实现

组件实现

前面说到,在index页面中使用了Tabs组件,完成了各个信息页的展示。在components目录下,新建Tabs组件:

先确定组件需要外部传来的信息,在Tabs.js中记录,主要就是信息数组:

数组的每一项应该包含id、name、isActive,是项的标识、内容、是否active。在wxml文件中搭建结构,先遍历数组:

为每个项绑定点击事件函数handleTap,传入参数index。当用户点击某一项时,组件将会通过itemChange事件把用户点击的index返回给外部,交给外部修改其isActive,以此改变其显示结果,并把修改后的数组传回组件。handleTap函数的实现如下:

关于样式,就是active类和普通类的区别,不再给出。在Tabs组件的下半部分,借助插槽,由外部传入展示的元素,根据active的不同展示相应的信息。

在index页面中应用

首先在index.js中先建立tabs数组:

在wxml页面中使用:

?

通过tabs属性传入tabs数组,并且绑定handleItemChange函数处理itemChange事件:

在函数中,遍历tabs,将用户点击的那一项的isActive修改为true,其余修改为false。然后,只传入isActive为true的那一项对应的内容即可。这些也都是静态数据,因此我直接将文字存储在了index.js中。最终实现的效果在前面已经展示了。

总结

本文实现了微信小程序前端的项目结构搭建与基本功能实现。后续,我将会完成画板的全部功能、登录信息的完全实现,以及功能的其他扩展。

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2022-04-04 12:22:54  更:2022-04-04 12:26:16 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 21:06:31-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码