1 环境配置文件
project.config:配置项目名称、版本号什么的,自动生成,一般不需要修改,有需要再修改。
2 page 文件夹
wxml:相当于html
wxss:相当于css
json:配置文件,可以没有
js:页面js代码
新建页面:****
1.1 wxml 文件****
标签相当于
,更多组件查看开发文档。绑定数据 : <view> {{ date}} </view>,{{}}中的数据来源于对应js文件中的data中的数据,例如:在js文件中定义 data: { date: 'Sep 18 2016' }。这种数据绑定是单向的,更改了页面的值,js中的值不会自动改变。{{}}中可以是变量,也可以是表达式。
条件语句: wx:if、wx:elif、wx:else,例如
1
2
3
循环语句: wx:for wx:for-item ,使用block结构快包装,例如
{{item.index}}:
{{item.name}}
交互事件:产生事件、捕捉事件、回调函数、处理事件 。点击事件使用catchtap或者bindtap,bindtap会进行冒泡,catchtap不会冒泡。
自定义变量: 使用前缀data-加变量名 例如data-post-id
在js文件中进行处理事件响应函数
onClickTap:function(event){
var postId = event.currentTarget.dataset.postId;//获取自定义变量
wx.navigateTo({
url: 'post-detail/post-detail?id=' + postId,
})
}
template 模板:****
1. 新建模板文件wxml及wxss文件,在wxml文件中添加模板,使用 标签,name属性定义标签的名字,例如:
- 在wxss文件中添加模板样式
.stars-container{
display: flex;
flex-direction: row;
}
- 引用模板template,is属性是等于所引用模板的name,data是传到模板中的数据。
//引用样式文件
//使用样式
- 引用模板样式
@import "../stars/stars-template.wxss";
1.2 wxss 文件****
css语法通常情况下在wxss中都适用,但是有的是不适用的。flex样式在小程序中应用非常方便,建议了解一下。
在wxml中使用对应的wxss,不需要引用,可直接使用。
px与rpx:px是逻辑分辨率,与屏幕尺寸有关,可以理解为长度和视觉单位;rpx是物理分辨率,和屏幕尺寸没有关系,是物理点的多少。不同机型下px与rpx的换算关系不一样,在iphone6下1px=2rpx,一般在iphone6下进行开发,方便换算。rpx会对机型进行适配,px不会,所以需要适配不同机型的使用rpx,不需要适配的使用px。
1.3 json 文件****
用来配置当前页面,例如:
{
"navigationBarBackgroundColor": "#b3d4db",//设置导航栏颜色
"navigationBarTitleText": "文与字" //设置导航栏标题
}
在app.json中配置的是全局属性,每个页面的json文件配置的是当前页面的属性,优先页面json中的配置起作用。
json文件不能注释代码,不能用单引号,不然会报错。
1.4 js 文件****
js文件中this的用法是ES6语法,与react中this的用法相同,也可以用箭头函数。
data:用来存储页面数据,例如:
data: {
date: 'Sep 18 2016',
title:'正是虾肥蟹壮时'
},
onLoad:生命周期函数--监听页面加载;页面初始化数据的请求,处理。处理完之后的数据使用this.setData({post_key: postData });将数据存储到data中,以便页面绑定使用。也可使用this.data.post_key=postData,在onLoad中只能使用this.setData,在其他函数,例如点击事件函数中可以使用this.Data,但是如果改变数据需要在页面渲染需使用this.setData。
onReady:生命周期函数--监听页面初次渲染完成,动态设置导航栏可在onReady函数中,例如:
onReady: function () {
//设置导航栏文字
wx.setNavigationBarTitle({
title: this.data.title,
})
},
onShow: 生命周期函数--监听页面显示
onHide: 生命周期函数--监听页面隐藏
onUnload: 生命周期函数--监听页面卸载
页面跳转方式:****
wx.redirectTo跳转后无返回键,无法返回
wx.navigateTo跳转后有返回键,可以返回
wx.switchTab能跳转到有tab页的页面
wx.navigateTo({
url: 'post-detail/post-detail?id=' + postId,
})
页面跳转时携带的参数在目标页面的onLoad中通过options获取
onLoad: function (options) {
var postId = options. postId;
}
缓存处理:****
小程序的缓存不能超过10MB。
以下是缓存的方法(同步):
存储缓存:wx.setStorageSync(String,object/string)
获取缓存:wx.getStorageSync(String)
删除缓存:wx.removeStorageSync(String)
清除所有缓存:wx.clearStorageSync()
request 请求****
wx.request({
url: url,
method: 'GET',
header: {
"Content-Type": "application/xml"//此处不能写application/json,也不能写空字符串
},
success(res) {
console.log(res.data);//请求数据在res.data中,可以进行处理
},
fail(res) {
console.log(res);
},
complete(res){
console.log(res);//不论成功或者失败都会执行complete
}
})
3 Utils 文件
在utils.js中可以定义常用的工具方法,例如:http请求,时间处理函数、字符串处理函数等等,所有方法最后需要export。
module.exports = {
convertToStarsArray: convertToStarsArray,
http: http,
}
在其他js文件中使用:
var utils = require("../../utils/utils.js");//先引用,也可以使用es6语法引用
utils.http();
4 其他
对于图片或者其他文件可以在pages同级目录新建文件夹存放。
用户信息获取
1. 获取用户通信地址,会跳转到微信自带得通信地址页面,类似于淘宝得收货地址页面
wx.chooseAddress({
success:function(res){
console.log(res);
}
})
2. 用户登录。不需要授权,静默登录,登录有时效性,多久失效由微信服务器决定。
wx.login({
success:function(res){
console.log(res);
}
})
3. 登录是否有效,success表示登录有效
wx.checkSession({
success:function(res){
console.log("success");
},
fail:function(res){
console.log("fail");
}
})
4. 获取用户信息(包括明文信息,加密信息)会弹框需要用户授权。参数withCredentials:true,要求用户已经登录(调用过wx.login),且没有失效;false,不需要用户登录,但无法获取加密信息。
wx.getUserInfo({
withCredentials:true,
success:function(res){
console.log(res);
},
fail:function(res){
console.log(res);
}
})
unionID:不同用户体系下相同(公众号、服务号、小程序等);用户一旦拒绝授权,再次调用不会弹框提示。unionID需要用户授权,openID不需要授权