微信小程序:微信web开发阶段性学习总结

小程序运行机制

前台/后台状态

小程序启动后,界面被展示给用户,此时小程序处于前台状态。

当用户点击右上角胶囊按钮关闭小程序,或者按了设备 Home 键离开微信时,小程序并没有完全终止运行,而是进入了后台状态,小程序还可以运行一小段时间。

当用户再次进入微信或再次打开小程序,小程序又会从后台进入前台。但如果用户很久没有再进入小程序,或者系统资源紧张,小程序可能被销毁,即完全终止运行。

小程序启动

这样,小程序启动可以分为两种情况,一种是冷启动,一种是热启动。

冷启动:如果用户首次打开,或小程序销毁后被用户再次打开,此时小程序需要重新加载启动,即冷启动。

热启动:如果用户已经打开过某小程序,然后在一定时间内再次打开该小程序,此时小程序并未被销毁,只是从后台状态进入前台状态,这个过程就是热启动。

——————————————————————————————————

自定义组件

首先需要在 json 文件中进行自定义组件声明

注意:在组件wxss中不应使用ID选择器、属性选择器和标签名选择器。

在自定义组件的 js 文件中,需要使用 Component() 来注册组件,并提供组件的属性定义、内部数据和自定义方法。

在使用该自定义组件的页面的json文件中使用

"usingComponents": {

"component-tag-name": "../custom/custom"

}

定义组件名并且标注组件地址。

**继承样式,如 font 、 color ,会从组件外继承到组件内。

**除继承样式外, app.wxss 中的样式、组件所在页面的的样式对自定义组件无效

页面的生命周期方法(即 on 开头的方法),应写在 methods 定义段中。

Component({

properties: {

paramA: Number,

paramB: String,

},

methods: {

onLoad: function() {

this.data.paramA // 页面参数 paramA 的值

this.data.paramB // 页面参数 paramB 的值

}

}

})

——————————————————————————

使用 Component 构造器来构造页面的一个好处是可以使用 behaviors 来提取所有页面中公用的代码段。

例如,在所有页面被创建和销毁时都要执行同一段代码,就可以把这段代码提取到 behaviors 中。

代码示例:

// page-common-behavior.js

module.exports = Behavior({

attached: function() {

// 页面创建时执行

console.info(‘Page loaded!‘)

},

detached: function() {

// 页面销毁时执行

console.info(‘Page unloaded!‘)

}

})

——————————————————————————————————

监听事件

wxml中

<component-tag-name bind:myevent="onMyEvent" />

js中

Page({

onMyEvent: function(e){

e.detail // 自定义组件触发事件时提供的detail对象

}

})

———————————————————————————————————

触发事件

自定义组件触发事件时,需要使用 triggerEvent 方法,指定事件名、detail对象和事件选项。

自定义组件中

wxml

<button bindtap="onTap">点击这个按钮将触发“myevent”事件</button>

js

Component({

properties: {},

methods: {

onTap: function(){

var myEventDetail = {} // detail对象,提供给事件监听函数

var myEventOption = {} // 触发事件的选项

this.triggerEvent(‘myevent‘, myEventDetail, myEventOption)

}

}

})

——————————————————————————————————

组件生命周期

在组件的js的component中

lifetimes: {

attached: function() {

// 在组件实例进入页面节点树时执行

},

detached: function() {

// 在组件实例被从页面节点树移除时执行

},

},

——————————————————————————————————————

弹性盒子布局

wxss

.container {

height: 100vh;

display: flex;

flex-direction: column;

justify-content: space-around;

align-items:center;

}

wxml

<view class=‘container‘>

<image src=‘/images/33.png‘></image>

<text>这是33</text>

<text>33在拿着手机扫二维码</text>

<text>www.bilibili.com</text>

</view>

本页面的样式只能用于本页面,全局样式可以在app.wxss中定义

——————————————————————————————————

页面跳转

navigator组件

open-type属性,hover-class属性,及使用时注意之处

<text>元素只能包含纯文本,里面有多余的东西会被忽略掉

open-type属性

open-type="redirect"没有返回  open-type="navigate"有返回

hover-class属性

hover-class=‘index-class‘

在对应wxss中写index-class类,可以定义这个链接被点击时候的样式

之前的颜色要在这个类上面定义(物理)

wxml默认组件以属性(内置)定义的都是在最后的

——————————————————————————————————————————

之后又学习了底端栏tabBar,在app.json中,有list,color,selectedcolor,list中至少包含两个部分,每一个部分中又包含text,pagePath,iconPath以及selectedIconPath四个部分。

——————————————————————————————————————————

<h2>第三讲</h2>

数据绑定:js的page中data中的数据,可以通过{{数据名}}的形式进行调用。

js中:

data: {  count:123 }

wxml中:

<text>{{count}}</text>

———————————————————————————————

wx:if{}的使用:

js中:

data: { thisindex: { istrue:true } },

wxml中:

<text wx:if="{{thisindex.istrue}}">juyue</text>

—————————————————————————————

wx:for{}的使用:

js data中:

thislist2 : [ { content:"zanmeitaiyang" },

{ content:"xianyoulaojuhouyoutian,taiyangqishirishenxian" },

{ content:"rongyaoshuyutianshengzhankuang"} ],

wxml中:

<view wx:for="{{thislist2}}">

<text>第{{index}}次循环</text>

<text>content:{{item.content}}</text>

</view>

{{index}}是微信小程序列表渲染的内置元素,从零开始,循环一次加一。同样的,也是要用{{}}来使用js中的数据。

_______________________________________

swiper(幻灯片)元素的使用:

在设置幻灯片宽高时,一般要在swiper元素上统一设置。

优化轮播图,看list.wxml中,为显示面板指示

<swiper indicator-dots="{{true}}">,

_______________________________________

生命周期函数:

onLoad:function(options) {  } 页面初始化时调用

onShow:function() {  } 每次的页面显示都要调用

onReady:function() {  } 初始化完成,整个视图准备好了可以开始交互的时候被调用

onHide:function() {  } 每次的页面隐藏都要调用

onUnload:function() {  } 每次页面被关闭或被卸载都要调用

——————————————————————————————————————————————————

this.setData()函数详解:

在小程序中对内部数据更新不能采用赋值的方式,必须调用小程序提供的this.setData这个方法

可以在逻辑层更新变量的同时更新视图层。

且可以根据需要新增变量(先到data中找变量,如果data中没有就自动创建一个新的变量),而且也不用

this.data.balabala了,可以读到data内部。详情见list页面的js部分

——————————————————————————————————————————————————

事件机制:响应用户交互

bindtap和catchtap的区别:

bindtap冒泡向上传递给父节点,在触发bindtap时如果父节点也有tap绑定的事件,则父节点会一起触发事件,catchtap不冒泡向上传递,只触发本节点的tap事件。

tap事件绑定的事件在js中写

_______________________________________

页面导航:

wx.navigateTo(Object object) :保留原有页面,可以返回原有页面

wx.redirectTo(Object object):不保留原有页面,是重定向

________________________________________________

组件的自定义属性:

在组件中 data-xxx-yyy,那么就可以把js中我们自己定义的数据传递给这个属性,我这里是这样的

data-test-id="{{item.id}}" ,这个属性就可以被封装在同节点的时间处理函数的event参数中传给js,后台可以通过

event.currentTarget.dataset.testId来获取上面这个例子的{{item.id}}.

作用就是可以将data中的数据动态的传递给事件处理函数,视图层只是相当于一个中介。

————————————————————————————————————————————————————————————————————

将原页面的数据传给navigateTo的页面:

在用url传参的时候,前面是路径,我在list.js中写的是绝对路径,?后面是对应的参数,参数与参数用&连接。

在导航到的页面,通过该页面的onLoad函数来获取url中的内容。

_______________________________________

wx.request函数:

success回调函数的res对象,

data属性中抽取了responsebody中的文本返回一个字符串,

header中的Content-Type类型是text/html,这时收到的responsebody中的文本直接以字符串的形式保存在data中,

若Content-Type返回的是一个Application JSON的形式,则responsebody中的文本以json格式返回,小程序会将这个文本处理成JavaScript的格式并保存到data中,如果是json对象,就处理成JavaScript对象,如果是json对象数组,就处理成JavaScript对象数组

——————————————————————————————————————————————————

调用外部API

,!!!外部api返回的数据会保存在success的res参数中,我们要做的就是将收到的数据保存到页面内部数据中!!!

请求的url是一个域名+uri的形式,,

把this用 var that = this 保留this对象,

因为在success回调函数中的this指针是指向这个success函数所指向的参数对象,

___________________________________________________________

在页面初始化的最后,也就是调用request方法之后,调用wx.showNavigationBarLoading() 这个api来显示loading动画。 在收到response,也就是收到外部数据之后,也就是在success回调函数里面,最后写wx.hideNavigationBarLoading()这个。

想动态设置标题,用下面这个,也是在success回调函数中 wx.setNavigationBarTitle({ title: ‘‘, })

___________________________________________________________

!!!在使用form表单传值的时候,一定要在input等组件中定义name属性作为key!!!

formSubmit: function (e) {

var formdata = e.detail.value.input;

var that = this;

wx: wx.request({

url: ‘http://baidu.com/a/b.jsp‘,

method: "GET",

data: { formdata },

header: { },

success: function (res) {

console.log("notice发送成功")

console.log(formdata)

that.setData({

responsedata: res.data

})

},

})

},

上面是我在notice中的例子。

——————————————————————————————————————————

小程序学习告一段落。

原文地址:https://www.cnblogs.com/qjqj0-0/p/11559480.html

时间: 2024-11-10 13:55:41

微信小程序:微信web开发阶段性学习总结的相关文章

微信‘小程序’: web前端的春天 or 噩梦?

最近大家看到这张图是不是都快吐了?这两天一睁眼就被这张图刷屏了 喵了咪的,点到哪里都是这个报道和新闻 最近因为工作 和生活略忙,爱吹文章的我,更新频率也低了,在这里抱个歉,希望大家理解和包容,希望"粉丝们"(装逼完成.跑-.),不要离开我这么帅的人! 此文观点声明先: 只通过技术角度分析讨论 [小程序]对程序员.web前端.后端人员技术路线的影响 不从产品角度 展望[小程序]以后的发展和方向– 这个都被媒体或专业市场分析人员分析烂了 「 微信应用号是什么?」 张小龙曾表示,用户关注一个

微信小程序的Web API接口设计及常见接口实现

微信小程序给我们提供了一个很好的开发平台,可以用于展现各种数据和实现丰富的功能,通过小程序的请求Web API 平台获取JSON数据后,可以在小程序界面上进行数据的动态展示.在数据的关键 一环中,我们设计和编写Web API平台是非常重要的,通过这个我们可以实现数据的集中控制和管理,本篇随笔介绍基于Asp.NET MVC的Web API接口层的设计和常见接口代码的展示,以便展示我们常规Web API接口层的接口代码设计.参数的处理等内容. 1.Web API整体性的架构设计 我们整体性的架构设计

说说 PWA 和微信小程序--Progressive Web App

作者:云图图链接:https://zhuanlan.zhihu.com/p/22578965来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 利益相关:微信小用户,谷歌小员工 微信发布了微信小程序,虽然还在内测阶段,但是无论从技术上,还是以后要不要开发原生应用(native app)上引发了不少讨论.其实看到微信小程序的消息, 我第一时间想到的是 Google 之前推出的PWA(Progressive Web App),两者的目的是类似的(伪原生应用),但是形式却又

整合微信小程序的Web API接口层的架构设计

在我前面有很多篇随笔介绍了Web API 接口层的架构设计,以及对微信公众号.企业号.小程序等模块的分类划分.例如在<C#开发微信门户及应用(43)--微信各个项目模块的定义和相互关系>介绍了相关模块的划分,在<基于微信小程序的系统开发准备工作>介绍了Web API的架构设计思路.本篇随笔对之前介绍的架构内容进行统一的调整更新,以便更加方便实际项目的应用开发,以期达到统一.重用.清晰的目的. 1.公众号.企业号.小程序模块的划分 我们知道,目前微信企业应用,分为公众号.企业号(企业

微信小程序image组件开发程序以及相关图片问题参考资料汇总

微信小程序image组件开发程序以及相关图片问题参考资料汇总,希望对大家小程序开发能有一定的参考和借鉴价值.以下汇总主要涉及到微信小程序image组件有关资源路径.缩放和剪裁模式等进行的探讨,无论是对微信小程序新手还是正在开发中的朋友都是很好的小程序学习资料. 微信小程序image组件必备基础知识: image组件默认宽度300px.高度225px image的属性mode有13种模式,其中4种是缩放模式,9种是裁剪模式 image组件开发教程汇总: 微信小程序自定义组件实现图片单指拖动.双指缩

微信+小程序购物系统开发微信小程序营销系统开发

行业+小程序的结合有无限可能性,想要玩转微信小程序,享受流量盛宴,可借助--河南鼎汉科技,帮您快速打造具有个性化特色的微信小程序.微信小程序系统开发平台.微信小程序购物商城系统开发1.8.8-3.8.07-6.8.0.5电/微, 微信小程序 微商城 微信小程序营销系统开发,微信公众平台订阅号,微信小程序购物商城系统开发定制. 在移动互联网时代从来不缺分销系统,随着移动电商.传统电商.传统商业企业纷纷进入社交电商领域,社交电商正在向专业平台化.团队规模化.渠道立体化.运作规范化等趋势发展.微信"小

微信小程序+微信管理后台+微信用户前台

代码地址如下:http://www.demodashi.com/demo/15043.html #### 微信小程序+微信管理后台+微信用户前台 #### 产品介绍 基础功能开发:景区微信地图导游.天气及景点相关资讯微信提醒.项目适玩人群识别与推荐.会员功能.景区美食预订功能.停车付费功能.票价信息查询设置.免费WiFi连接设置. 微信小程序:开发一款用于门票销售的小程序,让用户无需关注,直接一键购票,提供快捷.便利的线上购票服务. #### 项目结构 hqc_mini_app 微信小程序相关文

基于微信小程序的系统开发准备工作

腾讯推出微信小程序也有一段时间了,在各种行业里面也都掀起一阵阵的热潮,很多APP应用被简化为小程序的功能迅速推出,同时也根据小程序的特性推出各种独具匠心的应用,相对传统的APP来说,微信小程序确实能够大大降低开发成本和难度,但也意味着需要掌握整个微信小程序的各种接口功能.应用场景等相关技术点,本篇随笔先从大的方面来介绍微信小程序开发的一些知识,如架构设计.技术路线 .工具准备等方面做一些浅薄的介绍,希望大家也有所收益,有所借鉴,则善莫大焉. 1.小程序的统一架构设计 在我们开发各种应用的时候,总

[微信小程序直播平台开发]___(一)介绍与流程

1.一个可以忽略的前言 最近在做的一个项目,客户要做一个直播平台,主播发起视频直播,然后其他人进入房间观看这样子,跟其他直播平台不同的是,主播可以打赏观众,噗,不过这些千奇百怪的想法我也见怪不怪了,而且也不是技术难点所在. 因为客户要做的是一个民宿的微信小程序,所以这个直播发起也是在微信小程序中完成的,好在后来查到微信小程序中有这种组件,之前想说用H5来做但是发现在移动端不同型号的兼容性问题非常不理想基本放弃了, 还有一种方式就是做个app了,但这就在我的知识范围之外了,用webApp的话也没找