前台、后台定义:当用户点击左上角关闭,或者按了设备home键离开微信,小程序并无直接销毁,而是进入了后台;当再次进入微信或再次打开小程序,又会从后台进入前台
(6)当使用重定向方法wx.redirectTo(OBJECT)或关闭当前页返回上一页wx.navigateBack(),触发onUnload
4、小程序限制json
4.1 程序限制
(1)js内不能使用window等对象 ps:小程序页面的逻辑是在jsCode下运行,jsCode是没有窗口运行环境
(2) zepto/jquerry 会使用到window对象和document对象,因此没法使用
(3)样式表不支持级联选择器
(4)本地资源没法经过css获取 background-image 可使用网络图片,或者 base64 ,或者使用标签
(5)不支持A标签,没法打开普通网页
4.2 数量限制
(1)底部或顶部能够添加tab按钮区域tabBar是一个数组,只能配置最少2个、最多5个tab,tab按数组的顺序排序
(2)一个应用同时只能打开5个页面
(3)小程序的wx.request请求最大并发数是10个
4.3 大小限制
(1)tabBar上的按钮iconPath图片路径,icon大小限制为40kb
(2)tabBar上的按钮 selectedIconPath 选中时的图片路径,icon大小限制也是40kb
(3)setData页面单次传递的数据设置不能超过1024kb
(4)setStorage在本地最大缓存为10MB
(5)小程序源码打包后大小限制为1M
没登陆腾讯视频以前 |
点击登陆会跳转到当前页 |
没登陆发弹幕时 |
会弹出登陆框,登陆时候就能发 |
(2)页面设置为tab页,那么只支持wx.switchTab,其它两种接口不支持路由接口访问(1)微信路由有wx.redirectTo、wx.navigateTo和wx.switchTab接口。其中wx.navigateTo在全局最多调用五次
5.1 在什么状况下会触发页面跳转
(1)启动时,初始化第一个页面
(2)打开新页面,当打开新页面时会调用API wx.navigateTo 或使用 <navigator /> 组件
(3)页面重定向,会调用API wx.redirectTo 或使用<navigator /> 组件
(4)页面返回,会调用API wx.navigateBack 或用户按左上角返回按钮
(5)tarbar切换
5.2 如何跳转页面
(1)使用wx.navigateTo 接口跳转,原页面保留
wx.navigateTo({
// 将要跳转的页面
url:"pages/logs/index",
success:function(res){},
..
})
(2)使用wx.redirectTo 跳转,关闭原来的页面,不能返回
wx.redirectTo({
// 将要跳转的页面
url:"pages/logs/index",
success:function(res){},
..
})
(3)点击返回按钮时,程序会调用wx.navigateBack接口返回上一页
wx.navigateBack({
delta:1
})
delta为1表示返回上页面,为2时,表示上上页,以此类推;若是delta大于已打开页面的总页数,则返回首页,返回首页以后,原界面会销毁
(4)使用 navigator 组件跳转
<navigator url='pages/logs/index' hover-class='navigator-hover'>跳转</navigator>
当navigator组件添加redirect属性时,等同于wx.redirectTo接口。默认redirect属性为false,等同于navigateTo接口
当页面跳转时会传一个值:url?key=value&key1=value1
5.3 如何正确使用页面跳转 ps:官方规定最多五个页面同时存在,也就是说页面深度为5
(1)对于可逆操做:使用 wx.navigateTo ,例:从首页跳转到二级页面,从二级页面返回是不须要从新渲染首页
(2)对于不可逆操做(没法返回上一级页面):使用wx.redirectTo。例:用户登陆成功后不须要返回登陆页面 ps:在首页不能使用wx.redirctTo
(3)对于介绍性等不经常使用的页面。推荐使用wx.redirectTo或wx.navigatrBack
5.4 页面栈
(1)页面栈以栈(先进后出)的形式维护页面与页面的关系
(2)小程序提供了 getCurrentPages() 函数获取页面栈,第一个元素为首页,最后一个元素为当前页面
使用wx.navigateTo每新打开一个页面,页面栈大小加1,直到页面栈大小加到5为止 (页面栈最大为5)
wx.navigateTo和wx.redirctTo的区别以下:
wx.navigateTo重复打开页面 例:
当使用wx.navigateTo从四级页面跳转到二级页面时,会在页面栈顶添加一个与二级页面初始状态同样的界面。这两个页面时相互独立的。页面栈大小会加1,当大于5时,则wx.navigateTo无效
使用wx.redirctTo从四级页面重定向到二级页面时,此时会关闭四级页面,四级页面会替换成二级页面,两个页面相互独立,页面栈大小不会所以而改变
使用wx.navigateBack返回
它们三个的区别:
方法 |
区别 |
wx.navigateTo |
增长页面栈大小,直至页面栈为5时中止跳转 |
wx.redirectTo |
不会改变页面栈大小 |
wx.navigateBack |
减小页面栈大小,直到页面栈为1时中止返回 |
使用wx.navigateTo方法跳转 例:
.wxml文件
<button bindtap='click'>运行</button>
.js文件
page({
click:function(){
wx.navigateTo({
url: '../index/index' //跳转到index页面
})
6、数据通讯
setData :把获取到的信息经过 setData 显示到页面上
6.1 页面之间的通讯
// A页面-传递数据 // 须要注意的是,wx.switchTab 中的 url 不能传参数。 wx.navigateTo({ url:'../pageD/pageD?name=raymond&gender=male' }) // B页面-接收数据 经过onLoad的option...
page({
onLoad:function(option){
console.log(option.name + 'is' + option.gender) //raymond is male
this.setData({
option:option
})
}
})
6.2 参数传递
6.2.1 小程序传递参数的方式
1.App.js中设置全局变量
app.js的Data一般放不会更改的数据,在每一个页面能够经过APP实例获取Data数据
var app = getApp();
var data = app.data;
2.经过拼接URL直接传递
wx.navigateTo({})中携带参数
wx.navigateTo({
url:'test?id=1'
})
在wxml中使用navigator标签中携带URL参数 例:
<navigator class='test-item' url='pages/logs/index?testId={{testData.testId}}'>跳转</navigator>
说明:将要传递到另外一个页面的字符串testId的赋值到URL中
在js页面中使用onLoad方法接收
page({
onLoad:function(options){
var testId = options.testId
console.log(testId)
}
})
navigator跳转URL传递数组
若是一个页面以数组为参数进行传递,如:相册列表传递到另外一个页面
<navigator class="test-item" url="../../pages/test/test?testId={{testData.testId}}"></navigator>
在js页面中onLoad方法接收
page({
data:{
//相册列表数据
albumList:[]
},
onLoad:function (options) {
var that = this;
that.setData({
albumList:options.albumList.split(",") //albumList为相册列表数据
})
}
})
3.在wxml中绑定事件后,经过data-hi="参数"的方式传递 ps:若是须要传递多个数据,使用data-[参数]的方式进行传递
<view bindtap="clickMe" data-testId="{{testId}}">
</view>
在js页面使用自定义clickMe方式接收
page({
clickMe:function(event){
var testId = event.currentTtarget.dataset.testid;
wx.navigateTo({
url:'../../pages/test/test'
})
}
})
wxml中配置data-albumlist传递数组
<view bindtap="clickMe" data-albumlist="{{testData.albumlist}}">
</view>
js代码
page({
clickMe:function(){
// 打印出来为字符串,因此还要从新组装成数组
var albumlist = event.currentTarget.dataset.albumlist.split(","); //albumList为相册列表数据
wx.navigateTo({
url:'../../pages/test/test'
})
}
})
4.经过数据缓存存储再获取
存储数据:wx.setStroageSync(KEY,DATA) 获取数据:wx.setStroageSync(KEY)
//缓存
try {
wx.setStorageSync('key','value')
}catch (e){
}
// 再获取
try {
var value = wx.getStorageSync('key')
if(value) {
// 返回的值
}
}catch(e){
// 可能出错的值
}
// 或使用
wx.getStorage({
key:'key',
success:function(res){
console.log(res.data)
}
})