记一次使用mpvue仿QQ阅读项目

751 阅读3分钟

落俗两句

第一次接触小程序的时候是2017年6月底,在慕课网上跟着7月老师学的第一门小程序课程是7月老师的微信小程序开发入门与实战教程-慕课网实战,跟着老师的视频敲了大半个月,把自己的第一个小程序敲出来了(话说是对着敲,但是还是有爱222222).

随着时间的推移,小程序的开发框架也出来好几个,比如:

  1. WePY | 小程序组件化开发框架

  2. mpvue-docs

两者各有优势,看了下mpvue的文档,之前也熟悉vue的开发,所以这次练习项目,就采用了mpvue和小程序原生组件混用的方式进行开发了

1.开发环境的搭建

直接拿的mpvue基于vue-cli的脚手架搭建项目目录结构

	# 全局安装 vue-cli
	$ npm install --global vue-cli
	# 创建一个基于 mpvue-quickstart 模板的新项目
	$ vue init mpvue/mpvue-quickstart my-project
	# 安装依赖
	$ cd my-project
	$ npm install
	# 启动构建
	$ npm run dev

2.目录结构

3.目录文件详解

3.1 config.js 主要用来配置数据接口 3.2 utils文件夹下的index.js 封装了wx.request请求

// http 请求工具函数
export function get (url, data) {
  return request(url, 'GET', data)
}
export function post (url, data) {
  return request(url, 'POST', data)
}

function request (url, method, data) {
  return new Promise((resolve, reject) => {
    wx.showNavigationBarLoading()
    wx.request({
      data,
      method,
      url: url,
      success: function (res) {
        // 请求成功
        if (res.data.code === 0) {
          resolve(res.data.data)
          wx.hideNavigationBarLoading()
        } else { // 请求失败
          showModal('失败', res.data.data)
          reject(res.data)
          wx.hideNavigationBarLoading()
        }
      }
    })
  })
}

export function searchRequest (url, data) {
  return new Promise((resolve, reject) => {
    wx.showNavigationBarLoading()
    wx.request({
      data,
      method: 'GET',
      url: url,
      success: function (res) {
        // 请求成功
        if (res.data.code === 0) {
          resolve(res.data)
          wx.hideNavigationBarLoading()
        } else { // 请求失败
          showModal('失败', '搜索失败')
          reject(res.data)
          wx.hideNavigationBarLoading()
        }
      }
    })
  })
}


3.3 pages文件夹对应小程序单独的页面,其中main.js和*.vue文件对应,一个页面一个vue实例

import Vue from 'vue'
import search from './search'

const app = new Vue(search)
app.$mount()
# 也可以单独配置当前页面的一些配置,会覆盖src目录下的main.js里的相同配置
export default {
  config: {
    navigationBarTitleText: '',
    backgroundTextStyle: 'dark',
    navigationBarBackgroundColor: '#fff',
    navigationBarTextStyle: 'black',
    onReachBottomDistance: 0
  }
}
说下敲代码过程的感受:6月29看完mpvue入门课程的视频,刷完mpvue的文档,想进一步巩固自己mpvue方面的知识,于是就有本次练手项目。周小码一般都是晚上回家敲个一两个小时,中间也间断过。具体是这么开发的。。。

1.因为周小码 只是一个小菜前端,只能抓别人的数据来填充下页面。所以就用charles 抓了本次项目需要的一些数据

2.登录QQ阅读小程序体验了一把。看了下页面构成。把一些页面中的相同部分抽离成单个组件,以减少代码,达到代码复用及提高代码维护性。

3.项目用到的一些icon和小图,直接放在src目录下的static目录下

4.项目没有用第三方css框架,采用了flex布局和less预处理器进行样式编写

5.本次项目采用的是mpvue框架+原生组件混用的开发方式,需要注意小程序的生命周期和mpvue的生命周期,以及事件的处理

项目做的比较粗糙,一些地方没有做优化,比如返回上一页时,可以直接缓存上一次的数据,减少一些数据的请求,而出现的一些体验不好的情况。本项目也有一些bug,比如上拉加载更多,对数据没有做一些判断。项目也没打算发。就没做授权登录,只单独用了open-data组件拿到用户的头像和昵称

非常感谢您的阅读。。。希望可以有帮到你的地方


本项目是仿QQ阅读小程序,仅供学习交流。如果有侵权 ,请联系2402249797@qq.com 进行删除。

项目地址:GitHub - levai/wx_mpvue: mpvue练习小程序实战