1.微信小程序—全局配置
全局配置,主要体现在app.js和app.json。app.js中主要使用的事件为onlaunch,它用于监听小程序初始化后触发。当打开小程序,会进行获取商城的名称,获取用户信息,用户登录,本地存储的过程。微信提供了丰富的API,简化开发步骤,其中用的最多的是wx.request(),它类似于ajax,用于前后台的数据交互。通过调用接口wx.login() 获取临时登录凭证(code)。
每一个小程序页面也可以使用 .json 文件来对本页面的窗口表现进行配置。页面中配置项在当前页面会覆盖 app.json 的 window 中相同的配置项。文件内容为一个 JSON 对象。页面配置中只能设置 app.json 中 window 对应的配置项,以决定本页面的窗口表现,所以无需写 window 这个属性。
2.微信小程序—首页轮播图数据的请求及渲染
// import { request } from './../../utils/index.js'
Page({
data: {
bannerlist: []
},
onLoad: function (options) {
request('/api/pro/banner').then(data => {
console.log(data)
// 微信⼩程序修改数据的⽅式
this.setData({
bannerlist: data.data
})
})
},
})
//pages/home/home.wxml
<swiper
indicator-dots="{{true}}" autoplay="{{true}}" circular="{{true}}"
duration="{{500}}">
<block wx:for="{{bannerlist}}" wx:key="index">
<swiper-item >
<image src="{{'http://daxun.kuboy.top' + item}}"></image>
</swiper-item>
</block>
</swiper>
<prolist></prolist>
3.微信小程序—点击商品列表进入产品详情页面
3.1构建详情页
app.json
"pages": [
"pages/detail/detail"
],
3.2路由跳转
3.2.1声明式导航跳转
使⽤⼩程序 组件-导航-navigator
参考链接 navigator
逻辑:在navigator组件的url上写入要跳转的详情页地址,组件写在产品列表最外层
// components/prolist/prolist.wxml
<view class="prolist">
<!-- 声明式导航 -->
<navigator url="{{'/pages/detail/detail?proid=' + item.proid}}"
wx:for="{{prolist}}" wx:key="item.proid">
<view class="proitem" >
<view class="itemimg">
<image class="img" src="{{item.proimg}}"></image>
</view>
<view class="iteminfo">
<view class="title">
{{item.proname}}
</view>
<view class="price">
¥{{item.price}}
</view>
</view>
</view>
</navigator>
</view>
3.2.2编程式导航
使⽤⼩程序提供的 api—导航 实现编程式路由的跳转
参考链接wx.navigateTo(Object,object)
逻辑:bindtap定义事件,采用data-params形式传递事件参数,并在事件中根据 event/a 获取该参数
// components/prolist/prolist.wxml
<view class="pro" wx:for="{{pros}}" wx:key="proid" data-proid='{{item.proid}}' bindtap='toDetail'>
<view class="imgitem">
<image src="{{item.proimg}}"></image>
</view>
<view class="infoitem">
<view class="title">
{{item.proname}}
</view>
<view class="price">
¥{{item.price}}
</view>
</view>
</view>
// components/prolist/prolist.js
methods: {
// 编程式导航 跳转到详情页
toDetail(a){
// console.log(a) // 获取data-xxx数据
const {proid} =a.currentTarget.dataset
wx.navigateTo({
url: `/pages/detail/detail?proid=${proid}`
})
}
}
3.3详情页渲染
//pages/detail/detail.wxml
<view class="detailItem">
<view class="detailImg">
<image src="{{proDetail.proimg}}"/>
</view>
<view class="detailInfo">
<view>{{proDetail.proname}}</view>
<view class="detailPrice">¥{{proDetail.price}}</view>
<view>{{proDetail.note}}</view>
</view>
</view>
//pages/detail/detail.js
import { requestFn } from './../../utils/index.js'
Page({
onLoad: function (options) {
// console.log(options,12) //获取编程导航地址栏携带信息
this.getdetailDataFn(options)//调用产品详情页函数
},
// 产品详情页
getdetailDataFn(a) {
const { proid } = a //获取详情页产品id
requestFn({ url: '/pro/detail?proid=' + proid }).then(res => {
var article = res.data.data.detail;
this.setData({
proDetail: res.data.data
})
})
}
})
//utils/index.js //自定义的发起请求的函数
const baseUrl = 'http://daxun.kuboy.top/api'
export function requestFn(options){
const { url, data, method}=options;
wx.showLoading({
title:"加载中"
})
return new Promise((resolve,reject)=>{
wx.request({
url:baseUrl+url,
data:data||{},
method:method||'GET',
success:(res)=>{
resolve(res)
},
fail:err=>{
reject(err)
},
complete:()=>{
wx.hideLoading()
}
})
})
}
版权声明:本文为qq_39400978原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。