微信小程序开发:颠覆式思维转变与实践指南

在小程序开发中,我们需要转变展现形式、开发模式、体验思路、发布模式、性能思路和技术选型等多方面的思维。以下通过一些代码示例,展示微信小程序开发中需要转变的思路。

  1. 展现形式转变

在传统Web开发中,我们通常这样切换页面:

<!-- index.html -->
<a href="about.html">关于我们</a><!-- about.html -->
<h1>关于我们</h1>
<p>我们是一家专注于技术开发的公司...</p>

但在小程序中,我们需要使用导航的方式:

<!-- index.wxml -->
<navigator url="/pages/about/about">关于我们</navigator><!-- about.wxml -->
<view><view>关于我们</view><view>我们是一家专注于技术开发的公司...</view>
</view>
  1. 开发模式转变

传统Web开发中,前端通过Ajax获取数据:

// 前端获取数据并渲染
$.ajax({url: '/api/data',success: function(data) {renderData(data);}
});

而在小程序中,我们更推荐在服务端获取数据,视图层只做渲染:

// 服务端获取数据
const data = await getData();
// 视图层渲染
this.setData({ data });
  1. 体验思路转变

以下是一个传统Web端的复杂UI:

<header><nav><ul><li><a href="/">Home</a></li><li><a href="/about">About</a></li><li><a href="/products">Products</a></li>...</ul></nav>
</header>
<main>...
</main>
<footer>...
</footer>

而小程序中,我们需要转变为极简的交互设计:

<view><swiper><swiper-item><image src="..."/></swiper-item>...</swiper><view>精选商品</view><view><navigator url="..."><image src="..."/><view>商品名称</view></navigator>...</view>
</view>
  1. 发布模式转变

小程序发布需要先通过审核,例如需要在代码中添加如下配置:

// project.config.json
{"sitemapLocation": "sitemap.json"
}// sitemap.json 
{"desc": "关于本小程序的介绍","navItems": [{"text": "首页","path": "pages/index/index"},...],...
}
  1. 性能思路转变

在小程序开发中,我们需要精简组件、精简数据通信、精简代码,比如:

<!-- 精简组件 -->
<view wx:if="{{condition}}"><view>显示内容</view>
</view><!-- 精简数据通信 -->
<view wx:for="{{list}}" wx:key="id"><text>{{item.name}}</text>
</view><!-- 精简代码 -->
<wxs module="utils">
var filterData = function(data) {// 精简的数据处理逻辑
}
module.exports.filterData = filterData;
</wxs>
  1. 技术选型转变

小程序无法直接使用许多第三方库,需要谨慎技术选型,例如选择符合规范的UI库:

// package.json
{"dependencies": {"lin-ui": "^0.8.6",...}
}
<!-- index.wxml -->
<l-status show="{{true}}" type="cart-fav" />

小结:在小程序开发中,我们需要转变展现形式、开发模式、体验思路、发布模式、性能思路和技术选型等多方面的思维,这些代码示例就是对应不同思路转变的具体体现。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Leetcode 16. 最接近的三数之和

给你一个长度为 n 的整数数组 nums 和 一个目标值 target。请你从 nums 中选出三个整数&#xff0c;使它们的和与 target 最接近。 返回这三个数的和。 假定每组输入只存在恰好一个解。 示例 1&#xff1a; 输入&#xff1a;nums [-1,2,1,-4], target 1 输出&#xff1a;…

Latex绘制多行多TSNE列子图

Latex绘制多行多列TSNE子图 问题描述解决办法 问题描述 写论文需要绘制TSNE可视化图像。 解决办法 代码如下 \usepackage{subfigure}\begin{figure*}\centering\small\subfigure[aaa]{\includegraphics[width0.18\textwidth]{Figure/MFPT_v5_train_tsne_user0_bs0.png}}\su…

Docker 学习

一起学习,加油芹菜!!! 镜像:相当于模板,容器:相当于服务器 镜像:(centos镜像、mysql镜像、nginx镜像、redis镜像、自己的应用程序等) 容器:想让镜像跑起来就需要创建容器,相当于服务器,容器与容器之间是隔离的,安全性较高 1)yum包更新到最新 sudo yum upd…

neo4j使用详解(六、cypher即时时间函数语法——最全参考)

Neo4j系列导航&#xff1a; neo4j及简单实践 cypher语法基础 cypher插入语法 cypher插入语法 cypher查询语法 cypher通用语法 cypher函数语法 6.时间函数-即时类型 表示具体的时刻的时间类型函数 6.1.date函数 年-月-日时间函数&#xff1a; yyyy-mm-dd 6.1.1.获取date da…

Windows下配深度学习环境

Requirements Python version 3.8.5Pytorch version: pytorch1.6.0 torchvision0.8.2 torchaudio0.7.0 cudatoolkit10.2.89pytorch3d version 0.3.0Cuda version 10.2 感觉readme文件里的不适配&#xff0c;怎么办

C++ vector 数组/向量

文章目录 【 1. vector 的声明与初始化 】1.1 vector 的声明1.2 vector 的初始化1.2.1 构造一个空的 vector1.2.2 指定数量初值的方式初始化 vector1.2.3 迭代器的方式初始化1.2.4 构造一个相同的 vector 【 2. vector 的相关操作 】2.1 插入元素2.1.1 在vector的末尾插入新元素…

Linux 网络: 网卡速度异常案例(1)

文章目录 1. 前言2. 问题描述3. 问题简析 1. 前言 限于作者能力水平&#xff0c;本文可能存在谬误&#xff0c;因此而给读者带来的损失&#xff0c;作者不做任何承诺。 2. 问题描述 在 TI 的 AM335x 平台适配了一个 1000Mbps 的 PHY 芯片&#xff0c;通过 iperf 打流&#x…

C语言最详细内存函数

1. memcpy 使用和模拟实现 void * memcpy(void *destination,const void * source,size_t num);• 函数memcpy从source的位置开始向后复制num个字节的数据到destination指向的内存位置。 • 这个函数在遇到 ‘\0’ 的时候并不会停下来。 • 如果source和destination有任何的重…

IPv4地址

IP v4 由32位二进制构成、可以用点分十进制表示。 例如&#xff1a;192.168.1.1 11000000101010000000000100000001 由网络位和主机位组成。为了区分网络位和主机位&#xff0c;需要用子网掩码&#xff0c;子网掩码也是由32位二进制构成&#xff0c;连续的1对应网络位&#…

HDMI 2.1b 规范解读

HDMI 规范 HDMI 2.1b 是最新版 HDMI 规范&#xff0c;支持一系列更高的视频分辨率和刷新频率&#xff0c;包括 8K60 和 4K120 以及高达 10K 的分辨率。同时支持动态 HDR 格式&#xff0c;带宽能力增加到 48Gbps HDMI。 新的超高速 HDMI 线缆支持 48Gbps 带宽。该线缆可确保提供…

TS学习02 面向对象 类、封装继承、接口、泛型

TS学习02 TypeScript 面向对象1、类&#xff08;class&#xff09;属性实例属性&类属性只读属性 方法实例方法类方法 构造函数 & this 2、面向对象的特点封装属性的权限属性存取器静态属性 继承重写super抽象类 3、接口&#xff08;Interface&#xff09;4、泛型&#…

吴恩达机器学习笔记 三十二 K-means初始化 选择聚类数量

K-means 初始化 首先 K < m&#xff0c;若集群的数量多于样本数显然是不合理的。 第一步&#xff1a;随机选取 K 个样本&#xff1b; 第二步&#xff1a;设这 K 个样本为 μ1 μ2 ... μk 有时候K-meas 算法会出现局部最小值的情况&#xff0c;如左下图和右下图&#xf…

spark sql执行引擎原理及配置

如果我们想要给上层开发人员配置好一个统一的sql开发界面&#xff0c;让他们统一通过sql开发即可&#xff0c;可通过spark中的thriftserver服务实现&#xff0c;与hive中的thriftserver类似&#xff0c;配置好该服务后&#xff0c;上层通过db client或者代码中通过jdbc连接即可…

Android U user+root实现方案

背景 由于项目&#xff08;MTK平台&#xff09;上要实现userroot的版本&#xff0c;供特殊用户使用。Android T上的方案无效&#xff0c;经历了各种搜索查看资料&#xff0c;和bsp大佬一起通宵奋战&#xff0c;整出了方案。梳理记录下&#xff0c;有需要的同学可以参考。 Root…

cesium键盘控制相机位置和姿态

该类主要用于监听键盘事件并在用户按下不同按键时执行相应的相机操作&#xff0c;如改变相机的位置、偏航角、俯仰角和翻滚角&#xff0c;从而实现在三维场景中的漫游。 以下是代码的主要逻辑&#xff1a; 导入Cesium库&#xff0c;并定义一个flags对象&#xff0c;其中包含了…

Linux gcc day2

mkdir -p 递归的创建目录 rm or rmdir&#xff1a; rmdir &#xff1a;是用来删除空目录的 实际上我们更加常用的是rm命令 rm可以删除普通文件,也可以删除目录&#xff0c;目录是从某次开始就是一棵树就是递归&#xff0c;所以就要递归删除 rm -r [文件名] 递归删除目录或者目…

linux系统命令chkconfig详解,管理系统服务的工具-查看、启用、禁用和设置系统服务的启动级别

目录 一、chkconfig命令介绍 二、命令的主要作用 1、管理服务的启动和停止&#xff1a; 2、配置运行级别&#xff1a; 3、简化系统管理&#xff1a; 4、查看服务状态&#xff1a; 三、命令语法 1、基本语法 2、运行级别 四、获取帮助 1、通过help获取 2、通过man获…

Azure入门实践-如何创建两个虚拟网络的对等连接

在Azure中创建两个虚拟网络&#xff08;Virtual Network, VNet&#xff09;之间的对等连接&#xff08;VNet Peering&#xff09;可以让这两个虚拟网络中的资源像在同一个网络中一样相互通信。以下是详细的步骤&#xff1a; 1. 登录到Azure门户 打开浏览器&#xff0c;访问Az…

基于“遥感+”蓝碳储量估算、红树林信息提取实践技术应用与科研论文写作

原文链接&#xff1a;基于“遥感”蓝碳储量估算、红树林信息提取实践技术应用与科研论文写作https://mp.weixin.qq.com/s?__bizMzUzNTczMDMxMg&mid2247599633&idx5&sn1398cde523f9c5e036e4d478fc1d3388&chksmfa8207f6cdf58ee0a3a2bf652e7ac5cf65636b05f9e3306…

备战蓝桥杯Day36 - 动态规划 - 三角形最小路径和问题

一、什么是动态规划 通过拆分问题&#xff0c;定义问题状态和状态之间的关系&#xff0c;使得问题能够以递推的方式解决。 哪些问题可以使用动态规划&#xff1f; 1、具有最优子结构&#xff1a;问题的最优解所包含的子结构的解也是最优的 2、具有无后效性&#xff1a;未来…