本篇大概讲述了项目创建,创建登陆页面,首页轮播图和列表,个人中心这四块功能,后续会陆续补充项目创建时的优化和总结
本系列UI框架采用uView来实现,最新的到2.X版本了,本系列暂用1.X为例,比较好上手
uView官网地址:https://v1.uviewui.com/
(1)导入脚手架
首先下载uView的“脚手架空白工程”,下载地址:https://v1.uviewui.com/components/resource.html,
并将文件导入到我们项目中,形成的项目文档结构如下图所示:
点击顶部菜单“运行”-》“运行到浏览器”-》Chrome,显示效果如下:
uView为我们生成了Tabbar,"首页"和"我"对应的vue页面
每个vue页面大致由三部分组成:
template: 页面结构
script: 用于业务逻辑 ,data(){}用于初始化数据,,methods对应函数
style: 页面样式
<template>
<view>
</view>
</template>
<script>
export default {
data() {
return {
}
},
methods: {
}
}
</script>
<style>
</style>
(2)uniapp常用命令和组件
在正式开始开发项目之前,首先了解下uniapp的常用命令
v-bind:使用data中定义的变量或者使用表达式 v-bind:class="msg"
v-on:可以简写成@ 绑定事件,.stop可以防止实践穿透
v-model:双向绑定 v-model="msg" 在表单中使用非常方便,直接获取表单数据
v-if,v-else-if: 条件判断
v-show:是否显示
v-if和v-show的比较,v-if能决定某个元素或区块是否挂载,一般v-if比较常用
v-for:列表渲染
uniapp基础组件:https://uniapp.dcloud.io/component/README
(3)登陆功能
首先在“pages”下创建目录“login”,在该目录下创建页面“index.vue”,代码如下:
1 <template>
2 <view class="wrap">
3 <view class="top"></view>
4 <view class="content">
5 <view class="title u-text-center">欢迎登录</view>
6 <input class="u-border-bottom u-margin-20" type="text" v-model="username" placeholder="请输入账号" />
7 <input class="u-border-bottom u-margin-20" type="password" v-model="password" placeholder="请输入密码" />
8 <button @tap="submit" :style="[inputStyle]" class="getCaptcha">登陆</button>
9 </view>
10
11 </view>
12 </template>
13
14 <script>
15 export default {
16 data() {
17 return {
18 username: '',
19 password: ''
20 }
21 },
22 computed: {
23 inputStyle() {
24 let style = {};
25 if (this.username && this.password) {
26 style.color = "#fff";
27 style.backgroundColor = this.$u.color['warning'];
28 }
29 return style;
30 }
31 },
32 methods: {
33 submit() {
34
35 uni.setStorageSync('username', this.username);
36 var localStorageUser = uni.getStorageSync('username');
37 this.$u.toast(localStorageUser + ',登陆成功');
38 uni.reLaunch({
39 url:'/pages/index/index'
40 })
41 }
42 }
43 };
44 </script>
45
46 <style lang="scss" scoped>
47 .wrap {
48 font-size: 28rpx;
49
50 .content {
51 width: 600rpx;
52 margin: 80rpx auto 0;
53
54 .title {
55 font-size: 60rpx;
56 font-weight: 500;
57 margin-bottom: 100rpx;
58 }
59
60 input {
61 text-align: left;
62 margin-bottom: 10rpx;
63 padding-bottom: 6rpx;
64 }
65
66 .tips {
67 color: $u-type-info;
68 margin-bottom: 60rpx;
69 margin-top: 8rpx;
70 }
71
72 .getCaptcha {
73 background-color: rgb(253, 243, 208);
74 color: $u-tips-color;
75 border: none;
76 font-size: 30rpx;
77 padding: 12rpx 0;
78
79 &::after {
80 border: none;
81 }
82 }
83 }
84 }
85 </style>
效果如下:
其中,按钮绑定提交事件“submit”,v-model双向绑定用户名密码,通过localStorage本地存储用户信息,跳转至首页。实际开发中,用户名信息应设为动态获取,后续将通过Vuex进行优化
(4)创建首页
首页的布局我们以轮播图和信息列表为例,效果图如下
A.首先是轮播图,使用uView的Swiper插件
<view class="wrap"> <u-swiper :list="list"></u-swiper> </view>
list数据绑定
data() {
return {
list: [{
image: 'https://cdn.uviewui.com/uview/swiper/1.jpg',
title: '昨夜星辰昨夜风,画楼西畔桂堂东'
},
{
image: 'https://cdn.uviewui.com/uview/swiper/2.jpg',
title: '身无彩凤双飞翼,心有灵犀一点通'
},
{
image: 'https://cdn.uviewui.com/uview/swiper/3.jpg',
title: '谁念西风独自凉,萧萧黄叶闭疏窗,沉思往事立残阳'
}
],
}
},
B.列表也很简单,主要是样式和布局,代码如下,用for循环遍历十次,即十条信息
1 <view class="u-margin-10 info" v-for="count in 10">
2 <navigator url="/pages/news/newsdetails/newsdetails" hover-class="navigator-hover">
3 <u-row gutter="16">
4 <u-col span="3">
5 <view>
6 <u-image width="150rpx" height="150rpx" src="/static/test/1.jpg" class="u-flex-nowrap">
7 </u-image>
8 </view>
9 </u-col>
10 <u-col span="9">
11 <view class="info_title u-line-1 u-text-left u-col-top">2021世界制造业大会,重磅开幕!</view>
12 <view class="info_content u-line-2 u-text-left u-col-top">
13 全球中小企业联盟全球主席克里斯蒂安·武尔夫,国务院发展研究中心党组书记马建堂,工业和信息化部党组成员、副部长辛国斌,上海合作组织秘书长弗拉基米尔·诺罗夫,韩国驻华大使张夏成,上海市人民政府副市长张为,海尔集团创始人、董事局名誉主席张瑞敏将发表致辞或视频致辞
14 </view>
15 <view class="info_date u-text-right u-col-top">2021-11-23</view>
16 </u-col>
17 </u-row>
18 </navigator>
19 </view>
样式文件大致如下:
1 .info {
2 background-color: $u-bg-color;
3 }
4 .info-img {
5 width: 50rpx;
6 height: 50rpx;
7 }
8
9 .info_title {
10 font-weight: 700;
11 font-size: 20rpx;
12 }
13
14 .info_content {
15 font-size: 20rpx;
16 text-indent: 2em;
17 }
18
19 .info_date {
20 font-size: 20rpx;
21 color: $u-main-color;
22 }
本篇的列表会在下文继续优化,绑定动数据,下拉加载更多,数据分页,并对列表进行组件化,以及父子组件之间的值传递
(5)个人中心
个人中心比较简单,点击退出回到登陆页面,账号就是登陆账号,从本地缓存中读取
主要代码如下:
1 <view class="u-flex user-box u-p-t-30 u-p-l-30 u-p-r-20 u-p-b-30">
2 <view class="u-m-r-10">
3 <u-avatar :src="pic" size="140"></u-avatar>
4 </view>
5 <view class="u-flex-1">
6 <view class="u-font-18 u-p-b-20">账号:{{username}}</view>
7 <view class="u-font-14 u-tips-color">微信号:ywk</view>
8 </view>
9 </view>
10
11 <view class="u-m-t-20">
12 <u-cell-group>
13 <u-cell-item icon="star" title="个人信息"></u-cell-item>
14 </u-cell-group>
15 </view>
16
17 <view class="u-m-t-20">
18 <u-cell-group>
19 <u-cell-item icon="reload" title="退出" @click="logout"></u-cell-item>
20 </u-cell-group>
21 </view>
总结:通过uView导入空白脚手架后,通过uniapp常用命令和组件,搭建了一个基础的移动App项目。
下一期将对Api网络请求进行优化和封装,完善首页列表的功能。
以上,仅用于学习和总结!