微信小程序

一.介绍

1.与普通网页开发区别

1.API 不同

由于运行环境的不同,所以小程序中无法调用 DOM 和 BOM 的 API。但是,小程序中可以调用微信环境提供的各种 API,例如:

  • 地理定位

  • 扫码

  • 支付

2.体验小程序

可使用手机微信(6.7.2 及以上版本)扫码下方小程序码,体验小程序:

3.注册小程序账号

1.微信小程序AppID在哪找

4.安装微信开发者工具

登录

5.从头创建一个小程序项目

填写自己的APPID: wx41f51df697bd2602

二.微信小程序基础

1.目录介绍

1.pages页面
  • 由四个基本文件组成

  • 新建页面:在app.json中新加page路径,小程序会自动创建页面

1.index.js
  • 页面脚本文件,存放页面的数据,事件处理函数等

  • 页面交互逻辑,数据

  • 步骤

    1. 使用page创建文件

    2. 页面删除后

      • 一定要在app.json配置文件中删除对应页面,不然会报错

  "pages":[
    "pages/index/index",
    "pages/logs/logs"
  ]
2.index.json
  • 是什么

    • 当前页面配置文件,配置窗口的外观,表现等

    • 页面相关配置文件

  • 常用

    1. nav...text:配置当前页面标题

3.index.wxml
  • 是什么

    • 页面的模板结构文件

    • html,组件,代码,根据微信小程序提供的组件构建

  • 一些常用组件

    1. view-相当于div

    2. text-相当于span

  • 常用逻辑
    1. 判断

      • 在微信小程序中为

        • wx:if="{{flag}}"

        • wx:else

    2. 循环

      • wx:for="{{list}}" 默认{{item.name}}

        • 可以将item改成指定 wx:for-item="person" 则循环变量为{{person.name}}

4.index.wxss
  • 是什么

    • 当前页面的样式表文件

    • 页面样式

2.utils工具包

utils用来存放工具性质的模块(例如:格式化时间的自定义模块)

3.app.js入口文件
  • 是什么

    • 小程序项目入口文件

  • 作用

    • 初始化操作,获取用户信息

    • 基本结构 使用App构建

4.app.json 配置文件
  • 是什么

    • 小程序项目全局配置文件

    • 包括了小程序的所有页面路径,窗口外观没界面表现,底部tab等

  • 作用

    • 配置路径,窗口表现

  • 默认配置为四项

    • Demo项目里边的app.json配置内容如下:

      {
          "pages": [
              "pages/index/index",
              "pages/logs/logs"
          ],
          "window": {
              "backgroundTextStyle": "light",
              "navigationBarBackgroundColor": "#fff",
              "navigationBarTitleText": "WeChat",
              "navigationBarTextStyle" "black"
          },
          "style": "v2",
          "sitemapLocation": "sitemap.json"
      }
    • 简单了解下这四个配置项的作用

      1. pages: 用来记录当前小程序所有页面的路径

      2. window: 全局定义小程序所有页面的背景色,文字颜色等

      3. style: 全局定义小程序组件所使用的样式版本

      4. sitemapLocation: 用来指明 sitemap.json的位置

5.wxss全局样式文件
  • 是什么

    • 小程序项目的全局配置文件

    • 将之前前端css文件换成wxss文件

6.project.config.json项目配置文件
  • 是什么

    • 是项目配置文件,用来记录我们对小程序开发工具所做的个性化配置

    • 例如

      1. setting 中保存了编译相关的配置

      2. projectname 中保存的是项目名称

      3. appid中保存的是小程序的账号ID

此处配置

7.shemap.json
  • 是什么

    • 配置哪些页面可以被微信的搜索引擎给收入,以及收入规则

    • 微信现已开放小程序内搜索,效果类似于PC网页的SEO

    • sitemap.json文件用来配置小程序页面是否允许微信索引

      • 当开发者允许微信索引时,微信会通过爬虫的形式,为小程序的页面内容建立索引.当用户的搜索关键字和页面的索引匹配成功的时候,小程序的页面将可能展示在搜索框中

      • 注意,sitemap的索引提示是默认开启的,如需要关闭sitemap的索引提示,可在小程序项目配置文件project.config.json的setting中配置子段checkSiteMap为false

  • 配置

    {
        "desc": "关于本文件的更多信息,请参考文档.......",
        "rules": [{
        "action": "allow",  //"action":"disallow"   不允许被索引
        "page": "*"
        }]
    }

2.目录介绍2

1.三种.js文件
  • 小程序中的JS文件分为三大类,分别是

    1. app.js

      • 是整个小程序项目的入口文件,通过调用App()函数来启动整个小程序

    2. 页面的.js文件

      • 是页面的入口文件,通过调用Page()函数来创建并运行页面

    3. 普通的.js文件

      • 是普通的功能模块文件,用来封装公共的函数或属性供页面使用

2. .json文件
  • 小程序中的每一个页面,可以使用 json 文件来对本页面的窗口外观进行配置,页面中的配置会覆盖app.json 的 window 中相同的配置项。

3. .wxml文件
  • 和html区别

    • 标签名称不同

      • HTML(div,span,img,a)

      • WXML(view,text,image,navigator)

    • 属性节点不同

      • <a href="#">超链接</a>
      • <navigator url="/page/home/home"></navigator>
    • 提供了类似于Vue中的模板语法

      • 数据绑定

      • 列表渲染

      • 条件渲染

4. .wcss文件
  • 和css区别

    1. 新增了 rpx 尺寸单位

      • CSS中需要手动进行像素单位换算,例如rem

      • WXSS在底层支持新的尺寸单位rpx,在不同大小的屏幕上小程序会自动进行换算

    2. 提供了全局的样式和局部样式

      • 项目根目录中的app.wxss 会作用于所有小程序页面

      • 局部页面的wxss样式仅对当前页面生效

    3. WXSS 仅支持部分 CSS 选择器

      1. .class和 #id

      2. element

      3. 并集选择器、后代选择器

      4. ::after和::before 等伪类选择器

三.小程序-模板与配置

1.WXML 模板语法

1.数据绑定
1.Mustache语法:{{ }} 即插值表达式
  • 与vue区别:

  • vue中绑定使用v-bind,简写为冒号,但小程序中都需要使用Mustache语法

    页面数据

    //页面数据:
    Page({
        data: {
            imgSrc: 'http://www.....'
        }
    })

    页面结构

    //页面结构
    <image src="{{ imgSrc }}"></image>

2.三元运算
  • 页面数据

    Page({
        data: {
            randomNum:Math.random()*10
        }
    })
  • 页面结构

    <view>{{ randomNum>=5 ? '大于等于5' : '小于5' }}</view>
3.算数运算
  • 页面数据

    Page({
    	data: {
    		randomNum: Math.random().toFixed(2)//生成一个带两位小数的随机数,例如0.34
    	}
    })
  • 页面结构

    <view>生成100以内的随机数{{ randomNum*100 }}</view>
2.事件绑定
1. 什么是事件

2.小程序中常用的事件
类型绑定方式事件描述
tapbindtap或bind:tap手指触摸后马上离开,类似于HTML中的click事件
inputbindinput或bind:input文本框的输入事件
changebindchange或bind:change状态改变时触发
1.bindtab语法格式

在小程序中,不存在 HTML 中的 onclick 鼠标点击事件,而是通过 tap 事件来响应用户的触摸行为。通过 bindtap,可以为组件绑定 tap 触摸事件,语法如下:

  • 通过 bindtap,可以为组件绑定 tap 触摸事件,语法如下

    <button type="primary" bindtap="btnTapHandler">按钮</button>
  • 在页面的 .js 文件中定义对应的事件处理函数,事件参数通过形参 event (一般简写成 e) 来接收

    Page({
    	btnTapHandler(e) {	//按钮的 tap 事件处理函数
    		console.log(e) //事件参数对象 e
    	}
    })
2.bindinput语法格式

在小程序中,通过 input 事件来响应文本框的输入事件,语法格式如下:

  • 通过 bindinput,可以为文本框绑定输入事件:

    <input bindinput="inputHandler"><input>
  • 在页面的.js文件中定义事件处理函数

    inputHandler(e){
    	// e.detail.value 是变化过后文本框最新的值
    	console.log(e.detail.value)
    }
实现文本框和data之间数据同步
  • 实现步骤:

    1. 定义数据

    2. 渲染结构

    3. 美化样式

    4. 绑定input事件处理函数

  • iptHandler(e){
    	this.setData({
    		//通过 e.detail.value获取到文本框最新的值
    		msg: e.detail.value
    	})
    }
3.事件对象的属性列表
  • 当事件回调触发的时候,会收到一个事件对象event,它的详细属性如下表所示

    属性类型说明
    typeString事件类型
    timeStampInteger页面打开到触发事件所经过的毫秒数
    targetObject触发事件的组件的一些属性值集合
    currentTargetObject当前组件的一些属性值集合
    detailObject额外的信息
    touchesArray触摸事件,当前停留在屏幕中的触摸点信息的数组
    changedTouchesArray触摸事件,当前变化的触摸点信息的数组
target和currentTarget的区别
  • target 是触发该事件的源头组件,而 currentTarget 则是当前事件所绑定的组件。举例如下:

  • 点击内部的按钮时,点击事件以冒泡的方式向外扩散,也会触发外层 view 的 tap 事件处理函数。此时,对于外层的 view 来说:

    1. e.target 指向的是触发事件的源头组件,因此,e.target 是内部的按钮组件

    2. e.currentTarget 指向的是当前正在触发事件的那个组件,因此,e.currentTarget 是当前的 view 组件

  • 一般只会用到target

4.在事件处理函数中为data中的数据赋值
  • 通过调用 this.setData(dataobject) 方法,可以给页面 data 中的数据重新赋值,示例如下:

    Page({
    	data:{
    		count: 0
    	},
    	//修改count的值
    	changeCount(){
    		this.setData({
    			count: this.data.count+1
    		})
    	}
    })
5.事件传参
  • 小程序中的事件传参比较特殊,不能在绑定事件的同时为事件处理函数传递参数。例如,下面的代码将不能正常工作:

    <button type="primary" bindtap="btnHandler(123)">时间传参</button>
  • 因为小程序会把 bindtap 的属性值,统一当作事件名称来处理,相当于要调用一个名称为 btnHandler(123)的事件处理函数。

  • 可以为组件提供 data-* 自定义属性传参,其中*代表的是参数的名字,示例代码如下:

    <button bindtap="btnHandler" data-info={{ 2 }}></button>
    • "{{2}}"会被解析为数字2,而"2"则会被解析为字符串

    • 最终:

      • info会被解析为参数的名字

      • 数值2会被解析为参数的值

  • 事件处理函数中,通过 event.target.dataset.参数名 即可获取到具体参数的值,示例代码如下:

    btnHandler(event){
    //dataset 是一个对象,包含了所有通过 data-*传递过来的参数项
    	console.log(event.target.dataset)
    //通过 dataset 可以访问到具体参数的值
    	console.log(event.target.dataset.info)
    }
3.条件渲染
1.如何使用
  • 在小程序中,使用 wx:if="{{condition}"来判断是否需要渲染该代码块

    <view wx:if="{{condition}}"> True </view>
  • 也可以用 wx:elif 和 wx:else 来添加 else 判断:

    <view wx:if="{{type == 1}}">男</view>
    <view wx:elif="{{type === 2}}">女</view>
    <view wx:else>保密</view>
2.结合< block>使用wx:if
  • 如果要一次性控制多个组件的展示与隐藏,可以使用一个<block></block> 标签将多个组件包装起来,并在<block>标签上使用 wx:if 控制属性,示例如下

    <block wx:if="{{true}}">
    	<view></view>
    	<view></view>
    </block>
  • 注意: <block> 并不是一个组件,它只是一个包裹性质的容器,不会在页面中做任何渲染,

3.hidden
  • 在小程序中,直接使用 hidden="{{ condition ]"也能控制元素的显示与隐藏

    <view hidden="{{ condition }}">条件为true隐藏,条件为false 显示</view>
4.wx:if与hidden的对 比
  1. 运行方式不同

    • wx:if 以动态创建和移除元素的方式,控制元素的展示与隐藏

    • hidden 以切换样式的方式(display: none/block;),控制元素的显示与隐藏

  2. 使用建议

    • 频繁切换时,建议使用 hidden

    • 控制条件复杂时,建议使用 wx:if 搭配 wx:elif、wx:else 进行展示与隐藏的切换

4.列表渲染
1.wx:for
  • 通过wx:for 可以根据指定的数组,循环染重复的组件结构,语法示例如下

    <view wx:for="{array}">
    	索引是: {{index}} 当前项是: {{item}}
    </view>
    • 默认情况下,当前循环项的索引用 index 表示;当前循环项用 item 表示

2.手动指定索引和当前项的变量名*
  • 使用 wx:for-index 可以指定当前循环项的索引的变量名

  • 使用 wx:for-item 可以指定当前项的变量名

    <view wx:for="{{array}}" wx:for-index="idx" wx:for-item="itemName">
    索引是: {{idx}} 当前项是: {{itemName}}
    </view>
3,wx:key的使用
  • 类似于 Vue 列表渲染中的 :key,小程序在实现列表染时,也建议为渲染出来的列表项指定唯一的 key 值,从而提高渲染的效率,示例代码如下:

    //data数据
    data: {
    	userList: [
    	{ id:1, name: '小红'},
    	{ id:2, name: '小黄'},
    	{ id:3, name: '小白'},
    	]
    }
    //wxml结构
    <view wx:for="{{userList}}" wx:key="id">{{item.name}}</view>
  • wx:key="id" //不用使用Mustache语法

2.WXSS 模板样式

1.是什么
  • WXSS(WeiXin Stvle Sheets)是一套样式语言,用于美化 WXML 的组件样式,类似于网页开发中的CSS

2.WXSS和CSS的关系
  • WXSS具有CSS大部分特性,同时,WXSS 还对 CSS 进行了扩充以及修改,以适应微信小程序的开发。

  • 与 CSS 相比,wXSS 扩展的特性有:

    • rpx 尺寸单位

    • @import 样式导入

  • 例如rem只能在网页开发中使用,小程序无法使用

3.rpx
1.什么是rox尺寸单位

rpx (responsive pixel) 是微信小程序独有的,用来解决屏适配的尺寸单位

2.rpx的实现原理

rpx 的实现原理非常简单: 鉴于不同设备屏幕的大小不同,为了实现屏幕的自动适配,rpx 把所有设备的屏幕在宽度上等分为 750 份 (即: 当前屏幕的总宽度为 750rpx)。

  • 在较小的设备上,1rpx 所代表的宽度较小

  • 在较大的设备上,1rpx 所代表的宽度较大

小程序在不同设备上运行的时候,会自动把 rpx 的样式单位换算成对应的像素单位来渲染,从而实现屏幕适配

3.rpx与px之间单位换算*

在iphone6 上,屏幕宽度为375px,共有 750 个物理像素,等分为 750rpx。则:750rpx = 375px = 750 物理像素 1rpx = 0.5px =1物理像素

  • 官方建议:开发微信小程序时,设计师可以用 iphone6 作为视觉稿的标准

  • 开发举例:在iPhone6 上如果要绘制宽100px,高20px的盒子,换算成rpx单位,宽高分别为 200rpx 和 40rpx。

4.样式导入
1.什么是样式导入

使用 WXSS 提供的 @import 语法,可以导入外联的样式表。

2.@import的语法格式

@import 后跟需要导入的外联样式表的相对路径,用;表示语句结束。示例如下

/** common.wxss **/
.small-p {
	padding:5px;
}
/** app.wxss **/
@import "common.wxss";
.middle-p{
	padding:15px;
}
5.全局样式和局部样式
1.全局样式
2.局部样式
  • 注意

    • 当局部样式和全局样式冲突时,根据就近原则,局部样式会覆盖全局样式

    • 当局部样式的权重大于或等于全局样式的权重时,才会覆盖全局的样式

3.全局配置

1.全局配置文件及常用的配置项

小程序根目录下的 app.json 文件是小程序的全局配置文件。常用的配置项如下

1.pages
  • 记录当前小程序所有页面的存放路径

2.window
1.认识window节点
  • 全局设置小程序窗口的外观

  • 即导航栏区域和北京区域内容由window配置,页面主体区域用wxml配置

2.了解window节点常用的配置项
属性名类型默认值说明
navigationBarTitleTextString字符串导航栏标题文字内容
navigationBarBackgroundColorHexColor#000000导航栏背景颜色 如#000000
navigationBarTextStyleStringwhite导航栏标题颜色,仅支持black/white
backgroundColorHexColor#ffffff窗口的背景色
backgroundTextStyleStringdark下拉loading的样式,仅支持dark/light
enablePullDownRefreshBooleanfalse是否全局开启下拉刷新
onReachBottomDistanceNumber50页面上拉出地时间触发式距页面底部的距离,单位为px

  • 注意: navigationBarTextStyle 的可选值只有 black 和 white

  • 全局开启下拉刷新功能"enablePullDownRefresh": true

关于模拟器的问题说明

不能百分百还原,要真机预览

3.tabBar
  • 设置小程序底部的 tabBar 效果

1.什么是tabBar
  • tabBar 是移动端应用常见的页面效果,用于实现多页面的快速切换。小程序中通常将其分为:

    • 底部 tabBar

    • 顶部 tabBar

  • 注意:

    • tabBar中只能配置最少2个、最多 5个tab 页签

    • 当渲染顶部 tabBar 时,不显示 icon,只显示文本

2.tabBar的六个组成部分

  1. backgroundColor: tabBar 的背景色

  2. selectedlconPath: 选中时的图片路径

  3. borderStyle: tabBar 上边框的颜色

  4. iconPath:未选中时的图片路径

  5. selectedColor: tab 上的文字选中时的颜色

  6. color: tab 上文字的默认 (未选中)颜色

3.tabBar节点的配置项
属性类型必填默认值描述
posionStringbottomtabBar的位置,仅支持bottom/top
borderStyleStringblacktabBar上边框的颜色,仅支持black/white
colorHexColortab上文字的默认(未选中)的颜色
selectedColorHexColortab上文字选中时的颜色
backgroundColorHexColortabBar的背景色
listArraytab页签的列表,最少2个,最多5个tab
每个tab项的配置选项
属性类型必填描述
pagePathString页面路径,页面必须在pages中先预定义
textStringtab上显示的文字
iconPathString未选中时的图标路径,当posion为top时,不显示icon
selectedIconPathString选中时的图标路径,当posion为top时,不显示icon
4.style
  • 是否启用新版的组件样式

4.页面配置

页面配置中常用的配置项
属性类型默认值描述
navigationBarBackgroundColorHexColor#000000当前页面导航栏背景颜色,如#000000
navigationBarTextStyleStringwhite当前页面导航栏标题颜色,仅支持black/white
navigationBarTitleTextString当前页面导航栏标题文字内容
backgroundColorHexColor#ffffff当前页面窗口的背景色
backgroundTextStyleStringdark当前页面下拉loading的样式,仅支持dark/light
enablePullDownRefreshBooleanfalse是否为当前页面开启下拉刷新的效果
onReachBottomDistanceNumber50页面上拉触底事件触发时距页面底部距离,单位为px

5.网络数据请求

1.小程序中网络数据请求的限制
  • 出于安全性方面的考虑,小程序官方对数据接口的请求做出了如下两个限制:

    1. 只能请求 HTTPS 类型的接口

    2. 必须将接口的域名添加到信任列表中

2.配置request合法域名
  • 配置步骤:

    1. 需求描述:假设在自己的微信小程序中,希望请求 刘龙彬的博客 域名下的接口

    2. 登录微信小程序管理后台 -> 开发 -> 开发设置 -> 服务器域名 -> 修改 request 合法域名

    3. 注意事项:

      1. 域名只支持 https 协议

      2. 域名不能使用IP地址或 localhost

      3. 域名必须经过ICP备案

      4. 服务器域名一个月内最多可申请 5次修改

3.网络数据请求
1,发起GET请求
  • 调用微信小程序提供的 wx.request()方法,可以发起 GET 数据请求,示例代码如下:

    wx.request({
    	url: 'https:www.......'	//请求的接口地址,必须基于https协议
    	method:'GET' //请求的方式
    	data :{
    		name:'zs',
    		age:22
    	},
    	success: (res) => {	//请求成功之后的回调函数
    		console.log(res)
    	}
    })
2.发起post请求
  • 调用微信小程序提供的 wx.request()方法,可以发起 POST 数据请求,示例代码如下:

    wx.request({
    	url: 'https:www.......'	//请求的接口地址,必须基于https协议
    	method:'POST' //请求的方式
    	data :{
    		name:'ls',
    		gender: '男'
    	},
    	success: (res) => {	//请求成功之后的回调函数
    		console.log(res)
    	}
    })

在页面刚加载时请求数据
  • 在很多情况下,我们需要在页面刚加载的时候,自动请求一些初始化的数据。此时需要在页面的 onLoad 事件中调用获取数据的函数,示例代码如下:

    //生命周期函数--监听页面加载
    onLoadLfunction(options){
    	this.getSwiperList()
    	this.getGridList()
    }
    //获取轮播图的数据
    getSwiperList(){...},
    //获取九宫格的数据
    getGridList(){...}

4.跳过request合法域名校验

如果后端程序员仅仅提供了 http 协议的接口、暂时没有提供 https 协议的接口 ​ 此时为了不耽误开发的进度,我们可以在微信开发者工具中,临时开启,开发环境不校验请求域名、TLS 版本及 HTTPS 证书,选项跳过 request合法域名的校验。 注意: 跳过 request 合法域名校验的选项,仅限在开发与调试阶段使用!

5.关于跨域和Ajax的说明
  • 跨域问题只存在于基于浏览器的 web 开发中。由于小程序的宿主环境不是浏览器,而是微信客户端,所以小程序中不存在跨域的问题。

  • Ajax 技术的核心是依赖于浏览器中的 XMLHttpRequest 这个对象,由于小程序的宿主环境是微信客户端,所以小程序中不能叫做“发起 Ajax 请求”,而是叫做“发起网络数据请求

四.视图与逻辑

  • 能够知道如何实现页面之间的导航跳转

  • 能够知道如何实现下拉刷新效果

  • 能够知道如何实现上拉加载更多效果

  • 能够知道小程序中常用的生命周期函数

1.页面导航

1.小程序中实现页面导航的两种方式
1.声明式导航
  • 在页面上声明一个<navigator> 导航组件

  • 通过点击<navigator> 组件实现页面跳转

1.导航到tabBar页面

tabBar 页面指的是被配置为 tabbar 的页面 在使用<navigator> 组件跳转到指定的 tabBar 页面时,需要指定 url 属性和 open-type 属性,其中

  • url表示要跳转的页面的地址,必须以 /开头

  • open-type 表示跳转的方式,必须为 switchTab

2.导航到非tabBar页面

非 tabBar 页面指的是没有被配置为 tabBar 的页面在使用<navigator> 组件跳转到普通的非 tabBar 页面时,则需要指定 url属性和 open-type 属性,其中

  • url 表示要跳转的页面的地址,必须以 /开头

  • open-type 表示跳转的方式,必须为 navigate,或省略

3.后退导航

如果要后退到上一页面或多级页面,则需要指定 open-type 属性和 delta 属性,其中

  • open-type 的值必须是 navigateBack,表示要进行后退导航

  • delta 的值必须是数字,表示要后退的层级,(可省略,因为默认为1)

2.编程式导航
  • 调用小程序的导航API,实现页面的跳转

1.导航到tabBar页面

调用 wx.switchTab(0bject object) 方法,可以跳转到 tabBar 页面。其中 0bject 参数对象的属性列表如下:

属性类型是否必选说明
urlstring需要跳转的tabBar页面的路径,路径后不能带参数
successfunction接口调用成功的回调函数
failfunction接口调用失败的回调函数
completefunction接口调用结束的回调函数(调用成功,失败都会执行)
2.导航到非tabBar页面

调用 wx.navigateTo(object object)方法,可以跳转到非 tabBar 的页面。其中 Object 参数对象的属性列表

属性类型是否必选说明
urlstring需要跳转的非tabBar页面的路径,路径后不能带参数
successfunction接口调用成功的回调函数
failfunction接口调用失败的回调函数
completefunction接口调用结束的回调函数(调用成功,失败都会执行)
3.后退导航

调用 wx.navigateBack(0bject object)方法,可以返回上一页面或多级页面。其中 bject 参数对象可选 属性列表如下:

属性类型默认值是否必选说明
deltanumber1返回的页面数,如果delta大于现有页面数,则返回到首页
successfunction接口调用成功的回调函数
failfunction接口调用失败的回调函数
completefunction接口调用结束的回调函数(调用成功,失败都会执行)

2.导航传参
1.声明式导航传参

navigator 组件的 url属性用来指定将要跳转到的页面的路径。同时,路径的后面还可以携带参数

  • 参数与路径之间使用?分隔

  • 参数键与参数值用 =相连

  • 不同参数用 & 分隔

代码示例如下:

<navigator url="/pages/info/info?name=zs&age=20"></navigator>
2.编程式导航传参

调用 wx.navigateTo(object object) 方法跳转页面时,也可以携带参数,代码示例如下:

//页面结构
<button bindtap="gotoInfo2">跳转到info页面</button>
//通过编程式导航,跳转到info页面,并携带参数
gotoInfo2(){
	wx.navigateTo({
	url:'/pages/info/info?name=ls&gender=男'
	})
}

2.页面事件

1.下拉刷新事件

开启下拉刷新。。。etc在配置中有讲过

1. 监听页面的下拉刷新事件

在页面的 js 文件中,通过 onPullDownRefresh() 函数即可监听当前页面的下拉刷新事件

//页面相关事件处理函数--监听用户下拉动作
onPullDownRefresh: function(){

}
2.停止下拉刷新效果

当处理完下拉刷新后,下拉刷新的 loading 效果会一直显示,不会主动消失,所以需要手动隐藏loading 效果。此时,调用 wx.stopPullDownRefresh() 可以停止当前页面的下拉刷新。示例

onPullDownRefresh: function(){
	this.setData({
		count:0
	})
	wx.stopPullDownRefresh()
}
2.上拉触底事件

上拉触底是移动端的专有名词,通过手指在屏幕上的上拉滑动操作,从而加载更多数据的行为。

1.监听页面的上拉触底事件

在页面的 .js 文件中通过 onReachBottom() 函数即可监听当前页面的上拉触底事件

2.配置上拉触底距离

上拉触底距离指的是触发上拉触底事件时,滚动条距离页面底部的距离可以在全局或页面的.json 配置文件中,通过 onReachBottomDistance 属性来配置上拉触底的距离

3.生命周期

1.生命周期的分类

在小程序中,生命周期分为两类,分别是:

  1. 应用生命周期

    • 特指小程序从启动 -> 运行-> 销毁的过程

  2. 页面生命周期

    • 特指小程序中,每个页面的加载 -> 染-> 销毁的过程

  • 其中,页面的生命周期范围较小,应用程序的生命周期范围较大,如图所示

2.什么是生命周期函数
  1. 生命周期函数:是由小程序框架提供的内置函数,会伴随着生命周期,自动按次序执行

  2. 生命周期函数的作用:允许程序员在特定的时间点,执行某些特定的操作。例如,页面刚加载的时候,可以在onLoad 生命周期函数中初始化页面的数据

  3. 注意:生命周期强调的是时间段,生命周期函数强调的是时间点

3.生命周期函数的分类
1.应用的生命周期函数

在app.js中声明

App   //回车自动调用生成
//app.js文件
App({
	//小程序初始化完成时,执行此函数,全局只触发一次,可以做一些初始化的工作
	onLaunch: function(options){},
	//小程序启动,或从后台进入前台显示时触发
	onShow : function(options){},
	//小程序从前台进入后台时触发
	onHide: function(){}
})
2.页面的生命周期函数

在.js文件中声明

Page({
	onLoad: function(options){},//监听页面加载,一个页面只调用一次
	onShow:function(){},//监听页面显示
	onReady:function(){},//监听页面初次渲染完成,一个页面只调用一次
	onHide:function(){},//监听页面隐藏
	onUnload:function(){}//监听页面卸载,一个页面只调用一次
})

onReady:页面初次渲染完成时触发。一个页面只会调用一次,代表页面已经准备妥当,可以和视图层进行交互注意: 对界面内容进行设置的 API 如wx.setNavigationBaritle,请在 onReady 之后进行。

4.WXS脚本

1.什么是WXS?

WXS(WeiXin Script)是小程序独有的一套脚本语言,结合 WXML,可以构建出页面的结构

2.wxs的应用场景

wxml 中无法调用在页面的 js 中定义的函数,但是wxml 中可以调用 wxs 中定义的函数。因此,小程序中wxs 的典型应用场景就是“过滤器"

3.wxs和js的关系

虽然wxs 的语法类似于JavaScript,但是 wxs 和JavaScript 是完全不同的两种语言:

  1. wxs 有自己的数据类型

    • number 数值类型、string 字符串类型、boolean 布尔类型、object 对象类型

    • function 函数类型、array 数组类型、date 日期类型、regexp 正则

  2. wxs 不支持类似于 ES6 及以上的语法形式

    • 不支持:let、const、解构赋值、展开运算符、箭头函数、对象属性简写、etc...

    • 支持:var 定义变量、普通 function 函数等类似于ES5的语法

  3. wxs 遵循 CommonJS 规范

    • module 对象5

    • require()函数

    • module.exports 对象

4.内嵌wxs脚本

wxs代码可以编写在 wxml文件中的<wxs>标签内,就像javascript 代码可以编写在 html文件中的<script>标签内一样。

wxml文件中的每个<wxs></wxs>标签,必须提供 module 属性,用来指定当前 wxs 的模块名称,方便在wxm[中访问模块中的成员:

5.定义外联的wxs脚本

wxs 代码还可以编写在以wxs 为后缀名的文件内,就像javascript 代码可以编写在以js 为后缀名的文件中一样。

可以写在utils文件夹中

示例代码如下:

6.使用外联的wxs脚本

在 wxml中引入外联的 wxs 脚本时,必须为<wxs> 标签添加 module 和 src 属性,其中:

  • module 用来指定模块的名称

  • src 用来指定要引入的脚本的路径,且必须是相对路径

7.WXS的特点
1.与JavaScript 不同

为了降低 wxs (WeiXin Script)的学习成本,wxs 语言在设计时借大量鉴了JavaScript 的语法。但是本质上wxs和JavaScript 是完全不同的两种语言

2.不能作为组件的事件回调

wxs典型的应用场景就是“过滤器经常配合 Mustache 语法进行使用,例如:

但是,在 wxs 中定义的函数不能作为组件的事件回调函数。例如,下面的用法是错误的:

3.隔离性

隔离性指的是wxs的运行环境和其他JavaScript代码是隔离的。体现在如下两方面

  • wxs不能调用js中定义的函数

  • wxs不能调用小程序提供的AP

4.性能好
  • 在ios 设备上,小程序内的 WXS 会比JavaScript 代码快 2~ 20 倍

  • 在 android 设备上,二者的运行效率无差异

五.基础加强

  • 能够知道如何自定义小程序组件

  • 能够知道小程序组件中 behaviors 的作用

  • 能够知道如何安装和配置vant-weapp 组件库

  • 能够知道如何使用Mobx 实现全局数据共享

  • 能够知道如何对小程序的API进行 Promise 化

宿主环境

1.什么是宿主环境

2.小程序宿主环境包含的内容

1.通信模型

小程序中通信模型分为两部分:

1.渲染层和逻辑层之间的通信
2.逻辑层和第三方服务器之间的通信

2.运行机制

1.小程序启动过程:
  1. 把小程序的代码包下载到本地

  2. 解析 app.json 全局配置文件

  3. 执行 app.js 小程序入口文件,调用 App() 创建小程序实例

  4. 渲染小程序首页

  5. 小程序启动完成

2.页面渲染过程
  1. 加载解析页面的json配置文件

  2. 加载页面的.wxml模板和wxss样式

  3. 执行页面的 .js 文件,调用 Page() 创建页面实例

  4. 页面渲染完成

3.组件

小程序中的组件也是由宿主环境提供的,开发者可以基于组件快速搭建出漂亮的页面结构。官方把小程序的组件分为了9 大类,分别是:

1.视图容器

常用的视图容器类组件

1.view
1 描述
  1. 普通视图区域

  2. 类似于HTML中的 div,是一个块级元素

  3. 常用来实现页面的布局效果

2 view组件基本使用

2.scroll-view
1 描述
  1. 可滚动的视图区域

  2. 常用来实现滚动列表效果

2 scroll-view基本使用

3.swiper和swiper-item
1 描述

轮播图容器组件 和轮播图 item 组件

2 swiper 和 swiper-item组件的基本使用

3 swiper组件常用属性
属性类型默认值说明
indicator-dotsbooleanfalse是否显示面板指示点
indicator-colorcolorrgba(0,0,0,.3)指示点颜色
indicator-active-colorcolor#000000当前选中的指示点颜色
autoplayboolranfalse是否自动切换
intervalnumber5000自动切换时间间隔
circularbooleanfalse是否采用衔接滑动
2.基础内容

常用的基础内容组件

1.text
1.描述:
  1. 文本组件

  2. 类似于HTML中的 span 标签,是一个行内元素

2.基本使用--长按选中效果:

加属性 selectable

2. rich-text
1.描述
  1. 富文本组件

  2. 支持把HTML字符串渲染为 WXML结构

2.基本使用

node标签

3.表单组件
4.导航组件
5.媒体组件
6.map地图组件
7.canvas画布组件
8.开放能力
9.无障碍访问
10.其他常用组件
1. button
1.描述
  1. 按钮组件

  2. 功能比 HTML中的 button 按钮丰富

  3. 通过 open-type 属性可以调用微信提供的各种功能(客服、转发、获取用户授权、获取用户信息等

2.基本使用

2. image
1.描述
  1. 图片组件

  2. image组件默认宽度约300px、高度约240px

2.基本使用
3.属性值mode

3.navigator(后面讲)
1.描述
  1. 页面导航组件

  2. 类似干HTML中的a链接

4.API

小程序中的 API 是由宿主环境提供的,通过这些丰富的小程序 AP1,开发者可以方便的调用微信提供的能力例如:获取用户信息、本地存储、支付功能等。

小程序官方把API分为了如下三大类:

1.事件监听API
  1. 特点:以 on 开头,用来监听某些事件的触发

  2. 举例: wx.onWindowResize(function callback) 监听窗口尺寸变化的事件

2.同步API
  1. 特点:以Sync 结尾的API都是同步 API

  2. 特点2: 同步 API 的执行结果,可以通过函数返回值直接获取,如果执行出错会抛出异常

  3. 举例: wx.setStorageSync(key,value')向本地存储中写入内容

3.异步API
  1. 特点: 类似于jQuery 中的 $.ajax(options)函数,需要通过 success、fail、complete 接收调用的结果

  2. 举例: wx.request()发起网络数据请求,通过 sucess 回调函数接收数据

协同工作

1.了解权限管理需求

在中大型的公司里,人员的分工非常仔细:同一个小程序项目,一般会有不同岗位、不同角色的员工同时参与设计与开发。 此时出于管理需要,我们迫切需要对不同岗位、不同角色的员工的权限进行边界的划分,使他们能够高效的进行协同工作。

2.了解项目成员的组织结构

开发者权限(我们)

  1. 开发者权限:可使用小程序开发者工具及对小程序的功能进行代码开发

  2. 体验者权限:可使用体验版小程序

  3. 登录权限:可登录小程序管理后台,无需管理员确认

  4. 开发设置:设置小程序服务器域名、消息推送及扫描普通链接二维码打开小程序

  5. 腾讯云管理:云开发相关设置

添加项目成员和体验成员

3.小程序开发流程

发布

1.软件开发过程中的不同版本

在软件开发过程中,根据时间节点的不同,会产出不同的软件版本,例如:

  1. 开发者编写代码的同时,对项目代码进行自测(开发版本)

  2. 直到程序达到一个稳定可体验的状态时,开发者把体验版本给到产品经理和测试人员进行体验测试

  3. 最后修复完程序的 Bug 后,发布正式版供外部用户使用

2.小程序的版本

3.小程序发布上线的整体步骤

一个小程序的发布上线,一般要经过上传代码 -> 提交审核-> 发布这三个步骤

1.上传代码

  1. 点击开发者工具顶部工具栏中的“上传” 按钮

  2. 填写版本号以及项目备注

2.在后台查看上传之后的版本

登录小程序管理后台 -> 管理 -> 版本管理 -> 开发版本,即可查看刚才提交上传的版本了:

3.提交审核

  • 为什么需要提交审核:为了保证小程序的质量,以及符合相关的规范,小程序的发布是需要经过腾讯官方审核的

  • 提交审核的方式:在开发版本的列表中,点击“提交审核”按钮之后,按照页面提示填写相关的信息,就能把小程序提交到腾讯官方进行审核。

4.发布

审核通过之后,管理员的微信中会收到小程序通过审核的通知,此时在审核版本的列表中,点击“发布”按钮之后,即可把“审核通过”的版本发布为“线上版本”,供所有小程序用户访问和使用

4.基于小程序码进行推广

.5小程序运营数据

  • 在“小程序后台”查看

    1. 登录小程序管理后台

    2. 点击侧边栏的“统计

    3. 点击相应的 tab可以看到相关的数据使用“

  • 小程序数据助手”查看

    1. 打开微信

    2. 搜索“小程序数据助手"

    3. 查看已发布的小程序相关的数据

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值