微信小程序之旅
https://mp.weixin.qq.com/debug/wxadoc/dev/devtools/download.html?t=2018315
学习vue后开发小程序的感觉会爽到飞起
1) Flex是Flexible Box的缩写,意为”弹性布局”,用来为盒状模型提供最大的灵活性。
2) 任何一个容器都可以指定为Flex布局。
3) display: ‘flex’
1) flex-direction:
row(默认值):主轴为水平方向,起点在左端。
row-reverse:主轴为水平方向,起点在右端。
column:主轴为垂直方向,起点在上沿。
column-reverse:主轴为垂直方向,起点在下沿。
http://www.runoob.com/w3cnote/flex-grammar.html
1) 屏幕的分辨率
2) 设备能控制显示的最小单元,可以把物理像素看成是对应的像素点
设备独立像素(也叫密度无关像素),可以认为是计算机坐标系统中的一个点,这个点代表一个可以由程序使用并控制的虚拟像素(比如:CSS 像素,只是在android机中CSS 像素就不叫”CSS 像素”了而是叫”设备独立像素”),然后由相关系统转换为物理像素。
1) dpr: 设备像素比,物理像素/设备独立像素 = dpr, 一般以Iphon6的dpr为准 dpr = 2
2) PPI: 一英寸显示屏上的像素点个数
3) DPI:最早指的是打印机在单位面积上打印的墨点数,墨点越多越清晰
Iphon6: 1rpx = 1物理像素 = 0.5px
微信官方提供的换算方式:
视网膜屏幕是分辨率超过人眼识别极限的高分辨率屏幕,由苹果公司在2010年在iPhone 4发布会上首次推出营销术语。
Iphone的dpr = 2; 人类肉眼分辨的极限
问题: Iphone6的dpr为多少?Iphone6Plus比Iphone6显示图像清晰吗?
A. App.wxml
B. App.wxss
C. App.js
D. App.json
<view class='container'>
|
page { width: 100%; height: 100%; background: #C5EFFF; } .container { display: flex; flex-direction: column; align-items: center; }
.container image { width: 200rpx; height: 200rpx; border-radius: 100rpx; margin-top: 160rpx; }
.username { font-size: 32rpx; font-weight: bold; margin-top: 100rpx; }
.start_container { width: 200rpx; height: 80rpx; margin-top: 200rpx; border: 1px solid #405f80; text-align: center; border-radius: 10rpx; }
.start_container text { font-size: 22rpx; font-weight: bold; line-height: 80rpx; color: #405f80; }
|
{ "pages": [ "pages/index/index" ], "window": { "navigationBarBackgroundColor": "#C5EFFF" } }
|
1) 思想: 同Vue一样数据可以初始化在当前页面的管理内存的data中,页面中使用数据会自动去data里找
2) 初始化数据: 当前页面的js文件
Page({
/** * 页面的初始数据 */ data: { msg: '开启小程序之旅' }, }) |
this.setData({ msg: '我是修改之后的数据' })
|
Page({
/** * 页面的初始数据 */ data: { msg: '开启小程序之旅' },
/** * 生命周期函数--监听页面加载 */ onLoad: function (options) {
},
/** * 生命周期函数--监听页面初次渲染完成 */ onReady: function () {
},
/** * 生命周期函数--监听页面显示 */ onShow: function () {
},
/** * 生命周期函数--监听页面隐藏 */ onHide: function () {
},
/** * 生命周期函数--监听页面卸载 */ onUnload: function () {
},
/** * 页面相关事件处理函数--监听用户下拉动作 */ onPullDownRefresh: function () {
},
/** * 页面上拉触底事件的处理函数 */ onReachBottom: function () {
},
/** * 用户点击右上角分享 */ onShareAppMessage: function () {
} })
|
1) 文档查看位置: API---> 开放接口
2) 代码示例:
// 获取登录用户的数据 wx.getUserInfo({ //withCredentials: true, success: (res) => { console.log(res); let user = res.userInfo; this.setData({ user }) } })
|
1) 冒泡事件
a) 定义:冒泡事件:当一个组件上的事件被触发后,该事件会向父节点传递。
b) 冒泡事件列表:
https://mp.weixin.qq.com/debug/wxadoc/dev/framework/view/wxml/event.html
a) 定义:当一个组件上的事件被触发后,该事件不会向父节点传递。
b) 非冒泡事件:表单事件和自定义事件通常是非冒泡事件
https://mp.weixin.qq.com/debug/wxadoc/dev/framework/view/wxml/event.html
1) bind绑定:事件绑定不会阻止冒泡事件向上冒泡
<view bindtap="handleTap" class='start_container' bindtap="handleTap">
|
2) catch 绑定: 事件绑定可以阻止冒泡事件向上冒泡
<view catchtap="handleTap" class='start_container' bindtap="handleTap">
|
// 跳转到list页面 wx.navigateTo({ url: '/pages/list/list', success(){ console.log('跳转成功'); } })
|
// 跳转到list页面 wx.redirectTo({ url: '/pages/list/list', success(){ console.log('跳转成功'); } })
|
1) list.wxml
2) list.wxss
3) list.js
4) list.json
<view> <swiper indicator-dots='true' indicator-color='deepPink'> <swiper-item> <image src='/images/detail/carousel/iqiyi.png'>image> swiper-item> <swiper-item> <image src='/images/detail/carousel/vr.png'>image> swiper-item > <swiper-item> <image src='/images/detail/carousel/wx.png'>image> swiper-item > swiper> view>
|
1) 定义模板: name=‘模板名字’
<template name='listTemplate'> <view> <text>tempalte contenttext> view> template>
|
2) 使用模板
<import src="./detail_template/detail_item_template.wxml" />
|
@import '../templates/list-template.wxss'; |
1) 存数据:setStorage, 同步: setStorageSync
// 数据存储 wx.setStorage({ key: 'isCollected', data: oldCollectFlag })
|
let oldCollectFlag = wx.getStorageSync('isCollected'); |
1) API: wx.playBackgroundAudio
2) 示例:
wx.playBackgroundAudio({ dataUrl: detailObj.music.dataUrl, title: detailObj.music.title, success() { console.log('音乐播放成功'); } });
|
1) API: wx.pauseBackgroundAudio
2) 示例:
wx.pauseBackgroundAudio |
1) 监听播放API: wx.onBackgroundAudioPlay
2) 监听暂停API: wx.onBackgroundAudioPause
2) 示例:
wx.onBackgroundAudioPlay(() => { console.log('音乐播放'); // 注意真机上音乐播放监听只能执行一次。 this.setData({ isMusicPlay: true }) // 修改app数据记录是否播放和播放页面的下标 appDatas.appData.isPlay = true; appDatas.appData.playPageIndex = this.data.index; })
// 监听音乐是否暂停 wx.onBackgroundAudioPause(() => { console.log('音乐暂停'); this.setData({ isMusicPlay: false }) appDatas.appData.isPlay = false; appDatas.appData.playPageIndex = this.data.index; })
|
1) 存取数据
App({
|
2) 读取数据
let app = getApp(); app.data.isPlay = false; |
备注:app方法配置对象中的属性和方法均为app应用实例的属性和方法
1) 事件委托给父元素:swiper
<swiper catchtap='imgToDetail' indicator-dots='true' indicator-color='deepPink'> <swiper-item> <image data-detailId='{ {4}}' src='/images/detail/carousel/01.jpg'>image> swiper-item> <swiper-item> <image data-detailId='{ {5}}' src='/images/detail/carousel/02.jpg'>image> swiper-item > <swiper-item> <image data-detailId='{ {6}}' src='/images/detail/carousel/03.jpg'>image> swiper-item > swiper>
|
1) data-’传递数据key’ = value
1) target指向的是触发事件的元素
2) currentTarget指向的是捕获事件的元素
wx.request({ // 发送请求
|
备注:
let appData = getApp(); // 获取app中的数据对象 onLoad (options) {
|
let appData = getApp(); onLoad: function (options) { |