| |
|
开发:
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 |
目录 内容综述本文将会详细阐述微信小程序前端项目的正式搭建过程。 项目架构根据之前的研究,核心功能画板已经实现,现在是要将画板整理到正式的项目中。由于我们采用迭代增量开发的过程,我目前确定的项目功能主要包含三部分:登录、画板、骨刻文相关介绍。因此,骨刻文项目会采用一个单页面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 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |