优购商城项目 详细步骤流程

本文详细介绍了优购商城小程序的开发流程,包括项目准备工作如接口文档、项目结构搭建、请求接口封装;页面逻辑及组件拆分,如首页、分类、列表、详情、购物车等页面的实现;以及支付、授权登录等关键功能的实现步骤。
摘要由CSDN通过智能技术生成

优购商城项目 详细步骤流程

一、准备的工作

1.文档

  1. 写项目之前必须要有接口文档 准备工作接口文档是必不可少的
  2. 参考文档我们还可以参考 小程序的开发文档、阿里巴巴字体 iconfont 、mdn…

2.项目的搭建

1.搭建项目目录的结构 相当于分模块的去放我们需要的文件 使项目的结构可以清晰明了
在这里插入图片描述
2.然后就是分析页面 搭建项目基本项目的页面 (有语义化的 名字可以很方便我们后期的维护 习惯的养成)

{
   
  "pages": [    //项目页面的路由信息
    "pages/index/index",
    "pages/category/index",
  ]}

引入项目中需要的字体图标库 并且可以保证全局引入 这样才可以在所有的页面使用


 - 打开阿⾥巴巴字体图标 ⽹站

     . 选择的图标 
     . 添加⾄项⽬ 
     . 下载到本地 
     . 将样式⽂件 由 css 修改为 wxss 
     . 在app.wxss⼩程序中引⼊ 

在这里插入图片描述
页面使用图标 对应的图标名称
在这里插入图片描述

3.项目的搭建

在这里插入图片描述

4.搭建项目的tabber 结构 参考 小程序 API 文档

5.请求数据的接口进行封装 这样就可以 不必要的重复的代码 http文件去封装

(图)具体封装的步骤

三个部分:
0ne:api.js ------------放接口地址集合 统一的整体的来管理

  • module.exports={}导出 有多个地址 对象的形式导出
    在这里插入图片描述

two:fach.js ----------------封装微信 网络请求模块 导出一个promis 实例对象 会接收三个形参 (url,data,method)
分别是 请求的路径、请求数据的参数、请求数据的方法
promis对象中的(resolve, reject) 分别代表成功和失败之后执行的回调函数

  • 导出一个 Promise 对象实例 里面封装接口请求的方法用来重复使用
    在这里插入图片描述

三、http.js --------- 封装请求的方法 首先需要 引入 fach.js 和 api.js 这样才可以进行完美的封装

  • 为了减少重复 无用的代码 可设置基本路径的地址 baseUrl
    接口的理解 api ---- 接口 h8------ 版本号

let baseUrl = “https://api-hmugo-web.itheima.net/api/public/v1”

在这里插入图片描述

然后就是定义函数 分别请求对应的接口

需要值得注意的是 必须要在全局的app.js 中 全局的引入http 并且 全局的导出 这样在需要的页面 引入 才可以使用它获取
到数据 否则就会报错

到这里 差不多项目的基本准备工作就差不多真被完毕了 接下来就是 分析 各个页面之间的联系 并且 对组件进行拆分和封装

二、单个页面的逻辑 组件的拆分

1.首页页面

是我们看到的home 首页 搜索、轮播图、导航、和楼层都可以进行封装
子组件我们注册在 components 中
另外可以根据页面 json 中的

 {
   
  "component": true,   //来判断当前组件是否是子组件
  "usingComponents": {
   }
} 

我们在home 父组件页面 请求到轮播图的数据 首先 在api.js 中定义好 轮播图数据的路径
然后在http.js 中 请求数据 接口不需要参数的话就 不写参数 为空 请求的方法为get 统一导出后 在 父组件
home.js 中 我们要全局的引入我们封装的请求方法

* 生命周期函数--监听页面加载  的时候请求数据
  onLoad: function (options) {
   
    // 请求轮播图数据
    // /home/swiperdata
    app.http.banner().then(res => {
   
      // console.log(res)

数据保存到data中  
      this.setData({
   
        banner: res.data.message
      })
    })

并且需要我们传递给子组件

<!-- 轮播图的组件 -->
<w-swiper list="{
   {
   banner}}"></w-swiper>
<!-- 轮播图的组件 -->

使用自定义属性的方法
在子组件js来接收数据

properties:{
   
list:{
   
type:Array 
}
}

接收数据 并且可以 定义数据类型 和默认数据

然后在页面中渲染我们接受到的数据

 <swiper autoplay="true" indicator-dots="true" indicator-color="pink" class="tops-s">  
  <block wx:for="{
   {
   list}}" wx:key="index">
  <swiper-item>
      <image src="{
   {
   item.image_src}}"></image>
  </swiper-item>
</block>
</swiper> 

可以参考 小程序API 文档来对
来实现轮播图的效果 导航部分 和 楼层部分也是一样的流程 父传子 只需要
对页面进行css的样式进行修改

2.分类页面

首先一眼页面是分为左右两部分 右边是侧边导航 左边是数据的渲染 也是一个二级导航的效果 首先根据接口 请求到数据

数据拿到之后进分析 只有对数据最够 明白才能让我们更快更好的的完成页面
这边 拿到的数据是 先渲染左边的侧边导航栏 然后我们给侧边导航地每一项一个点击事件 change

  <view class="lefts" wx:for="{
   {
   srot}}" wx:key="index">
  <view  bindtap="change" data-index="{
   {
   index}}">
    {
   {
   item.cat_name}}
  </view>
</view>

并且使用自定义属性 data-index="{ {index}}" 把他的下标传递过去
在js 页面

  // 方法
  change(e) {
   
    // 保存点击的下标    ---
    this.setData({
   
      i: e.currentTarget.dataset.index
    });
    // 根据 保持的·下标来获取右边的数据
    this.setData({
   
      tabs: this.data.srot[this.data.i].children
    })
    // tabs:this.data.srot[this.data.i].children[0].children
    // console.log(this.data.tabs);

},
通过e 事件源 来保存下来 我们点击的每一项数据的下标

然后 把符合当前下标的数据 的children 中的数据保存下来 这样就可以实现 点击左边的哪一项 切换到哪一项的数据 了,因为
拿到的数据结构就是 每一下项数据里面都有自己的children 右边展示的也是根据左边的数据而展示他的children的

3.列表页面

<!-- 右边的部分图 -->
<view class="con" wx:for="{
   {
   item.children}}" 
wx:key="index"   data-cid="{
   {
   item.cat_id}}" bindtap="gotolist">

```css
  <data-cid=
1.2. 结构化一下 1.3. 图形化一下 1.3.1. 运营商后台 1.3.2. 商家后台 1.3.3. 网页前台 参考京东 2. 技术选型 前端:angularJS + Bootstrap 后台:SSM( springmvc+spring+mybatis) 数据库:mysql,使用mycat读写分离 开发模式:SOA 服务中间件:dubbox,需要和zookeeper配合使用 注册中心:zookeeper 消息中间件:Activemq,使用spring-jms 负载均衡:nginx 搜索:solr集群(solrCloud),配合zookeeper搭建, 使用spring-data-solor 缓存:redis集群,使用spring-data-redis 图片存储:fastDFS集群 网页静态化:freemarker 单点登录:cas 权限管理:SpringSecurity, 跨域:cros 支付:微信扫描 短信验证:阿里大于 密码加密:BCrypt 富文本:KindEditor 事务:声明式事务 任务调度:spring task 所有的技术,都可能涉及到为什么用?怎么用?用的过程中有什么问题? 3. 框架搭建 3.1. 前端 理解baseControler.js、base.js、base_pagination.js,以及每一个xxxController.js里面都公共的做了些什么。 baseControler.js 分页配置 列表刷新 处理checkBox勾选 xxxControler.js 自动生成增删改查 base_pagination.js 带分页 base.js 不带分页 3.2. dao 使用了mybatis逆向工程 4. 模块开发 逐个模块开发就好 4.1. 学会评估模块难不难 一个模块难不难从几方面考虑。 涉及几张表? 1,2张表的操作还是没有什么难度的。 涉及哪些功能? 增删改查,批量删除。 前端展示? 分页列表、树形、面包屑、三级联动、内容格式化。 4.2. 举几个简单模块的例子 4.2.1. 品牌管理 单表 分页、新增、删除、修改 4.2.2. 规格管理 2张表 分页、新增、删除、修改、显示优化(显示列表内容的一部分) 4.2.3. 模板管理 2张表 分页、新增、删除、修改、显示优化(显示列表内容的一部分) 4.2.4. 分类管理 单表 4.2.5. 商家审核 单表 4.3. 举一个复杂模块 4.3.1. 商品新增 需要插入3张表,tb_goods、tb_goods_desc、tb_item 前端:三级联动、富文本、图片上传、动态生成内容 4.3.2. 商品修改 需要从3张表获取数据,然后进行回显。 4.4. 典型模块设计 4.4.1. 管理后台 商品新增、商品修改 4.4.2. 前台页面 搜索模块实现 购物车模块实现 支付模块实现 秒杀模块实现 5. 开发过程中问题&优化 1.1. 登录 单点登录怎么实现 session怎么共享 1.2. 缓存 哪些场景需要用到redis redis存储格式的选择 怎么提高redis缓存利用率 缓存如何同步 1.3. 图片上传 图片怎么存储 图片怎么上传 1.4. 搜索 ​ 怎么实现 数据量大、 并发量高的搜索 怎么分词 1.5. 消息通知 ​ 哪些情况用到activeMq 1.6. 优化 seo怎么优化 怎么加快访问速度 1.7. 秒杀 ​ 怎么处理高并发 ​ 秒杀过程中怎么控制库存
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值