概念
宿主环境(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-dots boolean false 是否显示面板指示点 indicator-color color rgba(0,0,0.3) 指示点颜色 indicator-active-color color #00000 当前选中的指示点颜色 autoplay boolean false 是否自动切换 interval number 5000 自动切换时间间隔 circular boolean false 是否采用衔接滑动
-
-
-
基础内容
-
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 回调函数接收数据
-