微信小程序宿主环境

163 阅读4分钟

概念

宿主环境(host environment)指的是程序运行所必须的依赖环境。例如: Android系统和iOS系统是两个不同的宿主环境。安卓版的微信App是不能在iOS环境下运行的,所以,Android是安卓软件的宿主环境,脱离了宿主环境的软件是没有任何意义的!

小程序的宿主环境

手机微信是小程序的宿主环境

小程序借助宿主环境提供的能力,可以完成许多普通网页无法完成的功能,例如: 微信扫码、微信支付、微信登录、地理定位、etc...

宿主环境包含的内容

通信模型

  • 通信主体

    • 小程序中通信的主体是渲染层和逻辑层,其中:

      • WXML模板和WXSS样式工作在渲染层
      • JS 脚本工作在逻辑层
  • 通信模式

    • 渲染层和逻辑层之间的通信

      • 由微信客户端进行转发
    • 逻辑层和第三方服务器之间的通信

      • 由微信客户端进行转发

运行机制

  • 启动过程

    • 把小程序的代码包下载到本地
    • 解析app.json全局配置文件
    • 执行app.js小程序入口文件,调用App()创建小程序实例
    • 渲染小程序首页
    • 小程序启动完成
  • 页面渲染过程

    • 加载解析页面的.json配置文件
    • 加载页面的.wxml模板和.wxss样式
    • 执行页面的.js文件,调用Page()创建页面实例
    • 页面渲染完成

组件

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

  • 视图容器

    • view

      • 特点

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

        <view>
            <view> A <view>
            <view> A <view>
        </view>
        
    • scroll-view

      • 特点

        • 可滚动的视图区域
        • 常用来实现滚动列表效果
      • 使用

        // scroll-y 允许纵向滚动
        // scroll-x 允许横向滚动
        // scrpll-view 需要固定高度 
        <scroll-view scroll-y>
            <view> A <view>
            <view> A <view>
        </scroll-view>
        
    • swiper 和 swiper-item

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

      • 使用

        <swiper indicator-dots>
            <swiper-item>
                <view>aaa</view>
            </swiper-item>
        </swiper>
        
      • 常用属性

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

    • text

      • 特点

        • 文本组件
        • 类似于HTML中的span标签,是一个行内元素
      • 使用

        通过text组件的selectable属性,实现长按选中文本内容的效果
        <text selecttable>ssss</text>
        
    • rich-text

      • 特点

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

        通过rich-text组件的nodes属性节点,把HTML字符串渲染为对应的Ul结构
        <rich-text nodes="<h1>aaaa</h1>"></rich-text>
        
  • 表单组件

    • button

      • 说明

        • 按钮组件
        • 功能比HTML中的button按钮丰富
        • 通过open-type 属性可以调用微信提供的各种功能(客服、转发、获取用户授权、获取用户信息等)
      • 使用

        <button type='warn'>按钮</button>
        
    • image

      • 说明

        • 图片组件
        • image组件默认宽度约300px、高度约240px
      • 使用

        <image src='sss' mode='scaleToFill'><image>
        
      • image 组件的mode 属性用来指定图片的裁剪和缩放模式,常用的mode属性值如下

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

    • navigator

      • 说明

        • 页面导航组件
        • 类似于HTML中的a链接
    • 媒体组件

    • map地图组件

    • canvas 画布组件

    • 开放能力

    • 无障碍访问

API

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

  • 分类

    • 事件监听 API

      • 特点:以on开头,用来监听某些事件的触发
      • 举例:wx.onWindowResize(function callback)监听窗口尺寸变化的事件
    • 同步 API

      • 特点1:以Sync结尾的API都是同步API
      • 特点2:同步API的执行结果,可以通过函数返回值直接获取,如果执行出错会抛出异常
      • 举例:wx.setstorageSync(key','value')向本地存储中写入内容
    • 异步 API

      • 特点:类似于jQuery中的$.ajax(options)函数,需要通过success、、fail、complete接收调用的结果
      • 举例:wx.request()发起网络数据请求,通过success 回调函数接收数据