《微信小程序实战(1)· 开篇示例 》

📢 大家好,我是 【战神刘玉栋】,有10多年的研发经验,致力于前后端技术栈的知识沉淀和传播。 💗

🌻 CSDN入驻不久,希望大家多多支持,后续会继续提升文章质量,绝不滥竽充数,欢迎多多交流。👍

文章目录

    • 写在前面的话
    • 开篇示例
    • 讲解大纲
    • 页面开发
    • 远程调用
    • 总结陈词

写在前面的话

近期由于博主刚帮朋友完成一个地图导航类的微信小程序,趁这股热乎劲还没褪去,想着把微信小程序的相关内容整理一个专栏,统一分享一下。

关于微信小程序,大家想必也都不陌生了,毕竟推出来好几年了,这边不会去介绍小程序的基础用法,毕竟官网上介绍的足够详细了。

本专栏的主要目的就是分享一下微信小程序在实战开发过程中,常用的操作讲解和踩坑说明,希望可以帮助到大家。

好了,废话不多说,让我们开始吧!

参考:微信小程序官网文档


开篇示例

由于本系列文档要介绍小程序实战的内容,那不得先贴一下待讲解对象的相关截图,否则岂不是耍流氓?

这里要介绍的微信小程序是一款地图类小程序,是某水务集团为方便内部员工进行日常工作登记而研发的,需求内容包含但不限于打标记、绘制足迹、选点画线、海报推广、以及若干典型得列表、详情、表单等页面,可以说麻雀虽小五脏俱全,以这个为示例展开介绍,再合适不过了。

先上若干截图:

讲解大纲

针对这一示例小程序,要展开介绍的课题可能如下,有其他想了解的欢迎评论区留言。

  • 重要概念与小程序模板
  • 页面开发与远程调用
  • 小程序码生成与海报绘制
  • 昵称与电话授权
  • 地图相关操作合集
  • 各类型页面的应对
  • 小程序组件开发篇
  • 小程序中的公用&封装
  • 小程序开发之实用技巧
  • 未完待续,虚位以待

本篇文章也不能就介绍一个大纲,啥也不说吧,那岂不是空手套白狼。

篇幅所限,先介绍一个页面开发与远程调用课题。

页面开发

基础构成

微信小程序的每个页面通常由四个文件组成,分别是:

.js 文件:这个文件包含了页面的逻辑代码,主要用于处理用户的交互、数据请求和页面的生命周期函数等。

.json 文件:这个文件用于配置页面的窗口表现和一些特定的设置,比如导航栏的标题、是否启用下拉刷新等。

.wxml 文件:这个文件是页面的结构文件,类似于 HTML,定义了页面的布局和元素。

.wxss 文件:这个文件是页面的样式文件,类似于 CSS,用于设置页面元素的样式和布局。

这四个文件的分离使得小程序的结构更加清晰,便于开发和维护。开发者可以独立地修改页面的逻辑、样式和结构,提高了代码的可读性和可维护性。

再啰嗦一句,基础知识烦请参考:微信小程序官网文档

写法对比 Vue

不管前后端程序猿,或多或少都接触过 Vue,有了 Vue 的基础,微信小程序基本用法也就掌握了,两者用法十分相似。

从组成上比对,Vue 是在同一个文件里包含了布局、逻辑、样式三个部分,而小程序是拆开,各有优劣。

从编码上看,日常开发Vue具备的写法,小程序也基本都覆盖到了,特殊用法略有差别。

页面逻辑 .js

核心用法包含生命周期、自定义方法、自定义数据,细节部分不展开,直接用一个模板示例说明。

该模板可以用于创建任意新页面,如果开发团队有专门前端人员,可以让他创建页面的时候复制此模板。

这样您的团队,也是前后端开发搭配协作,那这种做法节省很多沟通时间,代码也较为清晰。

/*** 模板页* author:战神刘玉栋*/
let app = getApp();  //获取到小程序全局唯一的 App 实例
let ace = require("../../utils/ace.js"); //获取自定义封装的工具类Page({/*** 页面的初始数据*/data: {userObj: {}, //用户信息},/*** 非页面渲染数据*/otherData: {author: '战神刘玉栋',},/*** 生命周期函数--监听页面加载*/onLoad: function (options) {let that = this;// 获取用户信息,插入到页面的数据中ace.getUserInfo(function (data) {     that.setData({userObj: data}, function () {// 触发初始化页面逻辑that.initHandle();})});},/*** 初始化页面逻辑*/initHandle: function () {let that = this;},
})

远程调用

正所谓,缺失远程调用能力的前端,是没有灵魂的前端(忘记哪里听来的杂谈了)。

就像 Vue 中使用Axios调用后端接口获取数据那样,微信小程序有自己调用接口的wx.request

又像 Vue 中,通常会创建一个request.js文件,对Axios进行二次封装,编写前置和后置拦截器,对入参和出参进行相应处理。

没错了,小程序的远程调用的最佳实践也是需要您封装一二,否则直接使用wx.request,仿佛代码是在裸奔。

您需要把常用方法封装到一个工具JS,按需调用,例如下方这样:

/*** 封装网络请求*/
function sendHttp(uri, data, method, successCallback, failCallback, flag) {var that = this;if (flag != 'no') {that.showLoading();}wx.request({url: app.globalData.urlApi + uri, data: data, method: method, header: {'Content-Type': 'application/x-www-form-urlencoded'}, success: function (res) {if (flag !== 'no') {that.hideLoading();}if (res.statusCode === 200) {let data = res.data;if (data && data.success) {successCallback(data.data);} else {that.msg(data.message || '系统异常');console.log(data.error)typeof failCallback == "function" && failCallback(data)}}}, fail: function (msg) {that.hideLoading();that.toastError('稍后再试~');console.log('reqest error', msg)},})
}/*** 发送GET请求*/
function sendGet(url, callBack, flag) {if (!app) {app = getApp();}if (app.globalData.appId && url.indexOf('appId') == -1) {if (url.indexOf('?') == -1) {url += '?appId=' + app.globalData.appId} else {url += '&appId=' + app.globalData.appId}}this.sendHttp(url, {}, 'GET', callBack, null, flag);
}/*** 发送POST请求*/
function sendPost(url, data, callBack, failCallback) {if (!app) {app = getApp();}if (app.globalData.appId) {data.appId = app.globalData.appId}this.sendHttp(url, data, 'POST', callBack, failCallback);
}

总结陈词

此篇文章是《微信小程序实战》系列的第一篇,后续该专栏会继续分享小程序实战中运用的技能,希望可以帮助到大家。如果有感兴趣的内容,可以私信沟通交流。

💗 后续会逐步分享企业实际开发中的实战经验,有需要交流的可以联系博主。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/140592.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

深入理解SpringBoot(一)----SpringBoot的启动流程分析

1、SpringApplication 对象实例化 SpringApplication 文件 public static ConfigurableApplicationContext run(Object[] sources, String[] args) {// 传递的source其实就是类Bootstrapreturn new SpringApplication(sources).run(args);// 实例化一个SpringApplication对象执…

豆包MarsCode | 一款智能编程助手开发工具

豆包MarsCode | 一款智能编程助手开发工具 豆包MarsCode 是基于豆包大模型的智能开发工具,提供 Cloud IDE 和 AI 编程助手,支持代码补全、智能问答、代码解释与修复,兼容主流编程工具与 100 种编程语言,助力编程更智能便捷 豆包 M…

Cyber Weekly #24

赛博新闻 1、OpenAI发布最强模型o1 本周四(9月12日),OpenAI宣布推出OpenAIo1系列模型,标志着AI推理能力的新高度。o1系列包括性能强大的o1以及经济高效的o1-mini,适用于不同复杂度的推理任务。新模型在科学、编码、数…

SEGGERS实时系统embOS推出Linux端模拟器

SEGGER 发布了两个新的 embOS 仿真模拟器:embOS Sim Linux 和 embOS-MPU Sim Linux。 通过模拟 Linux 主机系统上的硬件,取代物理硬件,为开发人员提供了一种无缝的方式来构建原型和测试应用程序。 embOS Sim Linux 端口支持 32 位和 64 位系…

【大模型专栏—进阶篇】智能对话全总结

大模型专栏介绍 😊你好,我是小航,一个正在变秃、变强的文艺倾年。 🔔本文为大模型专栏子篇,大模型专栏将持续更新,主要讲解大模型从入门到实战打怪升级。如有兴趣,欢迎您的阅读。 &#x1f4…

微信小程序开发第三课

1 wxml语法 1.1 模版语法 # 1 在页面 xx.js 的 Page() 方法的 data 对象中进行声明定义 # 2 在xx.wxml 中使用 {{}} 包裹,显示数据 # 3 可以显示如下,不能编写js语句或js方法-变量-算数运算-三元运算-逻辑判断# 4 只是单纯通过赋值,js中…

利用Hadoop Spark大数据技术构建国潮男装评论数据分析系统

🍊作者:计算机毕设匠心工作室 🍊简介:毕业后就一直专业从事计算机软件程序开发,至今也有8年工作经验。擅长Java、Python、微信小程序、安卓、大数据、PHP、.NET|C#、Golang等。 擅长:按照需求定制化开发项目…

Qt入门教程---项目创建全过程内存泄漏解释

目录 1.创建项目的说明 2.代码介绍说明 2.1文件分类介绍 2.2sources文件 2.3widget.ui文件 2.4widget.h文件 2.5中间文件 2.6.pro文件 3.打印输出hello world 3.1图形化界面生成控件 3.2代码生成控件 3.3打印结果展示 4.对于内存泄露的讨论 4.1对象树 4.2与栈开辟…

掌握这5大SEO优化策略,让你的网站流量飙升300%

想要让你的网站在搜索引擎中脱颖而出,吸引更多流量吗?那么,掌握SEO优化策略就成了关键。SEO,即搜索引擎优化,是通过一系列技术手段和策略,提高网站在搜索引擎中的排名,从而增加曝光率和访问量。…

【Elasticsearch系列四】ELK Stack

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

starUML使用说明文档[简单易懂/清晰明了]||好上手

1. 安装 StarUML 首先,您需要从 StarUML 官方网站(http://staruml.io/)下载最新版本的 StarUML 安装包。然后,按照提示进行安装。(联想可以从软件管家里下载) 2. 打开 StarUML 安装完成后,双击桌…

深圳前海港湾学校天桥下的免费停车点探寻

​最近开车去桂湾公园停车场的路上,看到有个天桥下有很多车停着,关键是这个地方离我搬砖的前海卓越写字楼还近,要是有时候桂湾公园停车位满了,停不进去的时候,是不是可以去这个天气下薅免费停车的羊毛?哈哈…

Pytorch+Anaconda+Pycharm+Python

0 python知识 0.1 os库常见用法 os 库提供了许多用于操作操作系统功能的函数。常见用法包括: 文件和目录操作: os.listdir(path):列出指定路径下的所有文件和目录。os.mkdir(path):创建新目录。os.remove(path):删除…

Java面向对象六大设计原则总结(超级详细,附有代码、图解以及案例)

文章目录 三.软件(面向对象)设计原则3.1 开闭原则(OSP)3.1.1 概述3.1.2 案列 3.2 里氏代换原则(LSP)3.2.1 概述3.2.2 案例 3.3 依赖倒转原则(DIP)3.3.1概述3.3.2 案例 3.4 接口隔离原则(ISP)3.4.1 概述3.4.2 案列 3.5 迪米特法则(DP)3.5.1 概述3.5.2 案例 3.6 合成复用原则(CRP…

小阿轩yx-案例:Zabbix监控kubernetes云原生环境

小阿轩yx-案例:Zabbix监控kubernetes云原生环境 前言 传统监控的本质 就是收集、分析和使用信息来观察一段时间内监控对象的运行进度,并且进行相应的决策管理的过程,监控侧重于观察特定指标。 随着云原生时代的到来 我们对监控的功能提出…

anaconda安装manim

anaconda安装manim (安装时间2024年9月15日,后续版本变化再做更新) 创建环境test 等一下我们创建一个manim项目作为试水 切换到test环境 {:height 430, :width 780} 输入以下代码 # using conda or mamba conda create -n my-manim-envi…

国内人工智能产业发展现状及对策研究

一、引言 人工智能作为新时代科技革命和产业变革的核心力量,正深刻改变着全球经济格局。我国政府高度重视人工智能产业发展,将其列为国家战略性新兴产业。在此背景下,本文旨在分析我国人工智能产业发展现状,探讨面临的挑战&#x…

远程Linux网络连接( Linux 网络操作系统 04)

接下来我们准备开始进入Linux操作系统的第二个模块的学习,不过在学习之前我们需要对如下进行简单的配置,通过外接辅助软件MobaXterm来进行虚拟操作系统的访问。接下来的课程我们会一直在MobaXterm中进行命令和相关知识的学习。 一、准备阶段 1.1 软件 …

新能源汽车充电基础设施大爆发

新能源汽车充电基础设施迈入新阶段:全国总量破千万,未来五年将翻番增长 截至2024年7月底,全国充电设施总量已达到1060万台,为超过2500万辆新能源汽车提供了充电服务。目前,95%的高速公路服务区已具备充电功能&#xf…

CODESYS标准化编程之输入输出映射

在介绍输入输出映射之前大家需要了解开关量防抖滤波功能块,相关链接如下: 开关量防抖滤波器(梯形图和SCL源代码)_开关量输入滤波程序-CSDN博客文章浏览阅读724次。本文介绍了开关量防抖滤波器的原理和应用,包括梯形图和SCL源代码的实现。通过…