微信小程序项目总结

一般的电商类小程序项目都大致分为四个模块:首页,分类,购物车,我的 页面四个模块。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

文件目录清晰,组件化开发,接口数据封装是做一个项目的必要操作。

文件目录大致就是这样,目录一定要建好,要不然后期很乱:

在这里插入图片描述

关于组件化开发,可以看看我的文章:

小程序组件封装链接

接口数据封装:

在这里插入图片描述

在http文件夹下新建三个js子文件: env.js文件,搭建环境:

module.exports={
  //开发环境
  dev:{
    baseUrl:'http://127.0.0.1:8080'
  },
  //生产环境
  prod:{
    baseUrl:'https://api.it120.cc'
  },
  //测试环境
  test:{
    baseUrl:'https://api.1909A.com'
  }
}

request.js文件,promise封装:

const {
  baseUrl
} = require('./env.js').prod
const vipUrl = "xps"
module.exports = {
  // request是一个函数,封装了request,其中的参数不填的话就会有默认值
  request: function (url, data = {}, method = "GET", isSubDomain = true) {
    //把正确的请求地址拼接起来
    let fullurl = `${baseUrl}/${isSubDomain ? vipUrl : ""}/${url}`
    //Promise 对象用于表示一个异步操作的最终完成 (或失败), 及其结果值.
    return new Promise((resolve, reject) => {
      wx.showLoading({
        title: '加载中',
      })
      wx.request({
        url: fullurl,
        method,
        data,
        header: {
          //此处的头部信息要注意接口文档
          "content-type": "application/x-www-form-urlencoded"
        },
        //成功回调
        success(res) {
          //返回的数据
          resolve(res.data)
          wx.hideLoading()
        },
        //失败回调
        fail() {
          console.log("接口问题")
        }
      })
    })
  }
}

api.js文件(我们是团队开发,所以分别封装):

const {xhy_api} = require('./xhy_api/xhy_api.js')
const {sbq_api} = require('./sbq_api/sbq_api.js')
const {dly_api} = require('./dly_api/dly_api.js')
const {xps_api} = require('./xps_api/xps_api.js')
const {zj_api} = require('./zj_api/zj_api.js')
const {yyq_api} = require('./yyq_api/yyq_api.js')

module.exports={
 xhy_api,
 sbq_api,
 dly_api,
 xps_api,
 zj_api,
 yyq_api
}

封装大概就是这样,用的时候也很简单:

以轮播图为例:

js代码

// components/component/swiper.js
const {xps_api} = require("../../http/api");
Component({
  // 组件的生命周期
  lifetimes:{
      created(){
        this.getBannerList()
      }
  },
  /**
   * 组件的初始数据
   */
  data: {
    bannerList: [], //我获取轮播图的数据
    showList:[],//存数据的轮播图
    indicatorDots: true, //是否显示面板指示点
    vertical: false, //滑动方向是否为纵向
    autoplay: true, //是否自动切换
    interval: 2000, //自动切换时间间隔
    duration: 500, //滑动动画时长
  },

  /**
   * 组件的方法列表
   */
  methods: {
    getBannerList() {
      xps_api("indexSwiper").then(res=>{
          this.data.bannerList = [];
          // console.log(res)
          res.data.forEach(ele=>{
            if(ele.type == "index"){
              this.data.bannerList.push(ele)
            }
          })
          this.setData({
            bannerList: this.data.bannerList,
            showList:res,
          })
      })
    },
  }
})

直接引入api,在方法里面直接调用接口就可以得到接口数据,然后渲染到页面就可以了。

wxml代码:

<!--components/component/swiper.wxml-->
<view class="bannerSwiper">
	<!-- 轮播图 -->
	<view class="page-body">
		<view class="page-section page-section-spacing swiper">
			<swiper indicator-dots="{{indicatorDots}}" indicator-active-color="white" circular="true" autoplay="{{autoplay}}" interval="{{interval}}" duration="{{duration}}">
				<swiper-item wx:for="{{bannerList}}" wx:key="index" class="swiper_item">
					<image src="{{item.picUrl}}"></image>
				</swiper-item>
			</swiper>
		</view>
	</view>
</view>

这个页面好多地方都用到了跳转,就说一下小程序常用的页面跳转的方法(编程式触发和标签式触发):

编程式:

wx.navigateTo() 这是最普遍的一种跳转方式,其官方解释为:“保留当前页面,跳转到应用内的某个页面”

例如:

在这里插入图片描述

实际效果如下:左上角有一个返回箭头,可以返回上一个页面。

在这里插入图片描述

wx.redirectTo() 不保留历史,跳转到另一个页面,不能返回到上一页面 。

wx.switchTab() 只跳转到tabBar页面,不带回退。

wx.reLaunch() 即能跳转到tabBar页面,也能跳转到非tabBar页面,不带历史回退。

标签式:

接收:通过另一个页面在onload生命周期中接收。

还有一个重要的就是css的动态样式(tab切换)

这里推荐一个链接:

微信小程序点击高亮显示并切换到对应的内容

基础的大概就是这些

然后小程序最主要的就是登陆功能,登录功能可以看我的博客链接:

小程序登录注册流程

登陆实现之后,开发小程序就容易多了。

我们这个项目是小组团队开发完成的,代码都在码云上合成
在git上遇到了一个非常恶心的问题,就是项目可以正常从远程分支上拉取下来,但是我写的代码提交不上去,一直报错403,翻译过来就是没有权限。很纳闷,在组长那里看仓库,分支还是在小程序后台,我都在组织里面,没有任何问题,但是我的代码就是提交不上去。
后来在我自己的码云上创建了远程分支,发现自己的可以提交上去。经过仔细摸索和分析报错问题,发现是本地路径和远程路径不匹配。解决方案在下面

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_45616142/article/details/108026858
今日推荐