【微信小程序】实现简单MVC代码结构

我们知道在PHP开发中有经典的MVC的分层开发模式,即数据(model)、视图(view)、控制(controller)三层代码结构。一般在实际中我们会在model层和controller层中间加一层services层,进一步将业务逻辑细化拆分。那小程序中如何实现这一代码结构呢。

首先,小程序中的视图层就是wxml文件,那js文件可以简单类比为控制层。简单开发的话,我们一般会直接在JS文件中调用数据接口获取数据。但是这种方式如果是比较复杂的项目,有很多复杂结构的业务逻辑的话,那JS文件就会变的异常臃肿和杂乱,那我们如何简单拆分成多个层次呢。

我们可以加一个services层和一个model层。在services层中接受model层的数据,并进行各种业务逻辑的处理,然后开放给JS文件调用。具体如何实现数据和方法在各个层次和文件的流转呢。

我们先在pages目录评级的目录下建一个model目录和一个services目录,然后下面在根据各个业务模块创建业务目录,然后业务目录下创建相应的JS文件,如下图所示

 

在model层的文件中使用export语法,将数据变量开放出去,然后在services的文件中使用require语法即可使用model中的数据,然后在将services中的处理方法export出去,pages下的JS文件再使用import语法将方法引入,就可以直接使用了。

具体的代码如下所示:

model/goods/goodsList.js

export const goodsList = [
  {
    id:1,
    img:'https://hupc-blog-photo.oss-cn-beijing.aliyuncs.com/wp-content/uploads/2022/12/6f012a8ad2e64aa6d7fa8cc9cfdcf0.jpg',
    price:298,
    title:'精美礼品',
    tag:'2023春季爆款',
    groupid:100011
  },
];

services/goods/goods.js

const goodData = require("../../model/goods/goodsList")


/**
 * 根据groupid获取商品数据
 * @param {*} groupid 
 */
export function getGoodsDataByGroupId(groupid){
  var return_data = []
  if(groupid == ''){
    return return_data
  }
  goodData.goodsList.forEach(function(item,index){
    if(item.groupid == groupid){
      return_data.push(item)
    }
  })

  return return_data
}

pages/goods/list/index.js

import {getGoodsDataByGroupId} from "../../../services/goods/goods"

// pages/goods/list/index.js
Page({

  /**
   * 页面的初始数据
   */
  data: {
    goodList:[]
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    var groupid = options.groupid
    var goodList = getGoodsDataByGroupId(groupid)
    this.setData({
      goodList:goodList
    })
  }
})
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇