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

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

在小程序的通信模型中,通信的主体主要是指两个层面:渲染层和逻辑层。

小程序的通信主体主要包括两个层面:渲染层和逻辑层。
小程序的通信模型主要分为两部分:

小程序中的组件是由宿主环境提供的,这些组件为开发者提供了快速搭建美观页面结构的工具。官方将小程序的组件分为了九大类,每一类都有其特定的功能和用途。
组件分类 | 组件描述 | 示例组件 |
|---|---|---|
视图容器 | 用于布局和创建页面结构的容器组件 | - view:基础容器,类似于HTML的<div> |
- scroll-view:可滚动的视图区域 | ||
- swiper:滑动视图容器,常用于轮播图 | ||
基础内容 | 用于展示页面中的基本文本、图标、进度条等 | - text:显示文本内容 |
- rich-text:富文本,支持HTML字符串渲染 | ||
- icon:显示图标 | ||
- progress:显示进度条 | ||
表单组件 | 用于接收用户输入的数据,包括各种输入框、选择器、开关等 | - button:按钮,用于提交表单或触发事件 |
- checkbox:复选框 | ||
- form:表单容器,用于收集用户输入的数据 | ||
- input:输入框 | ||
- label:标签,与表单组件关联文本 | ||
- picker:选择器,用于选择日期、时间或自定义选项 | ||
- radio:单选框 | ||
- slider:拖动条,用于选择一个范围内的值 | ||
- switch:开关,用于打开或关闭状态 | ||
导航组件 | 用于页面之间的跳转和导航 | - navigator:页面链接,点击后跳转到指定页面 |
媒体组件 | 用于展示图片、音频、视频等多媒体内容 | - image:显示图片 |
- audio:音频播放器 | ||
- video:视频播放器 | ||
map地图组件 | 用于显示地图和进行地图相关的操作 | - map:地图显示和操作 |
canvas画布组件 | 用于在页面中绘制图形、图像或文字等 | - canvas:画布,支持绘图API |
开放能力组件 | 提供与微信或其他服务交互的功能,如获取用户信息、支付等 | - 各类与微信开放接口相关的组件(具体根据接口而定) |
无障碍访问 | 确保小程序对所有用户都友好,包括视力障碍者、听力障碍者等 | - 无障碍访问相关的设置和组件(如屏幕阅读器支持等,具体实现可能因小程序版本和平台而异) |
组件名称 | 组件描述 |
|---|---|
view | 普通视图区域,类似于HTML中的div,是一个块级元素,常用来实现页面的布局效果 |
scroll-view | 可滚动的视图区域,常用来实现滚动列表效果 |
swiper | 轮播图容器组件,用于展示多个视图或页面,并支持左右滑动切换 |
swiper-item | 轮播图的单个组件,通常与swiper组件配合使用,表示轮播图中的每一项 |
简单设置一个页面,设置三个颜色,分别是红色、绿色、黄色
<!--index.wxml-->
<navigation-bar title="Weixin" back="{{false}}" color="black" background="#FFF"></navigation-bar>
<scroll-view class="scrollarea" scroll-y type="list">
<view class="container1">
<view>红色</view>
<view>绿色</view>
<view>黄色</view>
</view>
</scroll-view>/**index.wxss**/
.container1 view{
width: 100px;
height: 100px;
text-align: center;
line-height: 100px;
}
.container1 view:nth-child(1){
background-color: red;
}
.container1 view:nth-child(2){
background-color: green;
}
.container1 view:nth-child(3){
background-color: yellow;
}
.container1{
display: flex;
justify-content: space-around;
}
实现纵向滚动效果
<!--index.wxml-->
<navigation-bar title="Weixin" back="{{false}}" color="black" background="#FFF"></navigation-bar>
<scroll-view class="container1" scroll-y >
<view>红色</view>
<view>绿色</view>
<view>黄色</view>
</scroll-view><navigation-bar> 组件: <scroll-view> 组件: <view> 子组件,每个都包含一些文本(“红色”、“绿色”、“黄色”)。/**index.wxss**/
.container1 view{
width: 100px;
height: 100px;
text-align: center;
line-height: 100px;
}
.container1 view:nth-child(1){
background-color: red;
}
.container1 view:nth-child(2){
background-color: green;
}
.container1 view:nth-child(3){
background-color: yellow;
}
.container1{
border: 1px solid blue;
/* 给scroll-view 固定高度*/
height: 120px;
width: 100px;
}
实现轮播图效果
<!--index.wxml-->
<navigation-bar title="Weixin" back="{{false}}" color="black" background="#FFF"></navigation-bar>
<swiper class="swiper-container" indicator-dots>
<swiper-item>
<view class="item">红色</view>
</swiper-item>
<swiper-item>
<view class="item">绿色</view>
</swiper-item>
<swiper-item>
<view class="item">黄色</view>
</swiper-item>
</swiper><navigation-bar> 组件: <swiper> 组件: <swiper-item> 子组件,每个都包含一个 <view> 元素,分别显示“红色”、“绿色”和“黄色”文本。/**index.wxss**/
.swiper-container{
height: 150px; /*轮播图容器的高度 */
}
.item{
height: 100%;
line-height: 150px;
text-align: center;
}
swiper-item:nth-child(1) .item{
background-color: red;
}
swiper-item:nth-child(2) .item{
background-color: green;
}
swiper-item:nth-child(3) .item{
background-color: yellow;
}<swiper-item> 内部或通过其他方式(如组件的属性)来传递样式信息。然而,由于 <swiper-item> 是微信小程序的标准组件,并且通常不包含子元素的样式定义(它只是一个容器),因此可能需要依赖 .item 类来为每个轮播项设置样式。<swiper-item> 组件没有提供修改内部元素样式的方法,那么可能需要将 .item 的样式规则改为更通用的类名,并在每个 <swiper-item> 内部直接应用该类名。不过,由于你已经使用了 .item 类,并且这个类名在 <swiper-item> 内部是唯一的,因此如果 <swiper-item> 允许其内部内容应用外部样式(这通常是可以的),那么样式应该能够正常工作。
属性 | 类型 | 默认值 | 说明 |
|---|---|---|---|
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 | 是否采用衔接滑动 |
index.wxml文件
<!--index.wxml-->
<navigation-bar title="Weixin" back="{{false}}" color="black" background="#FFF"></navigation-bar>
<view>
<text selectable>150150150150</text>
</view>通过 text 组件的 selectable 属性,实现长按选中文本内容的效果

index.wxml文件
<!--index.wxml-->
<navigation-bar title="Weixin" back="{{false}}" color="black" background="#FFF"></navigation-bar>
<rich-text nodes="<h1 style='color:blue;'>我是蓝色标题1<h1>">
</rich-text>
index.wxml文件
<!--index.wxml-->
<navigation-bar title="Weixin" back="{{false}}" color="black" background="#FFF"></navigation-bar>
<view>-----通过 type 指定按钮类型-----</view>
<button>默认按钮</button>
<button type="primary">主色调按钮</button>
<button type="warn">警告按钮</button>
<view>-----小尺寸按钮-----</view>
<button size="mini">默认按钮</button>
<button type="primary" size="mini">主色调按钮</button>
<button type="warn" size="mini">警告按钮</button>
<view>-----镂空按钮-----</view>
<button size="mini" plain>默认按钮</button>
<button type="primary" size="mini" plain>主色调按钮</button>
<button type="warn" size="mini" plain>警告按钮</button>
index.xml文件
<!--index.wxml-->
<navigation-bar title="Weixin" back="{{false}}" color="black" background="#FFF"></navigation-bar>
<image src="https://img2.baidu.com/it/u=1983234234,4077983892&fm=253&fmt=auto&app=138&f=JPEG?w=600&h=333"></image>
image 组件的 mode 属性用来指定图片的裁剪和缩放模式,以下是常用的mode属性
mode 值 | 说明 |
|---|---|
ScaleToFill | (默认值)缩放模式,不保持纵横比缩放图片,使图片的宽高完全拉伸至填满image元素 |
aspectFit | 缩放模式,保持纵横比缩放图片,使图片的长边能完全显示出来。也就是说,可以完整地将图片显示出来。 |
aspectFill | 缩放模式,保持纵横比缩放图片,只保证图片的短边能完全显示出来。也就是说,图片通常只在水平或垂直方向是完整的,另一个方向将会发生截取。 |
widthFix | 缩放模式,宽度不变,高度自动变化,保持原图宽高比不变 |
heightFix | 缩放模式,高度不变,宽度自动变化,保持原图宽高比不变 |
小程序中的API(Application Programming Interface,应用程序编程接口)是由其宿主环境提供的。在小程序的场景下,宿主环境通常指的是微信这样的平台。这些API为开发者提供了与微信平台进行交互的能力,使得开发者能够轻松地实现各种功能,而无需从头开始构建这些功能。
在微信小程序开发中,API(应用程序编程接口)扮演着至关重要的角色,它们为开发者提供了与小程序宿主环境进行交互的能力。根据小程序官方的分类,我们可以将小程序API分为以下三大类: