原生微信小程序项目基础框架搭建

article/2025/9/10 15:17:27

原生微信小程序项目基础框架搭建

  • 文件目录结构
    在这里插入图片描述

1. 环境变量(开发环境, 线上环境,测试环境)便于在不同环境的切换

  • 接口的url
  • webview的前缀url
  • 埋点相关的环境参数
  • 本地存储的环境变量配置

根目录中的 config 文件 中的 env.js文件

//dev:开发环境
//test:测试环境
//pre:预上线环境
//pro:线上环境
const env = "dev"
const Env_CONFIG = {dev: {ENV: "dev",API_URL: "http://pixiu.natapp1.cc",UPLOAD_URL: "http://pixiu.natapp1.cc",IMG_URL: "http://pixiu.natapp1.cc"},pre: {ENV: "pre",API_URL: "http://pixiu.natapp1.cc",UPLOAD_URL: "http://pixiu.natapp1.cc",IMG_URL: "http://pixiu.natapp1.cc"},pro: {ENV: "pro",API_URL: "http://pixiu.natapp1.cc",UPLOAD_URL: "http://pixiu.natapp1.cc",IMG_URL: "http://pixiu.natapp1.cc"}
}module.exports = Env_CONFIG[env]

2.配置本地存储

  • 因为微信小程序的体验环境和线上环境的storage是统一的,经常会相互覆盖掉
  • 存储的key和环境变量关联
  • 添加上过期时间

在根目录utils文件夹中的storage.js文件

// 引入环境变量
const { ENV } = require("../config/env")
// 配置本地存储
class Storage {constructor(env) {this.ENV = env}// key 是存储的数据类型,this.env 表示在什么环境变量中存储的数据// 获取本地存储的数据 get(key) {// wx.getStorageSync 方法获取数据const { value, exp, cTime } = wx.getStorageSync(`${this.ENV}_${key}`)// 判断存储的数据是否过期,exp是存储时长if (exp) {const nowTime = (new Date()).getTime()if (nowTime - cTime >= exp) {this.move(key)return undefined}}return value}//  wx.setStorageSync 存储数据set(key, value, exp = null) {let obj = { value, exp, cTime: (new Date()).getTime() }wx.setStorageSync(`${this.ENV}_${key}`, obj)}// wx.removeStorageSync 方法删除数据remove(key) {wx.removeStorageSync(`${this.ENV}_${key}`)}//  wx.clearStorageSync 方法清空 storage 数据clear() {wx.clearStorageSync()}
}
module.exports = new Storage(ENV)

3.对请求进行封装

  • 请求的loading, 根据参数配置 v
  • 拦截的处理函数 v
  • 调用方式优化 v
  • 全局文件上传
    • 后端允许最大的上传图片尺寸2m 图片上传前拦截
    • a页面图片 最多500
    • b页面最多300k

在根目录utils文件夹中的axios.js文件

const storage = require("./storage")
const { API_URL, UPLOAD_UR } = require("../config/env")class axios {constructor() {this.token = storage.get('token')}// 封装 wx.request 请求require(method, url, data, loading) {// 开启动画if (loading) {wx.showLoading({title: '数据加载ing',})}// 抛出请求return new Promise((resolve, reject) => {wx.request({url: API_URL + url,data: data,method: method,header: {'X-token': `${this.token}`},// 接口请求成功返回值success: (result) => {resolve(this.interseptorResponse(result))},// 请求失败返回值fail: (res) => {console.log("失败了");reject(res)},// 接口请求完成 关闭 loading 动画complete: (res) => {console.log("完成了");wx.hideLoading()}})})}// 封装的 get 方法get(url, data, loading) {return this.require("get", url, data, loading)}// 封装的 post 方法post(url, data, loading) {return this.require("post", url, data, loading)}// 封装的 uploadFile 方法uploadFile(path, size) {wx.showLoading({title: '图片上传中',})return new Promise((resolve, reject) => {if (size >= 1024 * 1024 * 2) {reject({code: -1,msg: "图片尺寸过大"})}wx.uploadFile({url: UPLOAD_URL,filePath: path,name: 'hehe',header: {authorization: `Bearer ${this.token}`},success(res) {resolve(JSON.parse(res.data))},fail(res) {reject(res)},complete() {wx.hideLoading()}})})}// 做拦截处理interseptorResponse(data) {return data.data}
}
module.exports = new axios()

4. 版本升级的处理

  • 因为小程序的缓存问题,小程序包跟新之后,用户无法第一时间获取
  • 控制是否强制更新用户版本

在根目录utils文件夹中的versionMange.js文件

// 版本更新管理
class versionManage {constructor(forceUpdate) {// 微信小程序的方法 wx.getUpdateManagerconst updateManager = wx.getUpdateManager()updateManager.onUpdateReady(function () {if (forceUpdate) {updateManager.applyUpdate()return false}wx.showModal({title: '更新提示',content: '新版本已经准备好了,是否重启应用?',success(res) {if (res.confirm) {updateManager.applyUpdate()}}})})}
}
module.exports = versionManage

5.处理全局共有的 api 或者 接口请求方法

在根目录下的service.js文件下

const axios = require("./utils/axios")// 获取版本控制信息
function getVersionUpdate() {return axios.get("/products/")}// 微信登录
function wxlogin(data) {return axios.post("/login", data)
}// 全局图片上传
function uploadFile(path, size) {// return axios.uploadFile(path, size)
}
module.exports = {getVersionUpdate,wxlogin,uploadFile
}

http://chatgpt.dhexx.cn/article/KSIEiTKt.shtml

相关文章

开发跨端微信小程序框架选型指南

多端框架uni-app和Taro选型对比 一. 背景 小程序原生开发有不少槽点: 1.原生wxml开发对Node、预编译器、webpack支持不好,影响开发效率和工程构建流程。所以大公司都会用框架开发 2.微信定义的这套语法,wxml、wxs,以及wx:if等语…

微信小程序 微信小程序框架API

完整微信小程序(Java后端) 技术贴目录清单页面(必看) 微信小程序框架所提供的API接口也是相当完备的,如果说小程序组件是用来构建小程序的视图层,那么小程序API则在小程序逻辑层担当重任。随着小程序版本的更新迭代,目前小程序框架 API分类已经达到了19…

微信小程序框架(一)-全面详解(学习总结---从入门到深化)

目录 小程序与普通网页开发的区别 体验小程序 微信小程序账号申请 微信小程序开发者工具 下载安装 创建项目 开发者工具说明 小程序目录结构 描述整体的 app 描述各自页面的 page 全局配置_Pages Pages配置 entryPagePath 快捷生成页面方案 全局配置_window 常用属性…

微信小程序学习笔记(二)-- 开发之框架

一、小程序框架介绍(了解) 小程序框架包含小程序的配置、框架接口、场景值、WXML 和 WXS 等 二、小程序的配置(精通) 小程序的配置分为全局配置、页面配置以及sitemap 配置 1、全局配置 小程序根目录下的 app.json 文件用来对…

微信小程序框架

框架 小程序开发框架的目标是通过尽可能简单、高效的方式让开发者可以在微信中开发具有原生 APP 体验的服务。 整个小程序框架系统分为两部分:逻辑层(App Service)和 视图层(View)。小程序提供了自己的视图层描述语言…

【微信小程序】小程序框架分析

1.MVC MVC是Model-View- Controller的简写,即模型-视图-控制器,简单来说就是通过controller的控制去操作model层的数据,并且返回给view层展示。 当用户出发事件的时候,view层会发送指令到controller层,接着controller去通知mode…

微信小程序常见的UI框架/组件库总结

图片 想要开发出一套高质量的小程序,运用框架,组件库是省时省力省心必不可少一部分,随着小程序日渐火爆,各种不同类型的小程序也渐渐更新,其中不乏一些优秀好用的框架/组件库。 1:WeUI 小程序–使用教程 ht…

强烈推荐:小程序常用的6款框架总结

随着前端的知识不断更新,小程序也成为了我们开发中的日常。微信小程序、百度小程序、支付宝小程序、头条小程序等等不断涌入我们的生活,随着小程序的火爆,各种小程序框架不断出现,也在不断更新。路漫漫,学不完呀&#…

微信小程序框架介绍以及项目目录结构

完整微信小程序(Java后端) 技术贴目录清单页面(必看) 微信小程序框架介绍 微信团队为小程序提供的框架命名为MINA。MINA框架通过封装微信客户端提供的文件系统、网络通信、任务管理、数据安全等基础功能,对上层提供一整套JavaScript API&am…

爬虫入门

爬虫入门 1. 概述 本文首先介绍Requests库如何自动爬取HTML页面以及如何自动网络请求提交,随后将会讲解如何阅读网络爬虫排除标准。获取了网页之后用BeautifulSoup库解析HTML页面,然后讲解正则表达式,以及如何用正则表达式提取网页关键信…

一个简单爬虫的入门教程

前言 我毕业论文要写文本大数据情绪分析,没有现成的数据。淘宝要价600块我又舍不得,只能自学爬虫。我一点计算机网络的基础都没有,光是入门就花了一周(不知道从何下手),所幸爬虫不难,只要见过就…

python爬虫入门教程:开始一个简单的爬虫

本文下面所有的Python基础都有详细的配套教程以及源码,都已经打包好上传到百度云了,链接在文章结尾处! 扫码此处领取大家自行获取即可~~~ 1.爬虫的过程分析 当人类去访问一个网页时,是如何进行的?   ①打开浏览器&…

从原理到实战,一份详实的 Scrapy 爬虫教程

之前分享了很多 requests 、selenium 的 Python 爬虫文章,本文将从原理到实战带领大家入门另一个强大的框架 Scrapy。如果对Scrapy感兴趣的话,不妨跟随本文动手做一遍! 一、Scrapy框架简介 Scrapy是:由Python语言开发的一个快速、高层次的屏幕…

超级简单的Python爬虫教程,python爬虫菜鸟教程官网

毫无基础的人如何入门 Python ? Python是一种计算机程序设计语言。你可能已经听说过很多种流行的编程语言,比如非常难学的C语言,非常流行的Java语言,适合初学者的Basic语言,适合网页编程的JavaScript语言等等。 那Python是一种…

爬虫教程(1)基础入门

爬虫介绍 网络爬虫,英译为 web crawler ,是一种自动化程序,现在我们很幸运,生处互联网时代,有大量的信息在网络上都可以查得到,但是有时我们需要网络上的数据,活着文章,图片等等&…

爬虫的简单入门

本文旨在教会读者能够简单使用两种爬虫,完成一些基础的爬虫操作,会给出一些优化思路,并不会深入的讲解优化方法。 目录 前言 一、爬虫部分——网页源码获取 1、Requests 2、Selenium 二、数据处理——解析网页 BeautifulSoup 三、成功入门之后…

网页爬虫教程

转自https://morvanzhou.github.io/tutorials/data-manipulation/scraping/ 了解网页结构 学习爬虫, 首先要懂的是网页. 支撑起各种光鲜亮丽的网页的不是别的, 全都是一些代码. 这种代码我们称之为 HTML, HTML 是一种浏览器(Chrome, Safari, IE, Firefox等)看得懂的语言, 浏览…

一个简单的爬虫入门教程!

前言 我毕业论文要写文本大数据情绪分析,没有现成的数据。淘宝要价600块我又舍不得,只能自学爬虫。我一点计算机网络的基础都没有,光是入门就花了一周(不知道从何下手),所幸爬虫不难,只要见过就…

【爬虫教程】吐血整理,最详细的爬虫入门教程~

初识爬虫 学习爬虫之前,我们首先得了解什么是爬虫。 来自于百度百科的解释: 网络爬虫(又称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则&a…

爬虫教程( 1 ) --- 初级、基础、实践

爬虫教程:https://piaosanlang.gitbooks.io/spiders/content/ 1. 爬虫入门 初级篇 IDE 选择: PyCharm (推荐) 、SublimeText3、Visual Studio Python 版本:Python3。( 最简单的是直接安装 Anaconda,使用 Anaconda 管理…