网站推广.NET

网站推广.NET

基于后端云微信小程序开发示例

来源:互联网

人们将90%的时间花在无聊的事情上。社会的发展使我们的休闲时间越来越多。除了工作之外,我们还从事其他娱乐活动。

程序员有点特殊。他们认为键入代码是娱乐活动的一部分,这不是少数。最近,使用bmob后端云提供数据存储服务来制作袖珍吉他小程序并不无聊,除了吉他乐谱图片,其他图片都存储在Qiniu中。

请单击此处以获取bmob 小程序开发文档。该文档详细简洁,主要是为了缩短开发周期,但是对于复杂的项目,建议使用自己的服务器来提供数据服务。

使用微信扫描QR码以预览源代码地址:/ alex1504 / wx ...

以下几点分享了小程序发展过程中的关键点和感受,解释:

小程序标签统称为组件,而Html标签统称为元素。部分内容将使用iconfont字体图标与vuejs和jQuery进行比较

新项目并添加图标

在app.wxss中以unicode引入

@font-face { font-family: 'iconfont'; /* project id 431644 */ src: url('//at.alicdn.com/t/font_431644_aahynh26y6lp7gb9.eot'); src: url('//at.alicdn.com/t/font_431644_aahynh26y6lp7gb9.eot?#iefix') format('embedded-opentype'), url('//at.alicdn.com/t/font_431644_aahynh26y6lp7gb9.woff') format('woff'), url('//at.alicdn.com/t/font_431644_aahynh26y6lp7gb9.ttf') format('truetype'), url('//at.alicdn.com/t/font_431644_aahynh26y6lp7gb9.svg#iconfont') format('svg');}复制代码

定义常规图标样式并定义伪元素

.icon{ display: inline-block; font-family: 'iconfont';}.icon-home::before{ content: "\e600";}复制代码

使用

复制代码

小程序事件绑定和处理程序

小程序与像vuejs这样的v模型没有双向绑定。使用jQuery之类的bindinput监视输入事件并在事件处理程序中更新数据。输入的值可以通过事件对象e.data.value获取。

// bindconfirm监听键盘回车事件,focus属性聚焦渲染组件时会自动弹出手机软键盘复制代码

bindSearchInput(e) { this.setData({ searchTxt: e.detail.value })}复制代码

小程序中的事件处理程序无法传递vue这样的参数,因为该事件处理程序只有一个默认参数事件对象。如果要获取for循环组件中元素的id,则可以通过与jQuery相同的方式传递Bind data属性。

复制代码

获取ID:

//事件处理函数navigateToDetail: function (e) { const id = e.currentTarget.dataset.id;}复制代码

防止事件冒泡

bindtap、bindlongtap、bindtouchstart、bindtouchmove、bindtouchend、bindtouchcancle复制代码

为防止冒泡事件,将catch替换为catch

setData

小程序的视图更新需要调用setData来修改绑定的数据。直接修改数据不会触发视图图层更新。 setData接受一个对象,该对象是需要添加或修改的属性。属性名称有点特殊,[]中的值将被识别为变量,因此,如果要修改对象数组中的属性,则只能预先拼接属性名称。错误的方法:

// 视图不更新this.data.searchSongs[index].love_flag': 2// SyntaxError: unknown: Unexpected tokenthis.setData({ 'searchSongs[' + index + '].love_flag': 2})复制代码

正确的方法:

setSongFlag(e) {// 注意setData属性名[]中的非整数值会被识别为变量let key = 'searchSongs[' + index + '].love_flag'this.setData({ [key]: 2})复制代码

关于图像组件

小程序 wxss背景图像和图像组件不支持本地网址。在H5的开发中,我们通常对页面上的某些图片使用img标签,这些图片不需要根据容器的大小进行显示,并且需要一些特殊的显示。使用背景的方式。但是小程序只需要图像分量。它提供了mode属性和背景定义图片以及img元素控制图片显示模式之间的比较

mode属性background-sizehtml img元素

scaleToFill

100%,100%(默认)

宽度:100%;高度:100%

aspectFit

包含

js实现

aspectFill

封面

js实现

widthFix

100%,自动

宽度:100%;

其他上,下,右,左和其他非缩放图像调整位置属性与背景位置具有相同的效果,而img元素只能通过定位来控制。

小程序 API异步解决方案

如果没有强迫症,小程序 API可以使用默认的回调方法;此外,由于小程序仅支持es6,不支持异步和等待,因此该API也可以封装为promise。

function promisify(fn) { return function (obj = {}) { return new Promise((resolve, reject) => { obj.success = function (res) { resolve(res) } obj.fail = function (res) { reject(res) } fn(obj)//执行函数,obj为传入函数的参数 }) }}module.exports = { promisify: promisify}复制代码

使用:

const promisify = require('./promisify.js')const request = promisify(wx.request);request({ url: 'some URL' method: 'GET',}).then(res => { console.log(res) }复制代码

小程序问题