微信小程序入门(1)

151 阅读5分钟
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属性定义标签的名字,例如:

 

  1. 在wxss文件中添加模板样式

.stars-container{

  display: flex;

  flex-direction: row;

}

  1. 引用模板template,is属性是等于所引用模板的name,data是传到模板中的数据。

//引用样式文件

//使用样式

  1. 引用模板样式

@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不需要授权