1、通常情况下小程序的背景色backgroundColor要和页面的颜色设置成同一颜色。
2、justify-content 设置的是主轴上的对齐方式,而align-items 设置的是交叉轴上的对齐方式。通过观察flex-direction的值来判断 竖直方向还是水平方向哪一条是主轴。若flex-direction: column;那么竖直方向上为主轴,若flex-direction:row,那么水平方向上为主轴。
3、当一行内所有元素的宽度相加超过屏幕的宽度时,flex布局会将每一个元素进行压缩,以保证所有的元素都能显示在同一行内。为了让元素换行,可以使用flex-wrap: wrap。
4、小程序中的像素单位rpx可以根据设备的屏幕进行自适应。若一个字体设置成22px,那么不管设备是IP5还是IP6都会显示同样大的字,但是使用了rpx作为单位之后,在IP5上显示的字会小于IP6上的字。
5、在全局样式表(app.wxss)中定义的样式,只有font和color才会被组件继承,其他的样式都不会被组件继承(这样确保了组件的封闭性)。但是几乎所有的样式都可以被page给继承。
6、在设计组件时,尽量不要让组件产生一些无意义的空白。
7、使用bind:tap="onClick"来为页面元素绑定响应时间,此处为单击事件。
catch:tap可以阻止冒泡事件。
8、组件复用,代码分离。
9、一般不会将请求后台的代码写在组件中。如果组件中需要请求后台了应该是model的文件夹内创建相应的JS文件去请求后台,例如demo中的like.js。
10、在小程序的JS文件中,声明的data对象是该js文件中的私有变量,properties是公开的属性,外部可以访问,如果需要从外部传递进来,那么就需要将属性声明在properties中。不要在data和properties中声明相同的变量,那样会覆盖掉其中的一个变量。
11、修改data对象中的属性要使用this.setData方法来设置。
12、不要在properties的属性中,修改属性本身的值。
index: {
type: Number,
observer: function(newVal, oldVal, changedPath) { //当组件的值被改变时,会主动的调用observer
//newVal:改变之后的值。
//oldVal:改变之前的值。
let val = newVal < 10 ? ‘0’ + newVal : newVal;
this.setData({
index:val//错误的写法。会导致内存泄漏。
});
}
}
13、在小程序中使用缓存的时候,要确定哪些部分是可以被缓存的,哪些是不能缓存的。(页面会实时发生变化的内容就是不能被缓存的)
14、小程序内置的标签是可以使用hidden=“{{true}}”属性来控制其显示与否的。但是开发者自己编写的组件就无法使用hidden属性来控制其显示或影藏(除非放在自己开发组件的所在WXML文件的view标签内)。
可以使用 wx:if="{{true}}" 来控制自己编写的组件的隐藏与否。
如果需要频繁的切换组件的显示或隐藏,那么微信官方推荐使用hidden,而如果不是频繁切换的话,那么微信官方推荐使用wx:if来控制组件的显示或隐藏。
15、在老板小程序中存在模板template这个概念,在template中可以提取共用的wxml和wxss内容实现组件的元素共用。新的小程序中,可以创建一个common.wxss文件。然后再所要引用的wxss文件中,使用@import “…/common.wxss”;将样式导进来
在小程序中播放音乐有两种方式,老的那种方式存在一定的bug,建议采用新的播放方式:背景音乐播放管理wx.getBackgroundAudioManage()来做。
16、小程序中的behavior可以多继承,当父类中存在一个属性,并且子类中也声明了该属性时,子类中的属性会覆盖掉父类中的那个属性(两个属性的名字相同,但是类型不同)。但是声明周期函数不会覆盖,而是以此执行。
17、使用 @import “…/common.wxss”; 可以为wxml文件引入公用的样式。
18、16和17分别解决了在小程序中复用js和wxss的问题,在wxml也可以通过模板的方式进行复用,但是在组件中复用wxml的话带来的意义并不是特别的大。
19、navi组件和music组件之间的通信,可以通过classic组件进行传递。子组件(navi)通过事件的方式将数据传递给父组件(classic),然后父组件再传递给另外一个子组件(music)。
20、wx:key 如果wx:for后面遍历的是一个object,可以使用object下的某一个属性来作为wx:key的取值,且该属性需要满足不重复且是数字或者是字符串。如果wx:for需要遍历的是一个数组或者字符串的话,那么wx:key后面的取值是*this。
21、在小程序中使用wx.navigateTo()进行小程序页面的跳转。让组件去进行页面的跳转会降低组件的通用性。如果在主页面中进行跳转,需要在组件的js文件中使用triggerEvent将组件内的参数传递到主页面,再在主页面中进行页面跳转。如何取舍?如果编写的组件不会和其他的项目进行共用,那么就可以在组件内部进行页面跳转。
22、组件之间的传参是通过properties中的属性进行传参的。而页面之间的传参是通过onload生命周期函数的options参数中。const id=option.id。就能接收到从外部传入的id了。
23、slot,插槽。感觉上像是一个占位符,可以在组件的外部向组件内部传递一个wxml标签。如果不传递,也不会有任何的显示。
在组件中需要声明属性
options:{
multipleSlots:true
},
<view class=‘container’>
<text>{{text}}</text>
<slot name=“after”></slot> //这里预留一个插槽。
</view>
使用的时候需要将传入的标签,包裹在组件标签的内部:
<block wx:for="{{comments}}"> //block用于循环,不是slot的相关知识点。
<v-tag text="{{item.content}}">
<text slot=“after”>{{’+’+item.nums}}</text> //after是插槽的名字。
</v-tag>
</block>
24、在v-tag标签中加入属性 tag-class=“ex-tag”,然后在tag组件的js文件中写上externalClasses:[‘tag-class’],然后在再tag.wxml文件的view标签中增加class=‘tag-class’,这样就可以引入外部样式了。如果标签中存在多个样式,那么可能会造成冲突。样式加不上去。如果外部样式想要覆盖普通样式,可以使用!important就可以覆盖普通样式了。
.ex-tag{
background-color:#effbdd !important;
}
25、WXS相当于在html标签中直接调用JS代码,可以用来写小程序的过滤器。小程序中的WXS只支持ES5的语法。WXS中文本并不默认解析转义字符例如 。当需要解析这些转义字符时,可以在调用过滤器的标签上添加属性decode。例如:<text class=‘content’ decode=’{{true}}’>{{util.format(book.summary)}}</text> 中的 decode=’{{true}}’
26、下滑加载更多有两种实现方式:scroll-view和Page的onReachBottom,推荐使用onReachBottom。onReachBottom在组件中无法使用,所有要在Page中使用,并结合12点中的observer来实现下滑后,加载更多内容的动作。(在组件中定义一个属性,然后生成随机字符串或者随机数,在page中每次触发onReachBottom后,更改组件中属性的值,从而使用observer)。
27、小程序中,属性的名字尽量不要用驼峰命名法。在js中声明了一个属性openType,在wxml文件中使用的时候,使用连字符来调用。open-type=“xxxx”。
28、获取授权:老版本使用wx.getUserInfo来弹窗询问是否授权。新版本需要使用小程序中的组件button来获取授权。
在.wxml文件中,使用<button open-type=“getUserInfo” bindgetuserinfo=“getUser”>授权</button>