今天是学习小程序的第4
天
学习内容
1. 项目搭建
1.1 新建小程序项目
填入自己的appid
1.2 搭建目录结构
目录名 | 作用 |
---|---|
styles | 存放公共样式 |
components | 存放组件 |
lib | 存放第三方库 |
utils | 自己的帮助库 |
request | 自己的接口帮助库 |
之后清理一下不要的文件和代码
app.js
中输入wx-app
自动生成一段新的默认代码
pages/index/index.js
中输入wx-page
自动生成一段新的默认代码
(确保在vscode中安装了小程序开发助手
插件)
1.3 搭建项目的页面
页面名称 | 名称 |
---|---|
首页 | index |
分类页 | category |
商品列表页 | goods_list |
商品详情页 | goods_detail |
购物车页 | cart |
收藏页 | collect |
订单页 | order |
搜索页 | search |
个人中心页 | user |
意见反馈页 | feedback |
登陆页 | login |
授权页 | auth |
结算页 | pay |
按com
+s
,成功生成
1.4 引入iconfont
复制这个在线链接
路径前补https:
全选复制
在我们的项目styles
文件夹中新建一个iconfont.wxss
文件,注意这里后缀是.wxss
粘贴刚刚复制的样式代码
将iconfont.wxss
文件在全局样式文件app.wxss
中导入,这样就能在每个页面中使用了
1.5 搭建项目tabbar结构
首先新建一个icon
文件夹,把我们准备好的图标图片拖进来
在app.json
中配置tabbar
和"pages"
同级:
这里直接打tabbar
会有自动提示,注意每一个pagePath
不一样的
要改变字体颜色和背景颜色:
selectedColor
是活跃时的字体颜色
1.6 初始化页面样式
我们要在全局样式文件app.wxss
进行一些样式初始化
还需要改变一下导航栏的背景和字体颜色:
在app.json
的window
字段中:
2.首页
2.1 自定义搜索框组件
我们这里需要自定义组件,因为多个页面都用到了搜索框
在components
文件夹中新建一个文件夹SearchInput
,右键选择新建component
,就会自动生成四个文件
声明组件:
哪个页面要用这个组件,就在哪个页面的.json
文件中声明
实现这个搜索框组件:
实际上是个超链接,点击会跳转到search
页面:
样式部分我把后缀改成.less
然后写了,安装了Easy WXLESS
插件的话会自动生成相应的.wxss
文件
点击跳转到search
页:
2.2 获取轮播图数据
pages/index/index.js
:
在data
中定义一个swiperList
空数组,准备放一些轮播图数据
在onLoad
生命周期回调中,我们发送异步请求,获取轮播图数据
控制台会报错,我们没有权限来请求这个接口
解决:
在详情-本地设置:
勾选这个
现在可以成功获取到:
这组message
就是我们想要的数据,用setData
赋值给swiperList
在AppData
中看到swiperList
有值了就是成功了
补充一个解决权限问题的方法:
将域名添加到小程序的后台中
在这里添加request
的合法域名
关于发送网络请求的更多细节,参考文档:
https://developers.weixin.qq.com/miniprogram/dev/api/network/request/wx.request.html
2.3 动态渲染轮播图
给image
设置widthFix
模式,宽度不变,高度自动变化,从而保持原图比例
图片设置width: 100%
就好,占满整个swiper
,高度不用设置会自适应
swiper
也需要设置新的高度,不然在不同的设备中:swiper
固定了150px
的高度,而图片高度是自适应,会导致图片显示不全
swiper
的高度是利用swiper
宽高比=image
宽高比计算出来的,(这个750rpx
是swiper
的宽度
这时候轮播图在不同机型也能正确显示:
自动轮播、循环轮播、显示面板指示点在swiper
标签上加上autoplay
、circular
、indicator-dots
三个属性就行
2.4 原生请求改成promise的方式
在request
文件夹中新建一个index.js
文件:
在我们原来发送异步请求的地方调用这个request
方法来发送请求:
还可以再抽一步:
2.5 分类导航
data
中定义一个catesList
空数组,定义一个getCatesList()
方法,内容基本和获取轮播图数据一模一样,只是名字改了
pages/index/index.wxml
:
pages/index/index.wxss
:
2.6 楼层
data
中定义一个floorList
空数组,定义一个getFloorList()
方法,内容基本和前面的一模一样,只是名字改了
拿到数据:
这里要用到嵌套循环,注意一下层级结构
重新设置一下item
的名字会更清晰:
布局瞎弄了一下不深究了,大概效果就是这样:
首页完