微信小程序开发学习整理

      最近由于公司需求要做小程序开发,而且做h5的前端同事现在都很忙,所以我们移动开发就开始学习这个微信小程序了,因为也学习了几天了,所以暂时把遇见的问题以及查询到的学习资料东西整理一下。

准备

1.小程序注册

小程序、订阅号、服务号、企业号现在是并行的体系,所以需要使用的话,需要重新注册。

关于如何注册,看一下官方文档说明,这里就不累赘了:

微信小程序接入指南  

2.开发工具(区分Mac以及windows版本)微信官方开发文档以及API 官方demo下载 


微信小程序学习一: 简 介、文本、事件、样式

1.扫码登录


2.选择本地项目

3.添加项目,这里直接点“无APPID”即可

功能限制说明:无APPID,因为没有绑定小程序,所以项目无法在手机调试,如果绑定过小程序的话,在微信小程序开发平台会获取相应的app ID对应项目填入即可,如果要真机调试,需要当前开发账号添加项目管理员,点击项目->预览 即可生成开发版项目,通过当前微信扫码就可以查看真机效果,二维码有个有效时间,过期后重新预览操作即可,如效果没刷新,建议保存全部文件之后,清理缓存后再生成



项目目录结构


这个目录是刚刚勾选quick start项目自动生成的。

pages文件夹-放的是所有的页面文件。

utils文件夹-放的是一些js工具集。

app.js-启动入口文件。

app.wxss-全局样式表文件。

app.json-全局配置文件。

.js后缀的是脚本文件,.json后缀的文件是配置文件,.wxss后缀的是样式表文件类似.css,.wxml结构文件类似.html

看一下app.json


可以看到pages项目配资的是页面路径,以及入口。默认第一个路径做为入口。

pages/index/index,这个项目省略了.wxml后缀。

每一个页面就会生成一个目录,每个目录默认都四个文件。


实例


实例一:输出文字

打开index.wxml


view就相当于html中的div。

image是图片。

text是文本。

添加文本代码:

<text>你好,世界!</text>


效果:



实例二:修改文字颜色


添加class 

<text class="my-class"> 你好,世界!</text>

添加.wxss

.my-class{

         color:red;

}

保存,看效果


实例三:按钮事件,并修改文本


添加按钮组件,并添加事件处理myEventHandle。


打开index.js,添加事件处理函数,并添加data变量。

效果

微信小程序学习二: 条件、遍历、网络请求、获取本地图片

实例内容

实例一: 条件渲染

如果motto为Hello World,则输出你好世界,否则原样输出。

这里是分支条件判断,直接在视图文件里修改,修改index.wxml

<text wx:if={{motto != 'Hello World'}}" class="user-motto">{{motto}}</text>

<text wx:else>你好世界</text>


wx:if、wx:else、wx:elif,是微信条件判断的控制属性,需要添加到组件中使用。

但是如果我们想一次性判断多个组件标签,我们可以使用一个<block/>标签将多个组件包装起来,并在上边使用wx:if控制属性。

<block wx:if="{{true}}">

<view> view1 </view>

<view>view2</view>

</block>

注意:<block/>并不是一个组件,它仅仅是一个包装元素,不会在页面中做任何渲染,只接受控制属性。


实例二: 数据遍历

在index.js中加入数据。


在index.wxml中读取数据。


wx:for-item可以指定数组当前元素的变量名

wx:for-index可以指定数组当前下标的变量名

这两个项也可以不指定,默认数组的当前项的下标变量名默认为index,数组当前项的变量名默认为item。

类似block wx:if,也可以将wx:for用在标签上,以渲染一个包含多节点的结构块。例如:

<block wx:for="{{[1, 2, 3]}}">

<view>{{index}}:</view>

<view>{{item}}</view>

</block>



实例三: 网络请求

当用ajax进行请求的时候,最讨厌的就是跨域问题,而在小程序上是没有这个问题的。

数据接口:https://raw.githubusercontent.com/jiangzy27/how_to_react/master/score.json

接口内容:{"data":[{"id":201701,"name":"Jackson","score":100},{"id":201702,"name":"Mike","score":78},{"id":201703,"name":"Joe","score":62}]}

修改index.js

//index.js//获取应用实例varapp = getApp()

Page({

        data: {

        motto:'Hello World',

        userInfo: {},

        myText:'你好,世界!',

        arr1: [{name:'张三', age:18},{name:'李四', age:19},{name:'王五', age:20}],

         removeData:'',

    },//事件处理函数

    bindViewTap:function(){       

        wx.navigateTo({url:'../logs/logs'})

     },

//自定义事件

   myEventHandle :function(){

       this.setData({myText:"世界你好"});

   },

onLoad:function(){

        console.log('onLoad')

        var that =this

         //获取远程数据

          wx.request({

                  url:'https://raw.githubusercontent.com/jiangzy27/how_to_react/master/score.json',

         method: 'post', // OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT

         header:{'Content-Type':'application/json'},

             data: {}, 

         success:function(res){

                     that.setData({

                           removeData:res.data.data

                        }); 

               },

           })//调用应用实例的方法获取全局数据app.getUserInfo(function(userInfo){//更新数据that.setData({

         userInfo:userInfo

       })

    })

  }

})


修改index.wxml,进行数据读取。



wx.request说明:

url String 是 开发者服务器接口地址

data Object、String 否 请求的参数

header Object 否 设置请求的 header , header 中不能设置 Referer

method String 否 默认为 GET,有效值:OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT

dataType String 否 默认为 json。如果设置了 dataType 为 json,则会尝试对响应的数据做一次 JSON.parse

success Function 否 收到开发者服务成功返回的回调函数,res = {data: '开发者服务器返回的内容'}

fail Function 否 接口调用失败的回调函数

complete Function 否 接口调用结束的回调函数(调用成功、失败都会执行)


实例四: 获取本地图片


这里使用微信组件wx.chooseImage

修改index.js

myEventHandle :function(){

                var that =this;

              wx.chooseImage({

                 count:1,// 默认9sizeType: ['original','compressed'],// original 原图,compressed 压缩图,默认二者都有

      sourceType:   ['album','camera'],// album 从相册选图,camera 使用相机,默认二者都有

           success:function(res){

                           that.setData({

                                    myPic:res.tempFilePaths

                                  });

                           },

                   })

  },

修改index.wxml

<image wx:if="{{mypic==null}}" class="userinfo-avatar" src="{{userInfo.avatarUrl}}" background-size="cover"></image>

<image wx:else src="{{mypic}}"> </image>

wx.chooseImage 说明:

count Number 否 最多可以选择的图片张数,默认9

sizeType StringArray 否 original 原图,compressed 压缩图,默认二者都有

sourceType StringArray 否 album 从相册选图,camera 使用相机,默认二者都有

success Function 是 成功则返回图片的本地文件路径列表 tempFilePaths

fail Function 否 接口调用失败的回调函数

complete Function 否 接口调用结束的回调函数(调用成功、失败都会执行)

微信小程序学习三: 简易form、本地存储

实例一: 登陆界面

在app.json中添加登陆页面pages/login/login,并设置为入口。

保存后,自动生成相关文件(挺方便的)。


修改视图文件login.wxml


修改登陆样式login.wxss


看下样式:

form相关属性:

report-submit Boolean 是否返回 formId 用于发送模板消息

bindsubmit EventHandle 携带 form 中的数据触发 submit 事件,event.detail = {value : {'name': 'value'} , formId: ''}

bindreset EventHandle 表单重置时会触发 reset 事件

这里用到了bindsubmit,用于处理提交的表单数据。

input相关属性

value String 输入框的初始内容

type String "text" input 的类型

password Boolean false 是否是密码类型

placeholder String 输入框为空时占位符

placeholder-style String 指定 placeholder 的样式

placeholder-class String "input-placeholder" 指定 placeholder 的样式类

disabled Boolean false 是否禁用

maxlength Number 140 最大输入长度,设置为 -1 的时候不限制最大长度

cursor-spacing Number 0 指定光标与键盘的距离,单位 px 。取 input 距离底部的距离和 cursor-spacing 指定的距离的最小值作为光标与键盘的距离

auto-focus Boolean false (即将废弃,请直接使用 focus )自动聚焦,拉起键盘

focus Boolean false 获取焦点

confirm-type String "done" 设置键盘右下角按钮的文字 1.1.0

confirm-hold Boolean false 点击键盘右下角按钮时是否保持键盘不收起 1.1.0

bindinput EventHandle 当键盘输入时,触发input事件,event.detail = {value: value},处理函数可以直接 return 一个字符串,将替换输入框的内容。

bindfocus EventHandle 输入框聚焦时触发,event.detail = {value: value}

bindblur EventHandle 输入框失去焦点时触发,event.detail = {value: value}

bindconfirm EventHandle 点击完成按钮时触发,event.detail = {value: value}

button相关属性

size  String  default 按钮的大小

type String  default 按钮的样式类型

plainBoolean  false 按钮是否镂空,背景色透明

disabledBoolean  false是否禁用

loadingBoolean  false名称前是否带 loading 图标

form-type String   默认无  用于 <form/>点击分别会触发 submit/reset 事件

open-type String 微信开放功能

hover-class String  指定按钮按下去的样式类。当 hover-class="none" 时,没有点击态效果 

此Demo中将button的formType设置为submit用于激活表单提交事件。

实例二: 处理登陆表单数据

修改login.js

当前页面截一屏不完整,请补上结尾符号



这里使用到了wx.getStorageSync和wx.setStorageSync,这里说一下,上面这两个方法类似于HTML5的本地存储,属于同步存储方式。

wx.setStorageSync(KEY,DATA)

key String 是 本地缓存中的指定的key

data Object/String 是 需要存储的内容

wx.getStorageSync

KEY String 是 本地缓存中的指定的key

修改一下login.wxml

这个小实例,会在登陆的时候,将登陆信息存到本地存储,当下次登陆时,如果本地存储中有相应信息,则直接填写上。


实例三: 处理登陆表单数据(异步)

这里采用异步的方式存放数据。

修改一下login.js

同上login.js,需补上结尾符合

wx.setStorage(OBJECT)

key String 是 本地缓存中的指定的 key

data Object/String 是 需要存储的内容

success Function 否 接口调用成功的回调函数

fail Function 否 接口调用失败的回调函数

complete Function 否 接口调用结束的回调函数(调用成功、失败都会执行)

wx.getStorage(OBJECT)

key String 是 本地缓存中的指定的 key

success Function 是 接口调用的回调函数,res = {data: key对应的内容}

fail Function 否 接口调用失败的回调函数

complete Function 否 接口调用结束的回调函数(调用成功、失败都会执行)

实例四: 清除本地数据

这里就不详细写了,直接介绍一下这两个清除本地数据的方法。

wx.clearStorage()

wx.clearStorageSync()

直接执行即可实现。

微信小程序学习四: 导航栏样式、tabBar导航栏

实例一:导航栏样式设置

小程序的导航栏样式在app.json中定义。

这里设置导航,背景黑色,文字白色,文字内容测试小程序

app.json内容:

{

"pages":[

"pages/index/index",

"pages/login/login",

"pages/logs/logs"

    ],

"window":{

"backgroundTextStyle":"red",

"navigationBarBackgroundColor": "#000",

"navigationBarTitleText": "测试小程序",

"navigationBarTextStyle":"#fff"

      }

}

window中的样式说明:

navigationBarBackgroundColorHexColor000000 导航栏背景颜色,如”#000000”

navigationBarTextStyleStringwhite导航栏标题颜色,仅支持 black/white

navigationBarTitleTextString导航栏标题文字内容

backgroundColorHexColor#ffffff窗口的背景色

backgroundTextStyleStringdark下拉背景字体、loading 图的样式,仅支持 dark/light

enablePullDownRefreshBooleanfalse是否开启下拉刷新

效果图


实例二:tabBar导航栏

"tabBar": {"selectedColor":"#1296db",

             "list": [{"pagePath":"pages/index/index",

                                    "text":"首页",

                           "iconPath":"images/ico-home.png",

             "selectedIconPath":"images/ico-home-d.png"},

                         {"pagePath":"pages/setting/setting",

                                     "text":"设置",

                             "iconPath":"images/ico-setting.png",

               "selectedIconPath":"images/ico-setting-d.png"},

                         {"pagePath":"pages/help/help",

                                     "text":"帮助",

                          "iconPath":"images/ico-help.png",

           "selectedIconPath":"images/ico-help-d.png"}]

}

效果图

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,015评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,262评论 1 292
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,727评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,986评论 0 205
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,363评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,610评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,871评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,582评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,297评论 1 242
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,551评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,053评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,385评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,035评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,079评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,841评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,648评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,550评论 2 270

推荐阅读更多精彩内容