本文是在阅读雷磊老师的《微信小程序开发 入门和实践》以后总结的笔记。css
第一章 微信小程序简介android
1、微信小程序:一种不须要下载安装便可使用的应用ios
第二章 小程序环境搭建与开发工具介绍json
1、微信Web开发者工具小程序
2、新建第一个项目微信小程序
(一)打开开发者工具,登录微信号安全
(二)点击小程序项目微信
(三)在填写AppID时,须要注意,它表明微信雄小程序的id号,必须拥有微信小程序帐号才能够申请这个id号。能够去https://mp.weixin.qq.com注册申请帐号。app
(四)那么开始建立项目,因为某种缘由,先建立一个无appId的项目框架
(五)简单介绍一下项目配置
若是开启了此项,开发工具将不会校验安全域名以及TLS版本,更方便调试;若是想要使用appid模式,又想要方便调试,开启此项
(六) 快捷键:
第三章 开始小程序
1、 每次建立一个新页面时,都须要手动建立一个目录+4文件,这时在app.json中添加路径,就会自动建立这些
{
"pages":[
"pages/welcome/welcome",
"pages/orange/orange"
]
}
要是使.wxml文件中的文字显示出来,要求:1. .js文件不为空,调用其自己的方法
Page({
}) 2. .json文件不能为空 { }
2、 构建welcome页面的元素和样式
1.<view> 一般做为容器来使用,
3、 最好不要将图片资源放在项目目录中,微信小程序大小不能超过1MB
4、 小程序中所支持的css选择器:六种
1..class
2.#id
3.Element 选择全部view组件
4.Element,element 选择全部文档的view组件和的checkbox组件
5.::after 在view组件后边插入内容
6.::before 在view组件前边插入内容
5、 Flex布局
1.宗旨是使页面布局更加简单,能够更好的支持响应式布局
2.Flex-direction这个属性指定view内元素的排列方向
(1)row 主轴为水平,自左而右
(2)cloumn 主轴为垂直,自上而下
(3)row-reverse 主轴为水平,自右而左
(4)column-reverse 主轴为垂直,自下而上
3.align-items属性定义子元素在交叉轴上如何对齐,特别注意,他定义的是交叉轴这个方向上的子元素的对齐方式。
4.小程序自适应单位rpx介绍
(1) 在iPhone 6标准下,1物理像素=1rpx=0.5px
(2) rpx可使组件自适应屏幕的宽度和高度,但px不会
5.全局样式文件app.wxss 是为全部页面设置“默认样式”。
6.页面的根元素Page,设置整个页面的样式,属性,这样的话,他就不会随着组件的设置样子
page{
}
7.app.json中的window配置项
(1)“window”:{“navigationBarBckgroundColor:’#ffffff’” }这样设置导航栏,不是被隐藏,只是换了颜色
(2)它的属性还有 :
①navigationBarTextStyle 配置导航栏文字颜色,只支持black/white
②navigationBarTitleText 配置导航栏文字内容
③backgroundColor配置窗口颜色
④backgroundTextStyle 下拉背景字体,支持dark/light
⑤enablePullDownRefresh 是否开启下拉刷新
须要往小程序中加入图片时,必定要在对应文件夹下进行复制,不能在开发者工具里面ctrl+c 和ctrl+v
第三章 文章列表页面
1、Swiper组件
1.自带轮播图效果的组件
<view>
<swiper>
<swiper-item>
<image src='/images/post/city.jpg'></image>
</swiper-item>
<swiper-item>
<image src='/images/post/butterfly.jpg'></image>
</swiper-item>
<swiper-item>
<image src='/images/post/desert.jpg'></image>
</swiper-item>
<swiper-item>
<image src='/images/post/flowers.jpg'></image>
</swiper-item>
</swiper>
</view>
2.还能够设置swiper的样式,以及image的样式,可是swiper和image的宽高要同时设置,才能够达到预期的效果
3.Swiper的一些属性
(1)indicator-dots='true' 用来显示面板上的指示点,默认时false
(2)autoplay='true' 用来决定是否自动播放
(3)interval='5000' 切换的时间间隔
(4)Circular=”true” 使轮播图循环滚动
4.切换方式能够经过拖动图片切换,也能够经过点击面板指示点切换
5.vertical='true',表示轮播图的指示点竖直排列
6.Boolean的陷阱,当须要设定属性值为false时,就应该写成空字符串的形式。
2、构建文章列表的骨架和样式
1.Image组件的4种缩放模式
(1)scaleToFill 按比例填充,默认模式,不保持纵横比缩放图片,使图片的宽高彻底拉伸至填满image元素
(2)aspectFit 方位固定,保持纵横比缩放图片,使图片的长边能彻底显示出来。也就是说,能够完整的将图片显示出来
(3)aspectFill 方位填充,保持纵横比缩放图片,只保证图片的短边能彻底显示出来。也就是说,图片一般只在水平和垂直方向是完整的,另外一个方向将会发生截取
(4)widthFix 宽度不变,高度自动变化,保持原图宽高比不变
2.9种裁剪模式,不会缩放图片的
(1)Top
(2)Bottom
(3)Center
(4)Left
(5)Right
(6)Top left
(7)Top right
(8)Bottom left
(9)Bottom right
3.页面的生命周期 post.js
// pages/post/post.js
Page({
/**
* 页面的初始数据
*/
data: {
},
/**
* 生命周期函数--监听页面加载
*/
onLoad: function (options) {
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady: function () {
},
/**
* 生命周期函数--监听页面显示
*/
onShow: function () {
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide: function () {
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload: function () {
},
/**
* 页面相关事件处理函数--监听用户下拉动做
*/
onPullDownRefresh: function () {
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom: function () {
},
/**
* 用户点击右上角分享
*/
onShareAppMessage: function () {
}
})
4.数据绑定
(1)初始化数据绑定显示数据
Post.js--------------------------------》
data: {
object:{
date: "May 18th 2019",
},
title:"小时候的冰棍与雪糕",
postImg:"/images/post/flower.jpg",
avatar:"/images/avatar/avatar-1.png",
content:" 6.Boolean的陷阱,当须要设定属性值为false时,就应该写成空字符串的形式。6.Boolean的陷阱,当须要设定属性值为false时,就应该写成空字符串的形式。",
//readingNum:"108",
//collectingNum:"92",
commentNum:{
array:[108,22,11]
},
Post.wxml--------------------------------》
<view class='post-author-date'>
<image src="{{avatar}}"></image>
<text class='post-date'>{{object.date}}</text>
</view>
<text class='post-title'>{{title}}</text>
<image class='post-image' src='{{postImg}}' mode='aspectFill'></image>
<text class='post-content'>
{{content}}
</text>
<view class='post-like'>
<image src='/images/post/city.jpg'></image>
<text>{{commentNum.array[2]}}</text>
<image src='/images/post/city.jpg'></image>
<text>{{commentNum.array[1]}}</text>
<image src='/images/post/city.jpg'></image>
<text>{{commentNum.array[0]}}</text>
</view>
(2)数据绑定更新
setData函数来作数据绑定,这个方法位于Page对象的原型链上:Page.prototype.setData.
setData的参数接受一个对象,以key和value的形式将this.data中的key对应的值设置成value
注意:setData会改变this.Data变量相同key的值,
setData执行后,会通知逻辑层执行Rerender,并马上从新渲染视图。
5.页面的json文件配置和app.json文件的配置有什么不一样
(1)页面json只可以配置和window相关的属性。但app.json除了能配置window外还能够配置pages,tabBar等选项
(2)页面的json配置不须要像app.json那样,加上window选项,直接编写window下面的配置项便可
6.跳转页面
(1)什么是事件
事件是视图层(wxml)到逻辑层(js)的通讯方式。
属性:catchTap
(2)关于跳转
wx.redirectTo 将关闭当前页面,跳转至指定页面
wx.navigateTo 保留当前页面,跳转至指定页面
wx.switchTap 只能用于跳转到带tabbar的页面,并关闭其余全部非tabBar页面
重点:redirectTo和navigateTo 的区别
使用方式相同,都要注意url的页面路径,不须要加上跳转文件的扩展名
Object参数能够接收三个方法,
success:页面跳转成功时,MINA框架将调用此函数
fail:页面跳转失败时,MINA框架将调用此函数
complete:页面跳转成功或失败时,MINA框架将调用此函数
7.冒泡事件与非冒泡事件
冒泡事件是指某个组件上的事件被触发后,事件还会向父级元素传递;父级元素还会继续向父级的父级传递,一直到页面的顶级元素。
非冒泡事件则不会向父级元素传递事件
常见的冒泡事件
(1)touchstart 手指触摸动做开始
(2)touchmove手指触摸后开始移动
(3)touchcancel手指触摸动做被打断,如来电提醒,弹窗
(4)tap手指触摸后立刻离开
(5)longtap手指触摸后,超过350ms再离开
8.在wxml里面注册组件,须要在事件名以前添加catch或者bind前缀
9.bind和catch的区别
对于以上几个冒泡事件,catch将阻止事件继续向父节点传播,而bind不会阻止事件的传播。
10.某些组件特有的事件
(1)<form>的submit
(2)<input>的input
(3)<scroll-view>的scroll事件