文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

微信小程序开发实践的示例分析

2023-06-26 08:44

关注

这篇文章主要介绍了微信小程序开发实践的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

小程序由于微信提供了一些组件,在微信中的一些体验确实不错,对于开发来说,由数据驱动的开发模式也是挺爽的。

概要介绍

其实就是类似于VUE REACT的 MVVM模式,专注于数据和逻辑。
小程序开发框架的目标是通过尽可能简单、高效的方式让开发者可以在微信中开发具有原生 APP 体验的服务。

框架提供了自己的视图层描述语言 WXML 和 WXSS,以及基于 JavaScript 的逻辑层框架,并在视图层与逻辑层间提供了数据传输和事件系统,可以让开发者可以方便的聚焦于数据与逻辑上。

实践得到的经验

规则

目前打包后的文件不能超过2M,否则不能上传到微信服务器

小程序不支持的

不支持sass语法
2.不支持window、document,不能使用相关的库,如jquery、PreventMoveOverScroll。

不支持直接使用svg标签开发。image的src放远程svg可以,background-image里也可以。
但是可以使用的canvas标签(canvas坑:position absolute的层盖不住canvas),可以使用的库:wx-charts (有坑,放在app.js中然后在page中引用的话,找不到ringChart上面的函数,如ringChart.addEventListener。要直接在page中引库。)。

不支持阻止默认事件,没有preventDefault。
5.没有br标签。
6.不支持table表格。
7.不能使用 来增大文字间距。
8.小程序的xxx.wxss文件font-face的url不接受http地址作为参数,可以接受 base64 ,因此可以先将字体文件下载后,转换为base64,然后再引用。链接。

新特性

img标签换成了image标签<image src="/uploads/allimg/180522/161J22b5-0.jpg"></image>。
2.text标签认\n换行,不能包裹<br/>标签,会直接输出出来,有点类似textarea。
3.小程序中 :nth-child(n) 是从0开始的。
4.switch标签。但是不能改变大小样式,像老radio标签一样讨厌。
5.picker标签。但是在开发者工具中选项不会循环,在安卓手机预览中选项会循环。

scroll-view标签。有滚动条的盒子。要想在进入页面的时候自动滚动到某处,可以使用scroll-view的scroll-into-view属性,不过一定要在scroll-view存在后设置才会生效,尤其是通过template引用的时候,比如同时通过setData设置使用该template和scroll-into-view的值,并不会使滚动生效。

关于屏幕下拉露底:Android不会,iPhone会。可以通过配置解决:disableScroll Boolean false 设置为 true 则页面整体不能上下滚动;只在page.json中有效,无法在app.json中设置该项。链接。

template标签
模板的作用域:模板拥有自己的作用域,只能使用data传入的数据。

在功能按钮上使用catchtap防止冒泡

hidden参数,控制蒙版的利器

小窍门

关于下拉刷新
要在page.json中设置 enablePullDownRefresh: true
onPullDownRefresh内要手动stopPullDownRefresh,否则一直在点点点(loading)。

page的onload函数中有参数options可以获取路径的query

小程序的支付和微信的支付不是一个appid,需要后端新开发下单接口

wxml最好在开发者工具编辑(有提示)。js, wxss可以在熟悉的编辑器编辑。

小程序中如果赋予的新值是undefined的话,根本不会进行赋值,也不会覆盖之前的值。如:

app.setData({    isPaperCollected: finishedQuizList['id'+quizID] || false})

通过多次使用Object.assign({}) 解决data也模块化后data不能深层复制的问题。
Object.assign不是深层复制。

在微信web开发者工具中一定要在动作->设置->勾上“不使用任何代理,勾选后直连网络”,否则老是报“
Failed to load resource: net::ERR_NAME_NOT_RESOLVED”的bug:链接

每一个小程序页面也可以使用.json文件来对本页面的窗口表现进行配置。 页面的配置比app.json全局配置简单得多,只是设置app.json中的window配置项的内容,页面中配置项会覆盖app.json的window中相同的配置项。页面的.json只能设置window相关的配置项,以决定本页面的窗口表现,所以无需写 window 这个键

data是在page中设置的,不是在app.js中的。不涉及渲染的可以不要放data里面。

Page.prototype.setData()变更数据同时更新页面数据。
setData 函数用于将数据从逻辑层发送到视图层,同时改变对应的 this.data 的值。直接修改 this.data 无效,无法改变页面的状态,还会造成数据不一致。单次设置的数据不能超过1024kB,请尽量避免一次设置过多的数据。

wx:if 是惰性的,如果在初始渲染条件为false,框架什么也不做,在条件第一次变成真的时候才开始局部渲染。

会话管理

微信的网络请求接口 wx.request() 没有携带 Cookies,这让传统基于 Cookies 实现的会话管理不再适用。为了让处理微信小程序的服务能够识别会话,我们会话管理使用weapp-session-client。这需要服务端的支持。基本原理是包装wx.request并在 Header 上使用特殊的字段跟踪。

使用时遇到的问题:
1.微信开发者工具报错:Uncaught ReferenceError: regeneratorRuntime is not defined
原因是 Generator 函数不被支持。
解决方法:

题外话:善用 Promise
本项目后端处理会话管理时要求发送请求时不能使用相同的 X-WX-Code发送多次全部header数据,RawData、Signature等,否则报错。
所以使用weapp-session-client登录的时候要等login返回之后再发送其他的请求,
小程序加载后立即顺序执行app.js和page.js里面的配置,但是wx request是异步的,所以有可能page中的请求开始执行时app.js中的login还没结束,就会导致bug。
可以使用个promise解决掉。

感谢你能够认真阅读完这篇文章,希望小编分享的“微信小程序开发实践的示例分析”这篇文章对大家有帮助,同时也希望大家多多支持编程网,关注编程网行业资讯频道,更多相关知识等着你来学习!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯