学习目标

  • 能够知道如何创建小程序项目
  • 能够清楚小程序项目的基本组成结构
  • 能够知道小程序页面由几个部分组成
  • 能够知道小程序中常见的组件如何使用
  • 能够知道小程序如何进行开发和发布

小程序简介

一、小程序与普通网页开发的区别

①运行环境不同

网页运行在浏览器环境中

小程序运行在微信环境中

②API 不同

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

例如:地理定位、扫码、支付

③开发模式不同

网页开发模式:浏览器 + 代码编辑器

小程序有自己的一套标准开发模式:

  • 申请小程序开发账号
  • 安装小程序开发者工具
  • 创建和配置小程序项目

注册小程序开发账号 & 安装开发者工具

创建第一个小程序

  1. 点击 “加号” 按钮

  2. 填写项目信息

    • 新建项目
    • 填写目录、AppID
    • 不使用云服务 语言:Javascript
    • 点击新建
  3. 项目创建完成

  4. 在模拟器上查看项目效果

    • 编译
  5. 在真机上预览效果

    • 预览
    • 使用手机扫码
  6. 主页面的5个组成部分

    1. 菜单栏
    2. 工具栏
    3. 模拟器
    4. 代码编辑区
    5. 调试区

认识小程序的基本结构

小程序的项目结构

一、了解项目的基本组成结构

①pags 用来存放所有小程序的页面

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

③app.js 小程序项目的入口文件

④app.json 小程序项目的全局配置文件

⑤app.wxss 小程序项目的全局样式文件

⑥project.config.json 项目的配置文件

⑦sitemap.json 用来配置小程序及其页面是否允许被微信索引

二、小程序页面组成部分

小程序官方建议把所有小程序的页面,都存在pages目录中,以单独的文件夹存在

每个页面有由 4 个基本文件组成,它们分别为:

① .js文件(页面的脚本文件,存放页面的数据、事件处理函数等)

② .json文件(当前页面的配置文件,配置窗口的外观、表现等)

③ .wxml文件(页面模板结构文件)

④ .wxss文件(当前页面的样式表文件)

小程序的代码构成
JSON文件
  1. JSON 配置文件的作用

    JSON 是一种数据格式,在实际开发中,JSON总是以配置文件的形式出现。小程序项目中也不例外:通过不同的 .json文件,可以对小程序项目进行不同级别的配置。

    小程序项目中有4种json配置文件,分别是

    ①项目根目录的app.json配置文件

    ②项目根目录的project.config.json配置文件

    ③项目根目录的sitemap.json配置文件

    每个页面文件夹中的.json配置文件

  2. app.json文件

    app.json是当前小程序的全局配置,包括了小程序的所有页面路径、窗口外观、界面表现、底部tab等。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    {
    "pages": [
    "pages/index/index",
    "pages/logs/logs"
    ],
    "window": {
    "navigationBarTextStyle": "#fff",
    "navigationBarTitleText": "WeChat",
    "navigationBarBackgroundColor": "black"
    },
    "style": "v2",
    "sitemapLocation": "sitemap.json"
    }

    简单了解4个配置项的作用

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

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

    ③ style:全局定义小程序组件所使用的样式

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

  3. project.config.json文件

    project.config.json是项目配置文件,用来记录我们对小程序开发工具所做的个性化配置,例如:

    • setting 中保存了编译相关的配置
    • projectname 中保存的是项目名称
    • appid 中保存的是小程序的账号ID
  4. sitemap.json文件

    微信现已开放小程序内搜索,效果类似于PC网页的SEO。sitemap.json文件用来配置小程序是否允许微信索引

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

    注意:sitemap的索引提示是默认开启的,如需要关闭sitemap的索引提示,可在小程序项目配置文件
    project.config.jsonsetting 中配置字段checkSiteMapfalse

  5. 页面的.json配置文件

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

  6. 新建小程序页面

    只需要在app.json -> pages 中新增页面的存放路径即可自动生成新的页面

  7. 修改项目首页

    只需要调整app.json -> pages 数组中页面路径的前后顺序即可

WXML模板
  1. 什么是WXML

    WXML是小程序框架设计的一套标签语言,用来构建小程序页面的结构,类似于网页开发的HTML

  2. WXML和HTML的区别

    ①标签名称不同

    • HTML(div,span,img,a)
    • WXML(view,text,image,navigator)

    ②属性点不同

    • <a href="#">超链接</a>
      
      1
      2
      3

      - ~~~wxml
      <navigator url="/pages/home/home"></navigator>

    ③提供了类似于Vue中的模板语法

    • 数据绑定
    • 列表渲染
    • 条件渲染
  3. 什么是WXSS

    WXSS是一套样式语言,用于描述WXML的组件样式,类似于网页开发中的CSS

  4. WXSS和CSS的区别

    ①新增了rpx尺寸单位

    • CSS中需要手动进行像素单位换算,例如rem
    • WXSS在底层支持新的尺寸单位rpx,在不同大小的屏幕上小程序会自动进行换算

    ②提供了全局和局部样式

    • 项目根目录中的app.wxss会作用于所有小程序页面
    • 局部页面的.wxss样式仅对当前页面生效

    ③WXSS仅支持部分CSS选择器

    • .calss和#id
    • element
    • 并集选择器、后代选择器
    • ::after 和 ::before 等伪类选择器
JS逻辑交互
  1. 小程序中的..js文件

    一个项目仅仅提供界面展示是不够的,在小程序中,我们通过.js文件来处理用户的操作。例如:响应用户的
    点击、获取用户的位置等等。

    小程序中的JS文件分为三大类,分别是:

    ① app.js

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

    ②页面的.js文件

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

    ③普通的.js文件

    • 普通的功能模块文件,用来封装公共的函数或属性供页面使用
小程序的宿主环境

小程序只能在微信里运行,例如

Windows的软件只能在Windows下运行

Mac的软件只能在Mac下运行

小程序的组件

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

①视图容器
②基础内容
③表单组件
④导航组件
⑤媒体组件
⑥map 地图组件
⑦canvas 画布组件
⑧开放能力
⑨无障碍访问

常用的视图组件
view的基本使用
  • 普通的视图区域
  • 类似于HTML中的div,是一个块级元素
  • 常用来实现页面的布局效果

实现flex横向布局效果

list.wxml

1
2
3
4
5
<view class="test">
<view>A</view>
<view>B</view>
<view>C</view>
</view>

list.wxss

1
2
3
4
5
6
7
8
.test viwx {
width:100px;
height:100px
}
.test {
display: flex;
justify-content: space-around;
}
scroll-view的基本使用
  • 滚动列表

scroll-y 竖向滑动

scroll-x 横向滑动

swiper和swiper-item的基本使用
  • 轮播图容器和轮播item组件

在swiper标签里添加属性即可

swiper-item是轮播里的内容(可以添加图片或者文字)

*轮播图默认高度为150px

swiper常用属性

属性 类型 默认值 说明
indicator-dots Boolean false 是否显示面板指点
indicator-color color rgba(0,0,0,.3) 指示点颜色
indicator-active-color color #000000 当前选中的指示点颜色
autoplay Boolean false 是否自动切换
interval number 5000 自动切换时间间隔
circular Boolean false 是否采用衔接滑动
text组件的基本使用
  • 文本组件
  • 类似于HTML中的span标签,是一个行内元素

selectable属性,实现长按选中文本内容的效果

rich-text的基本使用
  • 富文本组件
  • 支持把HTML字符串渲染为WXML结构

通过rich-text组件的nodes属性节点,把HTML字符串渲染为对应的UI结构,例如:

1
<rich-text nodes="<h1 style='color:red;'>标题<h1>"></rich-text>
button的基本使用
  • 按钮组件
  • 功能比HTML中的button按钮丰富
  • 通过open-type属性可以调用微信提供的各种功能(客服、转发、获取用户授权、获取用户信息等)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<view> ~通过 type指定按钮类型~ </view>

<button>默认按钮</button>
<button type="primary">主色调按钮</button>
<button type="warn">警告按钮</button>

<view>~~~size="mini"小尺寸按钮~~~</view>

<button size="mini">默认按钮</button>
<button type="primary"size="mini">主色调按钮</button>
<button type="warn" size="mini">警告按钮</button>

<view>~~~plain 镂空按钮~~~</view>
<button size="mini"plain>默认按钮</button>
<button type="primary" size="mini"plain>主色调按钮</button>
<button type="warn" size="mini"plain>警告按钮</button>
image的基本使用
  • 图片组件
  • image组件默认宽度约300px、高度约240px

image 组件的 mode属性用来指定图片的裁剪和缩放模式,常用的mode属性值如下:

mode值 说明
scaleToFill (默认值)缩放模式,不保持纵横比缩放图片,使图片的宽高完全拉伸至填满image 元素
aspectFit 缩放模式,保持纵横比缩放图片,使图片的长边能完全显示出来。也就是说,可以完整地将图片显示出来。
aspectFill 缩放模式,保持纵横比缩放图片,只保证图片的短边能完全显示出来。也就是说,图片通常只在水平或垂直方
aspectFill
向是完整的,另一个方向将会发生截取。
widthFix 缩放模式,宽度不变,高度自动变化,保持原图宽高比不变
heightFix 缩放模式,高度不变,宽度自动变化,保持原图宽高比不变
  • 页面导航组件
  • 类似于HTML中的a标签

数据绑定

  1. 数据绑定的基本原则

    ①在data中定义数据

    ②在WXML中使用数据

  2. 在data中定义页面的数据

    在页面对应的.js文件中,把数据定义到data对象中即可

    1
    2
    3
    4
    5
    6
    7
    8
    Page({
    data: {
    // 字符串类型的数据
    info: 'init data',
    // 数组类型的数据
    msgList: [{msg: 'hello'}, {msg: 'world'}]
    }
    })
  3. Mustache语法的格式

    把data中的数据绑定到页面中渲染,使用Mustache语法(双大括号)将变量包起来

    1
    <view>{{变量}}</view>
  4. Mustache语法的应用场景

    • 绑定内容
      页面数据如下:

      1
      2
      3
      4
      5
      Page({
      data: {
      info: 'init data'
      }
      })

      页面结构如下:

      1
      <view>{{ info }}</view>
  • 绑定属性
    页面数据如下:
    1
    2
    3
    4
    5
    Page({
    data: {
    imgSrc: 'init data'
    }
    })
       页面结构如下:
       
    1
    <image src="{{imgSrc}}"></image>
    • 运算(三元运算、算术运算等)

      • 三元运算

        页面数据如下:

        1
        2
        3
        4
        5
        Page({
        data: {
        randomNum: Math.random() * 10 //生成 10 以内的随机数
        }
        })

        页面的结构如下:

        1
        <view>{{ randomNumber >= 5 ? '随机数大于或者等于5' : '随机数小于5' }}</view>
      • 算数运算

        页面数据如下:

        1
        2
        3
        4
        5
        Page({
        data: {
        randomNum: Math.random().toFixed(2) //生成一个带两位小数的随机数,例如:0.34
        }
        })

        页面的结构如下:

        1
        <view>生成100以内的随机数:{{randomNuum * 100}}</view>

事件绑定

  1. 什么是事件

    事件是渲染层到逻辑层的通讯方式。通过事件可以将用户在渲染层产生的行为,反馈到逻辑层进行业务处理。

    ①描述交互事件 ②用户交互触发事件 ③逻辑层收到回调

    渲染层Webview → 客户端Native→逻辑层JsCore

  2. 小程序中常用的事件

    类型 绑定方式 事件描述
    tap bindtap或bind:tap 手指触摸后马上离开,类似于HTML中的click事件
    input bindinpu或bind:input 文本框的输入事件
    change bindchange或bind:change 状态改变时触发
  3. 事件对象的属性列表

    当事件回调触发的时候,会收到一个事件对象event,它的详细属性如下表所示:

    属性 类型 说明
    type String 事件类型
    timeStamp Integer 页面打开到触发所经过的毫秒数
    target Object 触发事件的组件的一些属性值集合
    currentTarget Object 当前组件的一些属性值集合
    detail Object 额外的信息
    touches Array 触摸事件,当前停留在屏幕中的触摸点信息的数组
    changedTouches Array 触摸事件,当前变化的触摸点信息的数组
  4. target和currentTarget的区别

    target触发该事件的源头组件,而currentTarget则是当前事件所绑定的组件

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

    • e.target 指向的是触发事件的源头组件,因此,e.target是内部按钮组件
    • e.currentTarget 指向的是当前正在触发事件的那个组件,因此,e.currentTarget是当前的view组件
  5. bindtap的语法格式

    在小程序中,不存在HTML中的onclick鼠标点击事件,而是通过tap事件来响应用户的触发行为。

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

    1
    <button type="primary" bindtap="btnTapHandler">按钮</button>

    ②在页面的.js文件中定义对应的事件处理函数,事件参数通过形参event(一般简写成e)来接收

    1
    2
    3
    4
    5
    Page ({
    btnTapHandler(e) { // 按钮的 tap 事件处理函数
    console.log(e) // 事件参数对象 e
    }
    })
  6. 在事件处理函数中为data中的数据赋值

    通过调用**this.setData(dataObject)**方法,可以给页面data中的数据重新赋值,示例如下:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    // 页面的.js 文件
    Page ({
    data: {
    count: 0
    },
    // 修改 count 的值
    changeCount() {
    this.setData({
    count: this.data.count + 1
    })
    }
    })
  7. 事件传参

    小程序中的事件传参比较特殊,不能绑定事件的同时为事件处理函数传递参数。例如,下面的代码不能正常工作:

    1
    <button type="primary" bindtap="btnHandler(123)">按钮</button>

    因为小程序会把bindtap的属性值,统一当作事件名称来处理

    正确的传参方式如下:

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

    1
    <button bindtap="btnHandler" data-info="{{123}}">按钮</button>

    最终:

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

    获取参数的值:

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

    1
    2
    3
    4
    5
    6
    btHandler(event) {
    // dataset 是一个对象,包含了所有通过 data-* 传递过来的参数项
    console.log(event.target.dataset)
    // 通过 dataset 可以访问到具体参数的值
    console.log(e.target.dataset.info)
    }
  8. bindinput 的语法格式

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

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

    1
    <input bindinput="inputHandler"><input>

    ② 在页面的 .js 文件中定义事件处理函数:

    1
    2
    3
    4
    inputHandler(e){
    //e.detail.value 是变化过后,文本框最新的值
    console.log(e.detail.value)
    }
  9. 实现文本框和data之间的数据同步

    实现步骤:

    ①定义数据

    1
    2
    3
    4
    5
    Page({
    data: {
    msg: '你好'
    }
    })

    ②渲染结构

    1
    <input value="{{msg}}" bindinput="iptHandler"></input>

    ③美化样式

    1
    2
    3
    4
    5
    6
    input {
    border: 1px solid #eee;
    padding: 5px;
    margin: 5px
    border-radius: 3px
    }

    ④绑定input事件处理函数

    1
    2
    3
    4
    5
    6
    7
    // 文本框内容改变的事件
    iptHandler(e) {
    this.setData ({
    // 通过 e.detail.value
    msg: e.detail.value
    })
    }

条件渲染

  1. wx:if

    在小程序中,使用 wx:if=”“ 来判断是否需要渲染该代码块

    1
    <view wx:if="{{condition}}"> True </view>

    也可以用 wx:elif 和 wx:else 来添加 else 判断:

    1
    2
    3
    <view wx:if="{{type === 1}}"> 男 </view>
    <view wx:elif="{{type === 2}}"> 女 </view>
    <view wx:else> 保密 </view>
  2. 结合block使用wx:if

    如果要一次性控制多个组件的展示与隐藏,可以使用一个block标签将多个组件包裹起来,并再block标签上使用wx:if控制属性,示例如下:

    1
    2
    3
    4
    <block wx:if="{{true}}">
    <view> view1 <view>
    <view> view2 <view>
    </block>

    注意:block并不是一个组件,它只是一个包裹性质的容器,不会在页面做任何渲染

  3. hidden

    在小程序中,直接使用 hidden=”“ 也能控制元素的显示与隐藏:

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

    ① 运行方式不同

    • wx:if 以动态创建和移除元素的方式,控制元素的展示与隐藏
    • hidden 以切换样式的方式(display: none/block;),控制元素的显示与隐藏

    ② 使用建议

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

列表渲染

  1. wx:for

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

    1
    2
    3
    <view wx:for="{{array}}">
    索引是:{{index}} 当前是:{{item}}
    </view>

    默认情况下,当前循环项的索引index表示;当前循环项用item表示。

  2. 手动指定索引和当前项的变量名*

    • 使用 wx:for-index 可以指定当前循环项的索引的变量名

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

      示例代码如下

      1
      2
      3
      <view wx:for="{{array}}"  wx:for-index="idx" wx:for-item="it">
      索引是:{{idx}} 当前是:{{it}}
      </view>
  3. wx:key 的使用

    类似于Vue列表渲染中的 :key ,小程序在实现列表渲染时,也建议为渲染出来的列表指定唯一的key值,从而提高渲染的效率,示例代码如下:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    // data 数据
    data: {
    userList: [
    { id: 1, name: '小红' },
    { id: 2, name: '小黄' },
    { id: 3, name: '小白' }
    ]
    }
    // wxml 结构
    <view wx:for="{{userList}}" wx.key="id">{{item.name}}</item>

wx:for 加 wx:key 才不会报警告⚠

WXSS - WXSS和CSS的关系

  1. 什么是WXSS

    WXSS是一套样式语言,用于美化WXML的组件样式,类似于HTML中的CSS

  2. WXSS和CSS的关系

    WXSS具有CSS大部分的特性,同时,WXSS还对CSS进行了扩充以及修改,以适应小程序的开发

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

    • rpx 尺寸单位

      1. 什么是rpx尺寸单位

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

      2. rpx的实现原理

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

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

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

        小程序在不同的设备上运行,会自动换算对应的像素单位,从而实现屏幕适配

      3. rpx与px之间的换算

        在iPhone6上,屏幕宽度为375px,共有750个物理像素,等分为750rpx

        750rpx = 375px =750 物理像素

        1rpx = 0.5px = 1像素

        官方建议:开发小程序时,设计师可以用iPhone6作为视觉稿的标准(因为iPhone6是0.5px)

    • @import 样式导入

      1. 什么是样式导入

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

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

        1
        2
        3
        4
        /** com.wxss **/
        .small-p {
        padding:5px
        }
        1
        2
        3
        4
        5
        /** app.wxss **/
        @import "com.wxss";
        .middle-p {
        padding:15px;
        }

WXSS - 全局样式与局部样式

  1. 全局样式

    定义在 app.wxss 中的样式为 全局样式,作用于每一个页面。

  2. 局部样式

    在页面的 .wxss 文件的样式为局部样式,只作用于当前页面。

注意:

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

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

  • 全局配置

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

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

      ① pages:记录当前小程序所有页面的存放路径

      ② window:全局设置小程序窗口的外观

      ③ tabBar:设置小程序底部的tabBar效果

      ④style:是否启用新版组件样式

  • window

    1. 小程序窗口的组成部分

      • navigationBar 导航栏区域
      • background 背景区域(默认不可见,下拉才显示)
      • 页面的主体区域(用来显示wxml中的布局)
    2. 了解window节点常用的配置项

      属性名 类型 默认值 说明
      navigationBarTitleText String 字符串 导航栏标题文字内容
      navigationBarBackgroundColor HexColor #000000 导航栏背景颜色,如 #000000
      navigationBarTextStyle String white 导航栏标题颜色,仅支持black / white
      backgroundColor HexColor #ffffff 窗口的背景色
      backgroundTextStyle String dark 下拉loading的样式,仅支持 dark / light
      enablePullDownRefresh Boolean false 是否全局开启下拉刷新
      onReachBottomDistance Number 50 页面上拉触底事件触发时距页面底部距离,单位为px
      • 设置下拉窗口的背景颜色

        当全局开启下拉刷新功能后,默认窗口背景为白色。如果要自定义颜色,设置步骤如下:

        app.json -> window -> backgroundColor 指定16进制的颜色 如 #fff000

      • 设置下拉刷新的样式

        当全局开启下拉刷新功能后,默认窗口的loading样式为白色,如果要修改样式效果,设置如下:

        app.json -> window -> backgroundTextStyle 指定dark值,可选值只能是lightdark

      • 设置上拉触底的距离

        概念:上拉触底是移动端的专有名词,通过手指上拉的操作,从而加载更多数据的行为,设置如下:

        app.json -> window -> onReachBottomDistance 设置新的数值,默认距离为50px,如果没有特殊需求,建议使用默认即可

  • tabBar

    1. 什么是tabBar

      tabBar 是移动端的页面效果,用于多界面的切换。小程序通常分为:

      • 底部tabBar
      • 顶部tabBar
      • 注意:
        • tarBar最少2个,最多5个
        • 当渲染顶部tabBar时,不显示icon,只显示文本
    2. tabBar 的6个组成部分

      ① backgroundColor:tabBar的背景色

      ② selectedIconPath:选中时的图片路径

      ③ borderStyle:tabBar框的颜色

      ④ iconPath:未选中的图片路径

      ⑤ selectedColor:tabBar选中文字时的颜色

      ⑥ color:tabBar上的默认(未选中)文字时的颜色

    3. tabBar节点的配置项

      属性 类型 必填 默认值 描述
      position String bottom tabBar的位置,仅支持bottom/top
      borderStyle Sring black tabBar上边框的颜色,仅支持black/white
      color HexColor tabBar上的默认(未选中)文字时的颜色
      selectedColor HexColor tabBar选中文字时的颜色
      backgroundColor HexColor tabBar的背景色
      list Array tab页签的列表,最少2个,最多5个tab
    4. 每个tab项的配置选项

      属性 类型 必填 描述
      pagePath String 页面的路径,页面必须再pages中定义
      text String tab上显示的文字
      iconPath String 未选中时图片的路径,当position为top时,不显示icon
      selectedIconPath String 选中时的图片路径,当position为top时,不显示icon
    5. tabBar怎么写,在app.json

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      "tabBar": {
      "list": [
      {
      "pagePath": "pages/index/index",
      "text": "主页"
      },
      {
      "pagePath": "pages/test/test",
      "text": "test"
      },
      ]
      }
    6. 建议图标名称 - 包含active的是选中的图标 - 不包含active的是默认图标

页面配置

  1. 页面配置文件的作用

    小程序中,每个页面都有自己的 .json 配置文件,用来对当前页面窗口的外观、页面效果等进行配置

  2. 页面配置和全局配置的关系

    小程序中,app.json 中的window节点,可以全局配置小程序中的每个页面的窗口表现。

    如果某些小程序页面想要拥有特殊的窗口表现,此时,“页面级别的 .json 配置文件” 就可以实现这种需求。

    注意:就近原则

  3. 页面配置中常用的配置项

    属性 类型 默认值 描述
    navigationBarBackgroundColor HexColor #000000 当前页面导航栏颜色
    navigationBarTextStyle String white 当前页面导航栏标题颜色,仅支持black/white
    navigationBarTitleText String 当前页面导航栏标题文字内容
    backgroundColor HexColor #ffffff 当前页面窗口的背景色
    backgroundTextStyle String dark 当前页面下拉loading样式,仅支持dark和light
    enablePullDownRefresh Boolean false 是否为当前页面开启下拉刷新的效果
    onReachBottomDistance Number 50 页面上拉触底事件触发时的页面距离,单位为px

网络数据请求

  1. 小程序中的网络数据请求限制

    出于安全性的方面考虑,小程序官方对数据接口的请求做出了两个限制:

    • 只能请求 HTTPS 类型的接口

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

      信任列表:详情-项目配置-request 合法域名

  2. 配置request合法域名

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

    注意事项:

    • 域名只支持https协议
    • 域名不能使用IP地址或localhost
    • 域名必须经过ICP备案
    • 服务器域名一个月内最多可申请5次修改
  3. 发起GET请求

    调用wx.request()方法,可以发起GET数据请求,示例代码如下:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    wx.request({
    url: 'https://test.cn/api/get', // 请求的接口地址,必须基于 https 协议
    method: 'GET', // 请求方式
    data: { // 发送到服务器的数据
    name: 'zs',
    age: 22
    },
    success:(res) => { // 请求成功后的回调函数
    console.log(res)
    }
    })
  4. 发起POST请求

调用wx.request()方法,可以发起POST数据请求,示例代码如下:

1
2
3
4
5
6
7
8
9
10
11
wx.request({
url: 'https://test.cn/api/get', // 请求的接口地址,必须基于 https 协议
method: 'POST', // 请求方式
data: { // 发送到服务器的数据
name: 'ls',
age: 22
},
success:(res) => { // 请求成功后的回调函数
console.log(res)
}
})
  1. 在页面刚加载时请求数据

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

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    /**
    * 生命周期函数--监听页面加载
    */
    onLoad: function (options) {
    this.getSwiperList()
    this.getGridList()
    },
    // 获取轮播图的数据
    getSwiperList(){...
    },
    // 获取九宫格的数据
    getGridList(){...
    },
  2. 跳过request合法域名校验

    如果后端程序员仅仅提供了http的协议接口、暂时没有提供https协议的接口

    此时为了不耽误开发的进度,我们可以在微信开发者工具中,临时开启【开发环境不校验请求域名、TLS版本及HTTPS证书】选项,跳过request合法域名的校验。

    详情-本地设置-开发环境不校验请求域名、TLS版本及HTTPS证书

    注意:跳过request合法域名校验的选项,仅限在开发和调试阶段使用!

  3. 关于跨域和Ajax的说明

    跨域只存在Web开发中,小程序不存在。

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

总结

  • 能够使用WXML模板语法渲染页面结构

    wx:if、wx:elif、wx:else、hidden、wx:for、wx:key

  • 能够使用WXSS样式美化页面结构

    rpx尺寸单位、@import样式导入、全局样式和局部样式

  • 能够使用app.json对小程序进行全局性配置

    pages、window、tabBar、style

  • 能够使用page.json对小程序页面进行个性化配置

    对单个页面进行个性化配置、就近原则

  • 能够知道如何发起网络数据请求

    wx.request() 方法、onLoad() 事件

该文章Mec所著,如有错误请联系作者邮箱更改