实战教程:小程序实现在线点餐系统

梦幻舞者 2022-01-02 ⋅ 20 阅读

介绍

本教程将教你如何使用小程序实现一个简单的在线点餐系统,包括购物车和支付功能。通过这个实战项目,你可以学习到小程序的基础知识和实际应用。

准备工作

在开始之前,你需要完成以下准备工作:

  1. 微信开发者工具:下载并安装微信开发者工具,用于开发和调试小程序。
  2. 小程序 AppID:在微信公众平台注册小程序,并获取 AppID。
  3. 基础知识:了解小程序的基本开发流程和相关知识。

创建项目

打开微信开发者工具,点击“新建项目”,填写项目名称和项目路径,然后选择“小程序”作为项目类型。

设计页面

在本项目中,我们需要创建三个页面:商品列表页、购物车页和支付页。

商品列表页

pages 目录下创建 productList 目录,然后在该目录下创建 productList.wxmlproductList.wxssproductList.js 文件。

// productList.wxml

<view class="container">
  <view wx:for="{{products}}" wx:key="index" class="product">
    <image class="product-image" src="{{item.image}}"></image>
    <view class="product-name">{{item.name}}</view>
    <view class="product-price">¥{{item.price}}</view>
    <button class="add-to-cart" bindtap="addToCart">加入购物车</button>
  </view>
</view>
// productList.wxss

.container {
  display: flex;
  flex-wrap: wrap;
  padding: 10px;
}

.product {
  width: 30%;
  padding: 10px;
  margin-bottom: 10px;
  border: 1px solid #ddd;
  border-radius: 8px;
  text-align: center;
}

.product-image {
  width: 100%;
  height: 200px;
  object-fit: cover;
}

.product-name {
  margin-top: 10px;
  font-size: 16px;
}

.product-price {
  margin-top: 5px;
  color: #f00;
  font-weight: bold;
}

.add-to-cart {
  margin-top: 10px;
  width: 100%;
  height: 40px;
  background-color: #39f;
  color: #fff;
  border-radius: 8px;
}
// productList.js

Page({
  data: {
    products: [
      {
        id: 1,
        name: '商品1',
        price: 10,
        image: '/images/product1.jpg'
      },
      {
        id: 2,
        name: '商品2',
        price: 20,
        image: '/images/product2.jpg'
      },
      ...
    ]
  },
  addToCart(e) {
    const productId = e.currentTarget.dataset.id;
    // 将商品添加到购物车
  }
})

购物车页

pages 目录下创建 cart 目录,然后在该目录下创建 cart.wxmlcart.wxsscart.js 文件。

// cart.wxml

<view class="container">
  <view wx:for="{{cart}}" wx:key="index" class="item">
    <view class="item-name">{{item.name}}</view>
    <view class="item-price">¥{{item.price}}</view>
    <view class="item-quantity">x{{item.quantity}}</view>
    <button class="remove-from-cart" bindtap="removeFromCart" data-id="{{item.productId}}">移除</button>
  </view>
  <view class="total-price">总价:¥{{totalPrice}}</view>
</view>
// cart.wxss

.container {
  padding: 10px;
}

.item {
  display: flex;
  align-items: center;
  margin-bottom: 10px;
}

.item-name {
  flex: 1;
}

.item-price {
  width: 100px;
  font-weight: bold;
}

.item-quantity {
  width: 60px;
  text-align: right;
}

.remove-from-cart {
  width: 60px;
  height: 30px;
  background-color: #f00;
  color: #fff;
  border-radius: 4px;
  font-size: 12px;
}
// cart.js

Page({
  data: {
    cart: [],
    totalPrice: 0
  },
  removeFromCart(e) {
    const productId = e.currentTarget.dataset.id;
    // 从购物车中移除商品
  }
})

支付页

pages 目录下创建 payment 目录,然后在该目录下创建 payment.wxmlpayment.wxsspayment.js 文件。

// payment.wxml

<view class="container">
  <view class="title">请完成支付</view>
  <view class="payment-info">
    <view>订单号:{{orderId}}</view>
    <view>应付金额:¥{{totalPrice}}</view>
  </view>
  <button class="pay-btn" bindtap="pay">确认支付</button>
</view>
// payment.wxss

.container {
  padding: 10px;
  text-align: center;
}

.title {
  font-size: 18px;
  font-weight: bold;
  margin-bottom: 20px;
}

.payment-info {
  margin-bottom: 10px;
}

.pay-btn {
  width: 150px;
  height: 40px;
  background-color: #39f;
  color: #fff;
  border-radius: 8px;
}
// payment.js

Page({
  data: {
    orderId: '123456789',
    totalPrice: 100
  },
  pay() {
    // 发起支付请求
  }
})

页面跳转

在小程序中,使用 navigateTo 方法实现页面跳转。在商品列表页中,点击“加入购物车”按钮后,将商品添加到购物车,并跳转到购物车页。在购物车页中,点击“移除”按钮后,从购物车中移除商品,并更新总价。在购物车页中,点击“确认支付”按钮后,跳转到支付页。

productList.js 文件中,添加跳转逻辑:

addToCart(e) {
  const productId = e.currentTarget.dataset.id;
  // 这里省略将商品添加到购物车的逻辑

  wx.navigateTo({
    url: '/pages/cart/cart'
  });
}

cart.js 文件中,添加跳转和移除逻辑:

removeFromCart(e) {
  const productId = e.currentTarget.dataset.id;
  // 这里省略从购物车中移除商品的逻辑

  // 更新总价
  // this.setData({totalPrice: ...});

  wx.navigateTo({
    url: '/pages/cart/cart'
  });
}

payment.js 文件中,添加跳转和支付逻辑:

pay() {
  // 这里省略发起支付请求的逻辑

  wx.navigateTo({
    url: '/pages/payment/payment'
  });
}

实现购物车功能

在购物车页中,点击“移除”按钮后,从购物车中移除商品并更新总价。在 cart.js 文件中添加以下逻辑:

removeFromCart(e) {
  const productId = e.currentTarget.dataset.id;
  const cart = this.data.cart.filter(item => item.productId !== productId);
  // 这里省略从购物车中移除商品的逻辑

  // 更新总价
  const totalPrice = cart.reduce((total, item) => total + (item.price * item.quantity), 0);
  this.setData({ cart, totalPrice });
}

实现支付功能

在支付页中点击“确认支付”按钮后,可以模拟支付成功。在 payment.js 文件中添加以下逻辑:

pay() {
  // 这里省略发起支付请求的逻辑

  // 模拟支付成功
  wx.showToast({
    title: '支付成功',
    icon: 'success',
    duration: 2000,
    success: () => {
      // 这里可以跳转到支付成功页面或其他操作
    }
  });
}

总结

通过以上步骤,你已经成功实现了一个简单的小程序在线点餐系统,包括购物车和支付功能。在实践的过程中,你还学习到了小程序的基本开发流程、页面跳转和数据更新等知识点。希望本教程对你有所帮助,欢迎继续深入学习和探索小程序的更多功能和应用场景。


全部评论: 0

    我有话说: