花坊项目笔记

1.1项目概述

慕尚花坊是⼀款同城鲜花订购 的小程序,项目常用功能模块分为项目首页、商品分类、商品列表、商品详情、用户管理、收货地址、购物车、结算支付和订单管理等等。

1.2项目技术栈

小程序内置组件:采用小程序内置组件,结合 Vant 组件库实现⻚⾯结构的搭建

项⽬中使⽤了 css 拓展语言 Scss 绘制页面的结构。

小程序内置API:交互、支付、文件上传、地图定位、网络请求、预览图片、本地存储等。

小程序分包加载:降低⼩程序的启动时间、包的体积,提升⽤户体验度。

小程序组件开发:将页面内的功能模块抽象成⾃定义组件,实现代码的复⽤。

网络请求封装:request 方法封装、快捷⽅式封装、响应拦截器、请求拦截器。

骨架屏组件:利⽤开发者⼯具提供了⾃动⽣成⻣架屏代码的能力,提⾼了整体使用体验和用户满意 度。

UI 组件库:使用 Vant 组件库实现小程序 结构的绘制。 

LBS :使⽤腾讯地图服务进行 LBS逆地址解析,实现选择收货地址功能。

miniprogram-licia :使用 licia 进行函数的防抖节流。

async-validator :使用async-validator 实现表单验证。

miniprogram-computed : 使用 miniprogram-computed 进行计算属性功能。

mobx-miniprogram :使用 mobx-miniprogram 进行项目状态的管理。

   

二,项目初始化

1.创建项目

在微信开发者⼯具的开始界⾯左侧检查项⽬类型,需要为 [⼩程序]。
然后在右侧点击 [+] 开始新建项⽬。
最后在弹出的界⾯中输⼊项⽬相关的信息,点击确定即可。

         

项⽬初始化 重置

app.js 中的代码

   // app.js:小程序的项目入口文件// app.js:小程序的项目入口文件
App({
  
})
删除 app.json 中 pages 下的 "rendererOptions" 以及 "componentFramework" 字段。

删除 app.json 中 pages 下的 "pages/logs/logs" 路径,同时删除 pages/logs ⽂件夹。

⾃定义构建
(1)⾸先在project.config.json 配置 miniprogramRoot 选项,指定⼩程序源码的⽬录。

(2)然后配置 project.config.json 的 setting.packNpmManually 为 true。

(3)初始化项⽬。

(4)终端中输入  npm init -y
(5)最后配置 project.config.json 的 setting.packNpmRelationList 项,指定 packageJsonPath 和
miniprogramNpmDistDir 的位置。

(6)安装 vant ,然后进⾏ npm 构建 ,测试是否能够正常 vant 构建成功。
         输入  npm i @vant/weapp
(7)“⼯具”-“构建npm”。
b:集成 Sass
(1)在 project.config.json ⽂件中,修改 setting 下的 useCompilerPlugins 字段为 ["sass"] ,即可开 启⼯具内置的 sass 编译插件。

(2)更改wxss后缀名为sass

完成商品列表页面
<view class="container">
<!-- 商品列表区域 -->
  <view class="goods-list">
    <block>
      <goods-card></goods-card>
      <goods-card></goods-card>
      <goods-card></goods-card>
      <goods-card></goods-card>
    </block>
  </view>
  <!-- 文字区域 -->
  <!-- hidden属性控制文字的显示与隐藏 -->
  <!-- 当数据加载完毕,isFinsh为trun,!isFinsh为false,则这句话不隐藏,用户能看到这句话 -->
  <view class="finish" hidden="{{ !isFinsh}}">数据加载完毕</view>
</view>

配置在list.json文件

{
  "component": true,
  "usingComponents": {
    "goods-card": "../../components/goods-card/goods-card"
  },
  "navigationBarTitleText": "商品列表"
}

配置在list.scss文件

.container {
 
  .goods-list {
    padding: 15rpx;
    display: flex;
    //设置换行
    flex-wrap: wrap;
    //设置元素在主轴上的排列方式
    justify-content: space-between;
  }
 
  .finish {
    // 文本居中对齐
    text-align: center;
    font-size: 25rpx;
    color: green;
    line-height: 70rpx;
    border-top: 1px solid black;
  }
}

完成商品列表⻚⾯

<!-- 商品列表组件 -->

<view class="goods_container">

    <!-- 标题 -->

    <view class="goods_title">{{title}}</view>

    <!-- 列表区域 -->

    <view class="goods_card_list">

        <block wx:for="{{ 4 }}" wx:key="index">

            <goods-card />

        </block>

    </view>

    <!-- 查看更多 -->

    <view class="goods_more">

        <navigator url="" class="goods_more_btn">

            查看更多

        </navigator>

    </view>

</view>

.goods_container {

    width: 95%;

    margin: 0 auto;

    .goods_title {

        // 设置文本居中

        text-align: center;

        font-size: 48rpx;

        font-weight: bold;

        padding: 20rpx 0 0 0;

    }

    .goods_card_list {

 display: flex;

        // 设置换行

        flex-wrap: wrap;

        // 设置元素在主轴上的排列方式

        justify-content: space-between;

    }

    .goods_more_btn {

        height: 40px;

        width: 95%;

        background-color: white;

        border-radius: 20px;

        margin:0 auto;

        // 以下三句话设置元素垂直居中显示

        display: flex;

        justify-content: center;

        align-items: center;

    }

    .goods_more {

        margin: 10px 0 0 0;

    }

}

Component({

    // 组件的属性列表

    properties: {

        // 声明需要从父组件传title值。

       title:{

           type:String,

           value:'',

       }

    }

})

{

    "usingComponents": {

        "goods-card":"../goods-card/goods-card"

    },

    "component": true

  }

通⽤模块封装
5.1:消息提示模块封装
在进⾏项⽬开发的时候,我们经常的会频繁的使⽤到⼀些 API,例如: wx.showToast()
1:wx.showToast()基本使⽤
wx.showToast() 消息提示框是在项⽬中频繁使⽤的⼀个⼩程序 API ,常⽤来给⽤户进⾏消息提示反 馈。使⽤⽅式如下:
// app.js
App({
// ⻚⾯显示⽣命周期函数
  onShow(){
  wx.showToast({
  title: '消息提示框', // 提示的内容
  icon: 'success', // 提示的图标,success(成功)、error(失败)、loading(加
  载)、none(不显示图标)
  duration: 2000, // 提示的延迟时间
  mask: true // 是否显示透明蒙层,防⽌触摸穿透
 })
}

// ⽣命周期函数
// 在使⽤Page()构造⻚⾯时,需要使⽤⽣命周期函数。
// onLoad:⻚⾯加载时⽣命周期函数。
// onShow:⻚⾯显示⽣命周期函数。每次打开⻚⾯时都会调⽤⼀次。⻚⾯显示/切⼊前台前触发。
// onReady:⻚⾯初次渲染完成⽣命周期函数。⻚⾯初次渲染完成时触发。
// onHide:⻚⾯隐藏⽣命周期函数。如⻚⾯之间跳转或通过底部Tab切换到其他⻚⾯,⼩程序切⼊后

台。
// onUnload:⻚⾯卸载⽣命周期函数。⻚⾯卸载时触发,如⻚⾯跳转或者返回到之前的⻚⾯时。

})

为什么要进⾏模块封装
如果每次使⽤的时候,都直接调⽤这些 API ,会导致代码很冗余,为了减少了代码冗余,我们需要将
这些 API 封装成公共⽅法。
3:封装思路
a:创建⼀个 toast ⽅法对 wx.showToast() ⽅法进⾏封装
b:调⽤该⽅法时,传递对象作为参数
     如果没有传递任何参数,设置⼀个空对象 {} 作为默认参数
     从对象中包含 title 、 icon 、 duration 、 mask 参数,并给参数设置默认值
const toast = ({ title = " 数据加载中 " , icon = "none" , duration = 2000 , mask = true } = {}) => {
  wx . showToast ({
  title ,
  icon ,
  duration ,
  mask
  })
  }
c:在需要显示弹出框的时候调⽤ toast ⽅法,并传⼊相关的参数,有两种参数⽅式:
     不传递参数,使⽤默认参值
     传⼊部分参数,覆盖默认的参数

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值