如何制作微信小程序的在线购物商城应用

创建一个微信小程序的在线购物商城应用,以下是一个详细的代码案例。这个案例主要包括以下几个模块:

  1. 用户登录模块:用户通过手机号码登录或注册新账号。
  2. 商品列表模块:展示商城中的商品列表,用户可以通过搜索或浏览进行商品选择。
  3. 购物车模块:用户可以将商品添加到购物车中,查看和编辑购物车中的商品。
  4. 订单模块:用户可以创建和查看订单,并进行支付。
  5. 个人中心模块:用户可以查看和编辑个人信息,以及查看订单历史记录。

这里假设你已经有一个后端API,提供了相应的接口。下面是前端小程序的代码实现。

1. 用户登录模块

1.1 登录界面

pages目录下新建一个login目录,在该目录下新建login.wxmllogin.wxss文件,代码如下:

login.wxml
<view class="container">
  <text>手机号:</text>
  <input bindinput="onPhoneInput" />
  <button bindtap="onLogin">登录</button>
</view>

login.wxss
.container {
  margin-top: 200rpx;
  text-align: center;
}

1.2 登录逻辑

pages/login目录下新建login.js文件,代码如下:

Page({
  data: {
    phone: ''
  },
  onPhoneInput(e) {
    this.setData({
      phone: e.detail.value
    });
  },
  onLogin() {
    // 调用后端API进行登录验证
    wx.request({
      url: 'https://api.example.com/login',
      method: 'POST',
      data: {
        phone: this.data.phone
      },
      success(res) {
        const token = res.data.token;
        // 将token存储到本地
        wx.setStorageSync('token', token);
        // 跳转到商品列表页
        wx.navigateTo({
          url: '/pages/goodsList/goodsList'
        });
      }
    });
  }
});

1.3 注册逻辑

pages/login目录下新建register.js文件,代码如下:

Page({
  data: {
    phone: ''
  },
  onPhoneInput(e) {
    this.setData({
      phone: e.detail.value
    });
  },
  onRegister() {
    // 调用后端API进行注册
    wx.request({
      url: 'https://api.example.com/register',
      method: 'POST',
      data: {
        phone: this.data.phone
      },
      success(res) {
        const token = res.data.token;
        // 将token存储到本地
        wx.setStorageSync('token', token);
        // 跳转到商品列表页
        wx.navigateTo({
          url: '/pages/goodsList/goodsList'
        });
      }
    });
  }
});

2. 商品列表模块

2.1 商品列表界面

pages目录下新建一个goodsList目录,在该目录下新建goodsList.wxmlgoodsList.wxss文件,代码如下:

goodsList.wxml
<view class="container">
  <input bindinput="onSearchInput" />
  <button bindtap="onSearch">搜索</button>
  <view class="list">
    <block wx:for="{{ goods }}" wx:key="index">
      <view class="item">
        <image src="{{ item.image }}" mode="aspectFit" />
        <text>{{ item.name }}</text>
        <text>{{ item.price }}</text>
        <button bindtap="onAddToCart" data-id="{{ item.id }}">添加到购物车</button>
      </view>
    </block>
  </view>
</view>

goodsList.wxss
.container {
  margin-top: 20rpx;
  text-align: center;
}

.list {
  display: flex;
  flex-wrap: wrap;
}

.item {
  width: 200rpx;
  margin: 20rpx;
  text-align: center;
  border: 1rpx solid #eee;
  padding: 10rpx;
}

2.2 商品列表逻辑

pages/goodsList目录下新建goodsList.js文件,代码如下:

Page({
  data: {
    goods: []
  },
  onSearchInput(e) {
    this.setData({
      keyword: e.detail.value
    });
  },
  onSearch() {
    // 调用后端API进行商品搜索
    wx.request({
      url: 'https://api.example.com/search',
      method: 'GET',
      data: {
        keyword: this.data.keyword
      },
      success(res) {
        const goods = res.data.goods;
        this.setData({
          goods: goods
        });
      }
    });
  },
  onAddToCart(e) {
    const goodsId = e.currentTarget.dataset.id;
    // 调用后端API将商品添加到购物车
    wx.request({
      url: 'https://api.example.com/cart/add',
      method: 'POST',
      data: {
        goodsId: goodsId
      },
      success(res) {
        wx.showToast({
          title: '添加成功'
        });
      }
    });
  }
});

3. 购物车模块

3.1 购物车界面

pages目录下新建一个cart目录,在该目录下新建cart.wxmlcart.wxss文件,代码如下:

cart.wxml
<view class="container">
  <block wx:for="{{ cart }}" wx:key="index">
    <view class="item">
      <image src="{{ item.image }}" mode="aspectFit" />
      <text>{{ item.name }}</text>
      <text>{{ item.price }}</text>
      <button bindtap="onRemoveFromCart" data-id="{{ item.id }}">删除</button>
    </view>
  </block>
  <view class="total">
    <text>总计:{{ total }}</text>
    <button bindtap="onCheckout">结算</button>
  </view>
</view>

cart.wxss
.container {
  margin-top: 20rpx;
  text-align: center;
}

.item {
  display: flex;
  align-items: center;
  justify-content: center;
  margin: 20rpx;
  text-align: center;
  border: 1rpx solid #eee;
  padding: 10rpx;
}

.total {
  display: flex;
  align-items: center;
  justify-content: center;
}

3.2 购物车逻辑

pages/cart目录下新建cart.js文件,代码如下:

Page({
  data: {
    cart: [],
    total: 0
  },
  onLoad() {
    // 调用后端API获取购物车数据
    wx.request({
      url: 'https://api.example.com/cart',
      method: 'GET',
      success(res) {
        const cart = res.data.cart;
        this.setData({
          cart: cart
        });
        this.calculateTotal();
      }
    });
  },
  onRemoveFromCart(e) {
    const goodsId = e.currentTarget.dataset.id;
    // 调用后端API将商品从购物车移除
    wx.request({
      url: 'https://api.example.com/cart/remove',
      method: 'POST',
      data: {
        goodsId: goodsId
      },
      success(res) {
        wx.showToast({
          title: '删除成功'
        });
        this.setData({
          cart: this.data.cart.filter(item => item.id !== goodsId)
        });
        this.calculateTotal();
      }
    });
  },
  calculateTotal() {
    const total = this.data.cart.reduce((sum, item) => {
      return sum + item.price;
    }, 0);
    this.setData({
      total: total
    });
  },
  onCheckout() {
    // 调用后端API创建订单
    wx.request({
      url: 'https://api.example.com/order/create',
      method: 'POST',
      success(res) {
        wx.showToast({
          title: '订单创建成功'
        });
        // 跳转到订单页
        wx.navigateTo({
          url: '/pages/order/order'
        });
      }
    });
  }
});

4. 订单模块

4.1 订单界面

pages目录下新建一个order目录,在该目录下新建order.wxmlorder.wxss文件,代码如下:

order.wxml
<view class="container">
  <view class="list">
    <block wx:for="{{

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值